1. 程式人生 > 實用技巧 >關於如何利用php的原生類進行XSS

關於如何利用php的原生類進行XSS

在CTF中,這一型別的題目一般會在程式碼中給出反序列化點,但是卻找不到pop鏈,類似於[BJDCTF 2nd]xss之光這一題,通過GitHack下載程式碼後,發現如下:

我們可以看到題目程式碼給出了反序列化點,卻沒有給出pop鏈,這個時候就可以考慮到利用php的原生類進行XSS


我們首先需要了解一下PHP序列化及其反序列化的魔術方法

__ toString __:當物件被當作一個字串使用時候呼叫(不僅僅是echo的時候,比如file_exists()判斷也會觸發)

這裡主要講兩個Php的內建類:Error和Exception

Error

適用於php7版本

Error類是php的一個內建類,用於自動自定義一個Error,因為它內建有一個toString的方法,在php7的環境下可能會造成一個xss漏洞。

利用方法:

我們可以看到成功執行了我們構造的惡意程式碼

Exception

適用於php5、7版本

這個類利用的方式和原理和Error 類相同,只是適用範圍更廣

利用方法:

可以看到惡意程式碼同樣被執行了