本文主要是介绍sql注入绕过技巧之打狗棒法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
0x0001
首先针对 preg_replace 很多狗都是通过替换关键词来进行过滤:
preg_replace(‘A’ , ‘B’ , C) :执行一个正则表达式的搜索和替换,这个的意思是搜索C中符合A的部分,然后用B来代替。
1.大小写绕过
有些替换的过程中没有考虑到数据库执行过程大小写转换的问题,只处理了小写或大写的关键字,例如:select和SELECT会被过滤,但seLeCt并不会被防御机制检测到。于是我们可以使用
http://ip/index.php?login_id=-15 uNIoN sELecT 1,2,3,4…
,去执行union查询。
大小写绕过用于只针对小写或大写的关键字匹配技术,正则表达式/express/i 大小写不敏感即无法绕过,这是最简单的绕过技术
2.双写绕过
有些会把关键字替换成空,比如会把“select、and”等关键字替换为空,这时候我们可以这么输入
http://ip/index.php?login_id=-15 UNIunionON SELselectECT 1,2,3,4….
只过滤一次,结果会被替换成:
http://ip/index.php?login_id=-15 UNION SELECT 1,2,3,4….
这样就可以达到绕过防御去执行SQL语句了。并且,有些开发不知道怎么想的,明明可以循环过滤,却只过滤几次,我们可以多构造几个关键字,防止全部替换为空。
3.针对空格的绕过
①.内部注释:
这个方法在于利用SQL语句的注释符来绕过,这种绕过方式只适用于如下防御机制:输入“unionselect”不会被检测到攻击;输入“union select”会被检测到,检测机制会以空格为界定符,把“union”和“select”分开成两个字符串去检测是不是攻击的特征码。我们可以构造如下payload去绕过检测:
http://ip/index.php?login_id=-15/**/un/**/ion/**/sel/**/ect 1,2,3,4…
②两个空格代替一个空格,用T
这篇关于sql注入绕过技巧之打狗棒法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!