题目代码
1 |
|
代码分析
GET
获得$pass
md5($pass,true)
加密后带入数据库查询- 存在数据条目则登录成功,得到flag
函数用法
md5()
函数计算字符串的 MD5 散列。
md5(chars,{false/true})
FALSE - 默认 32 字符十六进制数
TRUE - 原始 16 字符二进制格式
用法示例代码
1 |
|
用法示例结果
string(32) "098f6bcd4621d373cade4e832627b4f6" string(16) "ÄĘB8 ą#‚ ĚPšou„›"
绕过分析
- 由于
md5($pass,true)
加密后返回原始十六位二进制格式 - 而
md5("ffifdyop",true)
加密后的二进制为'or'6<trash>
- SQL语句为
SQL
:SELECT * FROM admin WHERE pass = ''or'6<trash>'
or
绕过查询语句,有效查询,登录成功,返回flag
Payload
index.php?pass=ffifdyop