RCE
1.eval执行
request接受post和get请求,接受cmd参数
使用远程系统命令遍历目录
查看文件
2.文件包含
需要传一个file参数,不能为flag,存在shell.txt,可连接shell,故可以访问?file=shell.txt
之后post提交ctfhub=system('cat /flag');
查看flag
3.常见伪协议用法
4.php://input
开头0–6为必须为php://
,故可以用php://input
执行查看命令
查看目录
找到flag_29702
查看flag
5.远程包含
使用php://input
或者可以直接包含文件,使用
<?php sysytem('cat flag');?>
也会显示ctfhub
6.读取源代码
使用?file=php://filter/read=convert.base64-encode/resource=/flag
获取到文件经过base64加密后的内容,解密得到flag
7.命令注入
可使用管道符
如&
或 &&
与 |
直接执行后面语句 ||
前面出错执行后面的(windows)
;
前后都执行 其余的与windows相似(linux)
8 .过滤cat
查看内容的系统命令:cat
less
more
tac
tail
cut
9.过滤空格
使用<
占位,绕过空格过滤,或使用${IFS}
代替
10.过滤目录分隔符
使用${PATH:0:1}
代替/
还可使用分隔符
;
连续执行系统命令
11.过滤运算符
使用;
,linux的运算符,表示前后都执行
12.综合过滤练习
过滤了|
,&
,;
,空格
,/
,cat
,flag
,ctfhub
可使用%0a
换行符,%0d
回车,%0D%0A
绕过运算符限制
使用${IFS}
,<
代替空格
使用${PATH:0:1}
代替/
使用$*
时,若没有定义$*
,linux则会将将$*
表示为空,则绕过了字符的限制,如fl$*ag
查目录
找到flag文件
查看flag
或