概述
题目地址:https://github.com/otakekumi/CTF-Challenge/blob/master/PHP/chall_2/index.php
发现和上一题大体相似,但是发现有一个不一样,长度从5变成了4,没办法利用>>
二次写入了。
但是我们如果就这样是没法儿按照字典序直接写入ls -t>g
到文件的。 因为这一串无论怎么分割写入都无法遵从字典序或是字典序的逆序。
然后就不会了,想了n久还是不会,最后只有去看wp了。
首先介绍几个命令:
dir:虽然基本上和 ls 一样,但有两个好处,一是开头字母是d ,这使得它在 alphabetical 序中靠前,二是按列输出,不换行。
*
:相当于$(dir *)
,所以说如果文件名如果是命令的话就会返回执行的结果,之后的作为参数传入.rev:可以反转文件每一行的内容。
所以这样如果dir
在最前面的话,就可以把当前目录的文件都返回.
>dir
>sl
>g>
>ht-
之后将*
的结果写入文件中,紧接着写入rev
文件.
>*>v
>rev
最后执行rev v>u
,这个命令需要通过*
命令的其它形式实现.
*v>u
这个命令就是$(dir *v)>u,dir *v返回的就是结尾为v的文件.
这个地方其实是一个很巧妙的方式,因为*v
恰好是可以匹配到rev
和v
的,如果文件名换成其它字母会因为排序错误或者没有作为rev
的参数而逆序失败.
之后的步骤就没有什么多大的区别了.
基本上就前面的写文件操作不一样。
exp执行,getshell!
参考链接:https://xz.aliyun.com/t/1579
最后
以上就是包容春天为你收集整理的HITCON 2017 babyfirst-revenge-v2(命令执行绕过五)的全部内容,希望文章能够帮你解决HITCON 2017 babyfirst-revenge-v2(命令执行绕过五)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复