亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

淺談php://filter的妙用

2024-05-05 00:07:08
字體:
來源:轉載
供稿:網友

php://filter是PHP中獨有的協議,利用這個協議可以創造很多“妙用”,本文說幾個有意思的點,剩下的大家自己下去體會。本來本文的思路我上半年就準備拿來做XDCTF2016的題目的,沒想到被三個白帽的一題搶先用了,我也就只好提前分享一下。

XXE中的使用

php://filter之前最常出鏡的地方是XXE。由于XXE漏洞的特殊性,我們在讀取HTML、PHP等文件時可能會拋出此類錯誤parser error : StartTag: invalid element name 。其原因是,PHP是基于標簽的腳本語言,<?php ... ?>這個語法也與XML相符合,所以在解析XML的時候會被誤認為是XML,而其中內容(比如特殊字符)又有可能和標準XML沖突,所以導致了出錯。

那么,為了讀取包含有敏感信息的PHP等源文件,我們就要先將“可能引發沖突的PHP代碼”編碼一遍,這里就會用到php://filter。

php://filter是PHP語言中特有的協議流,作用是作為一個“中間流”來處理其他流。比如,我們可以用如下一行代碼將POST內容轉換成base64編碼并輸出:

readfile("php://filter/read=convert.base64-encode/resource=php://input");

如下:

php,filter

所以,在XXE中,我們也可以將PHP等容易引發沖突的文件流用php://filter協議流處理一遍,這樣就能有效規避特殊字符造成混亂。

如下,我們使用的是php://filter/read=convert.base64-encode/resource=./xxe.php

php,filter

巧用編碼與解碼

使用編碼不光可以幫助我們獲取文件,也可以幫我們去除一些“不必要的麻煩”。

記得前段時間三個白帽有個比賽,其中有一部分代碼大概類似于以下:

<?php$content = '<?php exit; ?>';$content .= $_POST['txt'];file_put_contents($_POST['filename'], $content);

 $content在開頭增加了exit過程,導致即使我們成功寫入一句話,也執行不了(這個過程在實戰中十分常見,通常出現在緩存、配置文件等等地方,不允許用戶直接訪問的文件,都會被加上if(!defined(xxx))exit;之類的限制)。那么這種情況下,如何繞過這個“死亡exit”?

幸運的是,這里的$_POST['filename']是可以控制協議的,我們即可使用 php://filter協議來施展魔法:使用php://filter流的base64-decode方法,將$content解碼,利用php base64_decode函數特性去除“死亡exit”。

眾所周知,base64編碼中只包含64個可打印字符,而PHP在解碼base64時,遇到不在其中的字符時,將會跳過這些字符,僅將合法字符組成一個新的字符串進行解碼。

所以,一個正常的base64_decode實際上可以理解為如下兩個步驟:

<?php$_GET['txt'] = preg_replace('|[^a-z0-9A-Z+/]|s', '', $_GET['txt']);base64_decode($_GET['txt']);

所以,當$content被加上了<?php exit; ?>以后,我們可以使用 php://filter/write=convert.base64-decode 來首先對其解碼。在解碼的過程中,字符<、?、;、>、空格等一共有7個字符不符合base64編碼的字符范圍將被忽略,所以最終被解碼的字符僅有“phpexit”和我們傳入的其他字符。

“phpexit”一共7個字符,因為base64算法解碼時是4個byte一組,所以給他增加1個“a”一共8個字符。這樣,"phpexita"被正常解碼,而后面我們傳入的webshell的base64內容也被正常解碼。結果就是<?php exit; ?>沒有了。

最后效果是 :

php,filter

利用字符串操作方法

有的同學說,base64的算法我不懂,上面的方法太復雜了。

其實,除了使用base64特性的方法外,我們還可以利用php://filter字符串處理方法來去除“死亡exit”。我們觀察一下,這個<?php exit; ?>實際上是什么?

實際上是一個XML標簽,既然是XML標簽,我們就可以利用strip_tags函數去除它,而php://filter剛好是支持這個方法的。

編寫如下測試代碼即可查看 php://filter/read=string.strip_tags/resource=php://input 的效果:

echo readfile('php://filter/read=string.strip_tags/resource=php://input');

php,filter

可見,<?php exit; ?>被去除了。但回到上面的題目,我們最終的目的是寫入一個webshell,而寫入的webshell也是php代碼,如果使用strip_tags同樣會被去除。

萬幸的是,php://filter允許使用多個過濾器,我們可以先將webshell用base64編碼。在調用完成strip_tags后再進行base64-decode。“死亡exit”在第一步被去除,而webshell在第二步被還原。

最終的數據包如下:

php,filter

除此之外,我們還可以利用rot13編碼獨立完成任務。原理和上面類似,核心是將“死亡exit”去除。<?php exit; ?>在經過rot13編碼后會變成<?cuc rkvg; ?>,在PHP不開啟short_open_tag時,php不認識這個字符串,當然也就不會執行了:

php,filter

當然,這個方法的條件就是不開啟短標簽。

以上就是關于php://filter的妙用的疑惑全部內容,感謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人aa精品一区在线播放| 在线观看国产成人av片| 国产精品入口夜色视频大尺度| 国产一区红桃视频| 欧美极品少妇xxxxⅹ喷水| 欧美一级视频在线观看| 国产亚洲欧美另类中文| 久久精品电影网站| 欧美一区在线直播| 国产欧美久久一区二区| 精品亚洲一区二区三区在线观看| 亚洲丝袜在线视频| 欧美丰满少妇xxxxx做受| 国产精品中文字幕在线观看| 国产精品福利观看| 国模私拍视频一区| 91九色视频在线| 亚洲精品成人网| 2018日韩中文字幕| 亚洲国产毛片完整版| 国产精品视频免费在线| 欧美片一区二区三区| 日韩视频在线免费| 欧美性猛交xxxxx免费看| 国产成人精品久久二区二区| 欧美中文在线视频| 亚洲另类激情图| 在线精品视频视频中文字幕| 亚洲国产精品久久久| 91精品成人久久| 国产区亚洲区欧美区| 国产日韩av高清| 国产亚洲人成a一在线v站| 久久久亚洲精品视频| 精品久久香蕉国产线看观看亚洲| 国产99久久精品一区二区永久免费| 91精品国产91久久久久久吃药| 精品久久久久久久久久久久久久| 中文字幕欧美专区| 国产精品91在线观看| 亚洲成人a级网| 日韩一区二区精品视频| 亚洲欧美另类自拍| 国产精品美女在线观看| 91av免费观看91av精品在线| 亚洲女在线观看| 欧美日韩在线看| 精品国产区一区二区三区在线观看| 尤物精品国产第一福利三区| 亚洲成色777777女色窝| 中文字幕亚洲欧美| 日韩在线观看av| 国产精品高精视频免费| 亚洲少妇激情视频| 97精品国产97久久久久久免费| 欧美视频中文在线看| 成人乱人伦精品视频在线观看| 国产色婷婷国产综合在线理论片a| 中文在线不卡视频| 亚洲欧美三级在线| 中文字幕亚洲无线码在线一区| 亚洲综合中文字幕在线| 欧美日韩中文字幕在线| 91精品国产91| 日韩欧美国产成人| 久久综合免费视频影院| 国产精品欧美激情在线播放| 成人淫片在线看| 久久成人这里只有精品| 成人性生交大片免费看小说| 国产一区二区三区网站| 5566日本婷婷色中文字幕97| 91av国产在线| 欧美电影电视剧在线观看| 孩xxxx性bbbb欧美| 亚洲精品资源在线| 亚洲第一色中文字幕| 亚洲人成电影在线| 日韩av在线天堂网| 91亚洲国产成人精品性色| 久久精品青青大伊人av| 久久久精品国产网站| 久久91精品国产| 国产97色在线| 91老司机精品视频| 久久夜色精品国产欧美乱| 国产mv免费观看入口亚洲| 91精品久久久久久久久久| 国产亚洲视频中文字幕视频| 日韩欧美亚洲一二三区| 久久综合国产精品台湾中文娱乐网| 高跟丝袜欧美一区| 亚洲欧美日本精品| 国产精品成人一区二区| 欧美高清videos高潮hd| 国产aaa精品| 2023亚洲男人天堂| 宅男66日本亚洲欧美视频| 97视频在线观看免费| 成人在线国产精品| 亚洲欧美激情另类校园| 啊v视频在线一区二区三区| 精品爽片免费看久久| 性视频1819p久久| 国产999精品久久久| 日韩av大片在线| 亚洲四色影视在线观看| 一本大道亚洲视频| 91av福利视频| 成人激情在线播放| 欧美黑人xxxⅹ高潮交| 久久国产精品久久久久| 国内自拍欧美激情| 亚洲福利视频二区| 亚洲成人国产精品| 免费不卡在线观看av| 久久久精品视频成人| 久久久女女女女999久久| 欧美日韩国产va另类| 欧美日韩美女在线| 亚洲激情视频在线观看| 欧美猛少妇色xxxxx| 久久视频免费在线播放| 欧美乱人伦中文字幕在线| 一夜七次郎国产精品亚洲| 日本亚洲精品在线观看| 亚洲二区中文字幕| 日韩av在线免费观看一区| 91chinesevideo永久地址| 国产日产欧美精品| 亚洲第一福利网站| 亚洲天堂第一页| 国产成人中文字幕| 亚洲va欧美va国产综合久久| 91在线视频精品| 国产欧美日韩丝袜精品一区| 国产日韩中文字幕在线| 成人在线精品视频| 欧美亚洲日本网站| 色先锋资源久久综合5566| 欧美午夜精品久久久久久浪潮| 91久久久国产精品| 久久在线视频在线| 欧美人成在线视频| 亚洲最大福利视频| 97精品国产97久久久久久春色| 夜夜狂射影院欧美极品| 中文字幕日韩精品在线观看| 亚洲成人精品av| 欧美老肥婆性猛交视频| 亚洲一区二区中文字幕| 中文字幕亚洲情99在线| 国内精品久久久久影院优| 欧美疯狂做受xxxx高潮| 国产精品视频xxxx| 色综合影院在线| 国产精品久久久久久久久久尿| 日韩精品中文字幕有码专区| 国产精品久久久久久久久久免费| 久久久亚洲影院| 一区三区二区视频| 尤物99国产成人精品视频| 欧美日韩999| 国产日韩欧美自拍|