RCE
RCE
无参数RCE
好文:PHP的无参数RCE - 先知社区 (aliyun.com)
文件包含
1 |
|
↓这题来自ctfhub”文件包含”一题
**怎么用呢,给他/?file=shell.txt
然后根据给的参数传命令
先ls /,后cat即可
php://input
↓这题来自ctfhub”php://input”一题
接着post php代码即可
远程包含
↓这题来自ctfhub”远程包含”一题
给咱一个phpinfo那么必然有他的道理
PHP的配置选项allow_url_include为ON的话,则include/require函数可以加载远程文件,这种漏洞被称为”远程文件包含漏洞(Remote File Inclusion RFI)”。
allow_url_fopen = On
是否允许打开远程文件allow_url_include = On
是否允许include/require远程文件
解法一:跟上一题一样
解法二:!
然后AntSword连接
读取源代码
↓这题来自ctfhub”读取源代码”一题
命令注入
无过滤
↓这题来自ctfhub”命令注入-无过滤”一题
/?ip=127.0.0.1
然后cat
没有回显->查看网页源码
在解题过程中检查页面回显时,发现无回显并不是因为管道符不正确。而是因为在网页中,浏览器会将文本内容解析为 HTML 代码,并根据 HTML 代码生成相应的网页。如果你的文本中包含特殊字符,浏览器就会将这些特殊字符解析为 HTML 标签,导致文本内容无法在网页中正常显示。那么这时候你可以通过以 base64 编码形式进行解析,浏览器会输出 base64 编码后的文本进行输出,不执行 HTML 解析,所以可以在网页中正常显示
如/?ip=127.0.0.1|cat flag.php|base64
过滤cat
可以用less,more,tail等命令读取flag
1 |
|
过滤空格
这里是空格被正则表达式过滤了
以下字符都可以代替空格:
1 |
|
过滤运算符
这道题过滤了(||&)这些符号,用分号即可
1 |
|
过滤目录分隔符
可以先cd后cat
1 |
|
好用的payload
1 |
|
综合过滤练习
↓这题来自ctfhub”命令注入-综合过滤练习”一题
这道题过滤了|,&,;,空格,cat,flag,ctfhub,/符号
命令分隔符用%0a代替
构造payload=?ip=127.0.0.1%0als%09*查看所有文件
发现flag_is_here文件夹,进入:payload=?ip=127.0.0.1%0acd%09*_is_here(这里空格用%09代替)
并cat,用tail绕过
?ip=127.0.0.1%0Acd%09*_is_here%0Atail%09*_300251234643.php
通用匹配符号
1 |
|