sqli-labs修炼【11-22】

摘要:本篇是关于sqli-labs第11到第20关的闯关记录

Less-11

  • post注入,单引号闭合无过滤,有错误提示

payload

先用order by找出只有两列,再根据union select找出回显点

uname=1&passwd=1' union select database(),group_concat(table_name) from information_schema.tables where table_schema=database()#

uname=1&passwd=1' union select 1,group_concat(column_name) from information_schema.columns where table_name='emails'#

image
image

..etc

Less-12

  • post注入,双引号+括弧闭合无过滤,有错误提示

将单引号替换为双引号+括弧即可,仿照less-12

image

Less-13

  • post盲注,单引号+括弧闭合无过滤,有错误提示

需要使用正确的用户名,例如下面我们使用1是查询不出结果的,因为数据库中并没有1这个用户,而当我们使用admin(数据库中确实有admin这个用户)时,就可以正常地注入下去。这是因为我们的SQL语句是用and连接的,需要两条语句都正确才可以正确查询;而在前面十关的时候,我们带入数据库进行查询的是id,是一个整型数据,并且1是存在于数据库中的;所以说这个1并没有什么特殊,而这里的admin与1的“地位”也是等价的,很容易形成先入为主的观念,一上来就1' and 1=1#

image
image

那么就可以按照盲注的思路走下去了。

Less-14

  • post盲注,双引号闭合无过滤,有错误提示

第13关的复刻版本,闭合方式改为双引号

Less-15

  • post延时注入,单引号闭合,无错误提示

延时类型的注入本来pass的,用bool盲注也可以做,根据像13关

Less-16

  • post延时注入,双引号闭合,无错误提示

同第15关,闭合方式改为双引号闭合

Less-17

关于更新密码的一篇,但在更新密码之前使用了查询,因此可以使用报错注入;xpath报错注入,payload:

extractvalue(1,concat(0x3a,(select @@version),0x3a))#

@@version换成我们的语句就可以了。当然延时注入也是可以的。但是要注意,在这里uname是经过处理的,敏感字符会被转义,而passwd并为作此处理,所以

image

Less-18

http头部,User-Agent报错注入

通过分析源码我们发现这里直接将User-Agent插入数据库中,因此可以抓包修改http头的,构造报错语句


image

payload:

' and extractvalue(1,concat(0x7e,(select @@version),0x7e)) and '1'='1

select @@version改为我们想要的的SQL语句。报错语句还有很多,都可以使用类似的结构;注意闭合引号,并非注释符#,与select不同的是这里注释掉后续内容会引起语法的错误,闭合即可。

Less-19

报错注入,类似18关,注入点在http头的refer。

Less-20

当我们post传入uname和passwd后,查询成功,则将uname存入cookie中,刷新页面时,若存在cookie,则直接将cookie的值带入SQL语句:SELECT * FROM users WHERE username='$cookee' LIMIT 0,1,可以看到这里并没有任何过滤。直接抓包,修改cookie。

image

Less-21

与20关相同,是对cookie的报错注入,不同的是这里需要进行base64编码,且闭合方式为单引号+括弧。

Less-22

与21关相同需要base64编码,闭合方式为双引号。

你可能感兴趣的:(sqli-labs修炼【11-22】)