数据来源
盲注
什么是盲注:
布尔盲注原理
布尔盲注流程
手工盲注思路(以下的文章参考:DVWA-sql注入(盲注) - N0r4h - 博客园)
手工盲注的过程,就像你与一个机器人聊天,这个机器人知道的很多,但只会回答“是”或者“不是”,因此你需要询问它这样的问题,例如“数据库名字的第一个字母是不是a啊?”,通过这种机械的询问,最终获得你想要的数据。
盲注分为基于布尔的盲注、基于时间的盲注以及基于报错的盲注,这里由于实验环境的限制,只演示基于布尔的盲注与基于时间的盲注。
下面简要介绍手工盲注的步骤):
1.判断是否存在注入,注入是字符型还是数字型
2.猜解当前数据库名
3.猜解数据库中的表名
4.猜解表中的字段名
5.猜解数据
下面用DVWA靶场进行演示
LOW:
代码:
<?php
if( isset( $_GET[ 'Submit' ] ) ) {
// Get input
$id = $_GET[ 'id' ];
// Check database
$getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
$result = mysql_query( $getid ); // Removed 'or die' to suppress mysql errors
// Get results
$num = @mysql_numrows( $result ); // The '@' character suppresses errors
if( $num > 0 ) {
// Feedback for end user
echo '<pre>User ID exists in the database.</pre>';
}
else {
// User wasn't found, so the page wasn't!
header( $_SERVER[ 'SERVER_PROTOCOL' ] . ' 404 Not Found' );
// Feedback for end user
echo '<pre>User ID is MISSING from the database.</pre>';
}
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 - 博客园