有长度限制的RCE注入
本文最后更新于:1 年前
有长度限制的RCE注入
基本知识
>与>>
我们知道Linux中,有>和>>命令
- 我们可以通过
>来创建新文件
- 同时
>也可以用来往文件存入内容,但是使用>会直接覆盖文件为你需要的内容,如果文件不存在,那么新建文件再放入你需要的内容
而
>>则是往文件中追加新内容,不会覆盖原文件,同样的如果文件不存在也会新建文件再追加
多行命令
同样是在Linux中,我们可以采用在没写完的命令后写入\的方式,实现多行命令

同时我们也可以将命令如上图一样写入文件,并使用sh执行该文件

- 注意这里要使用
>>追加命令
ls -t
Linux中,ls -t可以让文件按照时间进行排序(时间靠后的排在前面)

同时也可以与上述命令构造ls -t > cmd

是不是跟多行命令中的很像,所以如果我们把文件名写为片段化的命令,就可以用sh来实现执行命令

之所以是\\是因为防止引号转义实际上只有一个\写入
实战
访问题目地址

观察代码,filter函数中做了过滤,接下来的代码对Get的内容做了长度限制,可以用到我们上面学到的知识
于是构造一下payload
1 | |
1 | |
解释一下
echo PD9waHAgZXZhbCgkX0dFVFsxXSk7是一个将Base64编码字符串输出到标准输出的命令base64 -d是一个Base64解码的命令。在这里,它将接收前一个命令输出的Base64编码字符串,并解码成原始的二进制数据> 1.php将解码后的二进制数据保存到一个名为1.php的文件中
命令挺长的所以我们可以写个脚本来自动执行一下
payload.txt:
1 | |
脚本:
1 | |
现在访问1.php便可以正常的命令执行了
有长度限制的RCE注入
https://fanllspd.icu/posts/34863/


