数据来源
手工盲注的过程,就像你与一个机器人聊天,这个机器人知道的很多,但只会回答“是”或者“不是”,因此你需要询问它这样的问题,例如“数据库名字的第一个字母是不是a啊?”,通过这种机械的询问,最终获得你想要的数据。
盲注分为基于布尔的盲注、基于时间的盲注以及基于报错的盲注,这里由于实验环境的限制,只演示基于布尔的盲注与基于时间的盲注。
1.判断是否存在注入,注入是字符型还是数字型
2.猜解当前数据库名
3.猜解数据库中的表名
4.猜解表中的字段名
5.猜解数据
代码:
0 ) { // Feedback for end user echo 'User ID exists in the database.
'; } else { // User wasn't found, so the page wasn't! header( $_SERVER[ 'SERVER_PROTOCOL' ] . ' 404 Not Found' ); // Feedback for end user echo 'User ID is MISSING from the database.
'; } mysql_close();
} ?>
可以看到,Low级别的代码对参数id没有做任何检查、过滤,存在明显的SQL注入漏洞,同时SQL语句查询返回的结果只有两种,可以自行输入:-1和1进行测试
`User ID is MISSING from the database.`(`数据库中缺少用户ID`)
‘与‘
User ID exists in the database.(数据库中存在用户ID),因此这里是SQL盲注漏洞。
输入:1' and 1=1 #,显示存在:(and 是与的意思)
输入1' and 1=2 #,显示不存在:
结论:存在字符型的盲注。
然后猜解数据库名:输入1" and length(database())=4 #,显示存在:说明长度为4
其他用法可以在靶场自己尝试,可以参考:DVWA之SQL注入(盲注)_dvwa sql盲注_风吹千里的博客-CSDN博客
DVWA-sql注入(盲注) - N0r4h - 博客园