文章目录
- 前言
- 一、pandas是什么?
- 二、使用步骤
- 1.引入库
- 2.读入数据
- 总结
一.盲注概述
注是一种SQL注入攻击的形式,在这种攻击中,攻击者向目标应用程序发送恶意注入代码,然后通过观察应用程序的响应来推断出数据库中的信息。与常规的SQL注入攻击不同的是,盲注攻击是页面不会将报错信息回显以及没有明显回显位的情况下,页面不直接返回任何有关数据库的具体错误信息,导致攻击者无法直接获得数据库中的数据。
盲注可以分为基于布尔逻辑的盲注和基于时间的盲注两种形式。
-
基于布尔逻辑的盲注:攻击者通过在恶意注入代码中利用布尔逻辑运算符(如AND、OR)来判断条件是否为真,从而推断出数据库中的信息。例如,攻击者可以通过尝试不同的条件来逐位地猜测数据库中的某个字符。
-
基于时间的盲注:攻击者在恶意注入代码中添加延时函数或sleep函数,通过观察应用程序是否延时来判断条件是否为真。例如,攻击者可以通过尝试不同的条件来判断数据库中某个字段的值是否满足条件,并通过延时函数来推断出正确的条件。
布尔盲注:
使用布尔盲注的页面通常只有两种页面效果即正确页面和错误页面。
正确页面:SQL语句能够被执行显示的页面,如下图
http://192.168.100.10/sql/Less-8/index.php?id=1
错误页面: SQL语句不能够被执行显示的页面,如下图
http://192.168.100.10/sql/Less-8/index.php?id=1'
无论正确页面或错误页面都无法直接回显数据,那么在这种情况下如何通过sql注入获取信息?
我们可以利用SQL语句被执行返回正确页面,SQL语句不能被正确执行返回错误页面来帮助我们判断我们输入的SQL语句是否正确,从而判断我们想要的信息是否属于该数据库。
演示案例:
http://192.168.100.10/sql/Less-8/index.php?id=1' and ascii('e')=101--+注:ascii()函数可以将查询的内容转化为ascii码数字,字母e对应的数字是101SQL语句分析:利用页面回显正确和错误的特性,若字母e对应的ascii码=101.则返回正确页面
通过上述案例,可以了解如何利用数据库帮助我们判断查询的信息是否正确,因此可以利用这一漏洞插入SQL语句来查询我们想要的信息
演示案例:
想要知晓当前页面查询的数据库名,可以通过ascii码值倒推出该数据库名,例如:ascii('e')=101 中 页面显示为正确页面则代表数据库名中包含字母e;显而易见,我们同样可以利用该数据库名是否在某一特定的区间内来判断当前页面查询的数据库名。案例如下:若该查询数据的acsii在大于100 小于102.则代表查询出的数据是字母e
http://192.168.100.10/sql/Less-8/index.php?id=1' and ascii(substr((select database()),2,1))=101--+注:ascii()函数默认转译查询到数据的第一个字母且最大显示32位数据substr((sql语句),2,1) 从第二个字符开始显示,每次显示一个字符SQL语句分析:上述页面执行为正确页面说明。查询出的数据库名中的第二个字符是e#查询数据库名中的第一个字母
http://192.168.100.10/sql/Less-8/index.php?id=1' and ascii(substr((select database()),1,1))>101--+注:执行成功代表库名第一个字母ascii码大于101http://192.168.100.10/sql/Less-8/index.php?id=1' and ascii(substr((select database()),1,1))>114--+注:执行成功代表库名第一个字母ascii码大于114http://192.168.100.10/sql/Less-8/index.php?id=1' and ascii(substr((select database()),1,1))>116--+注:执行成功代表库名第一个字母ascii码小于116因此通过不断的迭代缩小ascii码范围可确定库名第一个字母ascii码大于114小于116,最终确定库名首字母ascii码是115 即字母b