实验吧CTF——Web之后台登录WriteUp

查看源码

$password=$_POST['password'];

    $sql = "SELECT * FROM admin WHERE username = 'admin' and password = '".md5($password,true)."'";

    $result=mysqli_query($link,$sql);

        if(mysqli_num_rows($result)>0){

            echo 'flag is :'.$flag;

        }

        else{

            echo '密码错误!';

        }


找到注入点

    ".md5($password,true)."


分析注入点

md5语法

    前者是输入的字符串,后者是格式


实现注入

    将字符串拼接成    SELECT * FROM admin WHERE username = 'admin' and password = ' 'or' '    格式方便使得条件为真,满足判定。

    SELECT * FROM admin WHERE username = 'admin' and password = ''or' 6<trash>'    即可满足条件

    题目提示 ffifdyop ,转换后符合 满足条件的解

    至于为什么是 ffifdyop 这个字符串,这应该是靠平时的积累


如有不当之处,欢迎指正讨论

推荐阅读更多精彩内容