[FBCTF2019]RCEService

[FBCTF2019]RCEService

考点

  • %0a绕过preg_match

  • PRCE正则回溯

  • 绝对路径绕过putenv('PATH=/home/rceservice/jail');

wp

直接输ls会给出错误,显示提交的参数是?cmd=ls

要求输入json,输入{"cmd":"ls"}

源码是给出的,如下

第一种方法

基本上能过滤的全过滤了,并且在第一行putenv('PATH=/home/rceservice/jail');处指定了默认执行命令的位置,即如果执行ls,那么就相当于执行/home/rceservice/jail/ls,这里可以使用/bin/cat/bin/ls这种方式绕过

而preg_match默认不匹配换行,可以使用%0A绕过,payload:{%0A"cmd":"ls"%0A}

%0A如果放在开头,不满足[\x00-\x1FA-Z0-9!#-/;-@[-`|~\x7F]+这个条件。

payload:{%0A"cmd":"/bin/cat /home/rceservice/flag"%0A}

第二种方法

PHP利用PCRE回溯次数限制绕过某些安全限制

脚本如下

小结

  • preg_match要能想到%0A绕过

最后更新于