查看源码逻辑(黑白盒结合测试), 它先是判断用户名是否存在, 存在之后再判断密码是否正确:
问了一下朋友, 得知这曾经是一道CTF的题,
分析
既然sql语句只发生在查询用户名处, 所以注入也只能在用户名..., (因为需要通过用户名验证, 再通过密码)
注入单引号:
接着判断注入点
发现无法判断, 因为前端回显的结果只有当密码(第二个if语句)也正确时才会显示。...因此无法使用order by 判断字段数 (判断注入点是为了用order by来得到字段数)
但是可以直接通过联合查询得到字段数:
判断字段的显示顺序
无法判断, 因为前端回显的结果只有当密码(第二个...if语句)也正确时才会显示。...(sqlmap跑也可以)
Medium&High
同样采用了addslashed()和mysqli_real_escape_string()函数,
且mysql编码和os编码一致, 无法用宽字节绕过,