后台登录:(MD5绕过)
源码:
image重点代码:
$sql = "SELECT * FROM admin WHERE pass = '".md5($password,true)."'";
在php中.(点)起连接的作用
补充知识点:
sql语言的固定格式:
SELECT + 表字段名(*) + FROM +数据表名+ WHERE + 筛选条件
*:代表所有字段
MD5( )函数:
image分析:
true将16进制的md5转化为字符了,如果某一字符串的md5恰好能够产生如’or’之类的注入语句,就可以进行注入了.难点就在如何寻找这样的字符串
原理:
特殊的字符串使用md5加密后会出现 “
or 'num' '值'
”,这样就构造出了or + 非零数字的SQL语句
,通过SQL特性,该select语句直接搜索所有数据,从而得到结果。脑洞:
发现
URL
里的ffifdyop.php
的ffifdyop
是我们所要的字符串,这个字符串MD5incode后是:276f722736c95d99e921722cf9ed621c
然后以上字符串再decode后是:
'or'6<trash>
加到原来的语句中就是:$password=ffidyop
SELECT * FROM admin WHERE username = 'admin' and password = 'or'6<trash>
成功绕过验证password 。所以提交ffifdyop得到flag。
解析:
存在 or 即代码的两边有一边为真既可以绕过,<trach>其实为垃圾代码没有任何用的。or 后面有6,非零值即为真。既可以成功绕过。
payload: 提交ffifdyop
image
网友评论