美文网首页
sql注入之盲注

sql注入之盲注

作者: CSeroad | 来源:发表于2018-04-01 13:37 被阅读75次

所谓的盲注即是在sql注入后在前端没有出现报错信息,无法判断是否注入成功。所以需要盲注进行判断

盲注分为基于布尔型的注入,基于时间的注入,基于报错的注入

布尔型的盲注

实验源代码

<?php

header("Content-type:text/html;charset=utf-8");

if(isset($_GET['id']) && !empty($_GET['id'])){

$uid=$_GET['id'];

$con = mysql_connect('localhost', 'root', '');

mysql_select_db('dvwa', $con);

$sql = "select * from users where user_id='".$uid."'";//字符型注入

//$sql = "select * from users where user_id=".$uid;//整数型注入

echo $sql."<hr/>";

$query = mysql_query($sql, $con);

while($num = @mysql_fetch_array($query)){

echo $num['user']."<br/>";

}

}

?>

注:代码是在dvwa的漏洞环境上进行的修改

保存为test1.php   利用wamp进行访问

1=1  返回正常
1=2  返回不正常

1=1 返回正常   1=2返回不正常  证明存在sql注入   但是也没有报错

database

判断当前数据库的长度为4,返回正常

ASCII 值为100

原理如下图,利用substr函数进行截取,一位一位进行ASCII码值的转换比较

ASCII: d--------100 ASCII:  v------118

同样的道理,猜解出ASCII码值依次为d,v,w,a   则数据库名为dvwa

爆出该数据库下所有表

需要注意的是一定要字段保持一致

报错
字段保持一致

分析一下该语句的意思,利用系统自带的数据库进行查询所有的表,条件是在dvwa这个数据库下

group_concat(table_name) 用来分组连接    影响不大

效果一样

可以看到,效果是一样的

再进一步查询

查询列名 看效果

现在有了数据库dvwa   表admin ,接下来查询数值

3列

说明admin表中有三列

username的长度为6

判断第一列username长度为5,第二列username长度为6,第二列username长度为5

利用limit还可以依次判断出password以及id

开始猜解每一个密码

第一位1 第二位2

依次猜解,第一列密码即id=1的密码为123456789

第二列第一位为a

和猜解第一列不同的地方在于使用了ascii码进行判断

ascii码表进行判断

97----------a、100----------d、109----------m 、105-----------i、110------------n

49-------------1、50--------------2、51---------------3、52---------------4、53---------------5、54---------------6

组合之后,第二列password的数据为admin123456

如此递归,查询出所有数据

时间型的注入

实验源代码

<?php

header("Content-type:text/html;charset=utf-8");

if(isset($_GET['id']) && !empty($_GET['id'])){

$uid=$_GET['id'];

$con = mysql_connect('localhost', 'root', '');

mysql_select_db('dvwa', $con);

$sql = "select * from users where user_id='".$uid."'";

echo $sql."";

$query = mysql_query($sql, $con);

while($num = @mysql_fetch_array($query)){

//echo $num['user']."<br/>";

}

echo "sql inject exist";

}

?>

不管输入什么,不报错,一直显示sql inject exist

此时需要使用基于time的注入来判断是否存在注入点

time注入

语句为:if(1=1,sleep(5),1)

1=1是恒成立,所以如果存在注入,语句带入数据库进行执行,则sleep 5秒,如果没有带入数据库执行1秒

基于此,判断是否存在注入

报错注入

实验源代码

<?php

header("Content-type:text/html;charset=utf-8");

if(isset($_GET['id']) && !empty($_GET['id'])){

$uid=$_GET['id'];

$con = mysql_connect('localhost', 'root', '');

mysql_select_db('dvwa', $con);

$sql = "select * from users where user_id='".$uid."'";

echo $sql."<hr/>";

$query = mysql_query($sql, $con);

while($num = @mysql_fetch_array($query)){

echo $num['user']."<br/>";

}

echo mysql_error();

}

?>

输出mysql_error()函数 将mysql错误信息回显出来

报错注入

爆出数据库的用户信息

报错

爆出数据库的版本

报错注入参考链接:

https://www.waitalone.cn/mysql-error-based-injection.html

以上所有源代码:

<?php

header("Content-type:text/html;charset=utf-8");

if(isset($_GET['id']) && !empty($_GET['id'])){

$uid=$_GET['id'];

$con = mysql_connect('localhost', 'root', '');

mysql_select_db('dvwa', $con);

$sql = "select * from users where user_id='".$uid."'";//字符型注入

//$sql = "select * from users where user_id=".$uid;//整数型注入

echo $sql."<hr/>";

$query = mysql_query($sql, $con);

while($num = @mysql_fetch_array($query)){

echo $num['user']."<br/>";

}

//echo "sql inject exist";

echo mysql_error();

//以下代码可省略

/*if($num['user_id'] > 0){

echo "id:".$num['user_id'];

}else{

header($_SERVER['SERVER_PROTOCOL'].'404 Not Found');

echo 'id no exist';

}

*/

}

?>

相关文章

  • SQL注入之布尔盲注

    title: SQL注入之布尔盲注date: 2019-05-25 14:05:48tags:- SQL注入- 布...

  • 一步一步学习 Web 安全 2.4 union 联合查询注入

    对 SQL 注入有一个大致的了解后,我们再来深入学习。 SQL 注入有联合查询注入、报错注入、布尔盲注、时间盲注等...

  • 【SQL注入】如何提高盲注的效率

    0x01 SQL注入之盲注 提到SQL注入,我想懂安全的小伙伴们应该都知道的,那么今天就来聊一聊关于如何提高盲注效...

  • sql注入之盲注

    传送门: sql注入那些事儿——如何优雅地进行SQL注入(1) sql注入那些事儿——如何优雅地进行SQL注入(2...

  • sql注入之盲注

    所谓的盲注即是在sql注入后在前端没有出现报错信息,无法判断是否注入成功。所以需要盲注进行判断 盲注分为基于布尔型...

  • 2019-02-24 sql注入

    sql注入主要分为显注和盲注,显注就是你注入的sql语句可以显示的显示到界面上,告诉你的语句对还是错。盲注就是不会...

  • sql注入-盲注

    注入源代码 1.left()判断数据库版本

  • sqli-lab之第二章--盲注

    第二章 盲注 注意: 本文大部分内容都是参考mysql注入天书 学习篇 何为盲注?盲注就是在 sql 注入过程中,...

  • SQL注入靶场—盲注Rank1-2

    当存在注入点,但服务器没有返回sql执行后的结果回显,就可以使用盲注,盲注分为布尔注入和时间注入。 布尔注入涉及的...

  • sql盲注学习笔记

    sql盲注 在刚接触sql注入的时候还不太清楚sql盲注是什么,很多东西都要自己去体会才能知道到底是什么样子的。 ...

网友评论

      本文标题:sql注入之盲注

      本文链接:https://www.haomeiwen.com/subject/zydncftx.html