3位长度的命令执行

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

点击蓝字 关注我们


        欢迎转发,请勿抄袭!

        源自于一次同事转发给我的红包题目,ctfshow里面的红包题目,打开链接,看了看。题目是这样子。

3位长度的命令执行

        很简洁的代码,就是提交的命令不能超过4位,这下有点犯难~~~

        那就先从4位长度解题思路入手。简单概括一下4位解题的方法:

>f>     最终生成的文件名,为了不影响 dir 要把名字改的在d后面>ht->sl>dir       生成dir文件,然后 * 就是dir的效果了*>v         把dir的效果输出到v里面>rev        创建一个v*v>0       反向结果输出到0sh 0       运行

 从中学习到>xx 是创建xx文件,*>x 将创建的文件名当成命令执行写入到x。于是萌生了一个办法,在linux环境下可以查看文件的两位命令。

思路通过执行

>xx 创建xx

xx为执行命令,但是xx是一个能显示代码的命令,之后通过执行

*>x

将xx执行写到x文件。

        最后发现nl最为合适,nl: 命令读取 File 参数(缺省情况下标准输入),计算输入中的行号,将计算过的行号写入标准输出。 在输出中,nl 命令根据您在命令行中指定的标志来计算左边的行。

        于是构造>nl创建了nl文件,再ls查看得到

3位长度的命令执行

那么再次执行

 *>a

就相当于执行了(重要条件,nl一定要在左边才能执行,按照字母顺序排序的)

nl xxx.php zzz.php

得到a文件,

3位长度的命令执行

下载文件a,即可得到后面两个文件的内容。

3位长度的命令执行

        这道题打破常见的4位字符的ctf坑,太难了~

危险⚠:

>rm 创建rm文件*>a 可以删除r文件名后面的文件(前提rm 在左边)

 文章声明:请勿非法,文章仅供学习交流


3位长度的命令执行



扫码关注我们


发表评论

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