小白划水之路--------->求大佬带
这段时间终于可以好好享受一下被虐的过程了,这两天终于是解开了一道题,这道题我猜要考的是命令执行,分享一下我被虐的过程吧。
在平台中最显眼的东西就是那个flag的按钮,不难想到这个文件和站点在同一个目录下。
接下来就是想法子搞开这个文件,看看有没有什么隐藏的内容,虽然不知道有没有但毕竟是一个可实践的思路。
有了思路也就有了方向,在界面仅有的几个按钮点击下,收集到的文件都有以下几项:
1、index.php ->接收两个参数
2、flag.php ->不接收参数
3、photos 由index.php接收act=photos时显示,由pid参数控制显示的图片,共12张图,ID分别是0-11,存放在一个叫images的文件夹下面。
4、news由index.php接收act=news时显示,由nid参数控制显示的文件,共3个文件ID分别是1-3,这里猜测这三个文件放在一个文件夹下。
有参数,那就可能存在注入,不过这里是现实图片和文件,不涉及数据库,所以猜测可能是文件包含、xss注入(DOM型和反射型)、命令执行。可能是我比较菜吧,只能想到这三个。。。。
首先对xss进行测试
所以说这里存在过滤条件,而且不回显,那么xss注入的概率无限减小,放弃。对photos板块也就不测试了,猜测存在整型数判断函数intval(),数字长度无法大过9223372036854775807也无法小过-9223372036854775808,能被利用的价值不大。
所以我想试试文件包含,不过什么试都是一个结果,后来终于找到了原因,他们过滤大小写的26字母
过滤字母不可怕,可以用其他编码绕过,但在试的时候有的会出现成功,有的又回显这个界面,在经过一番测试之后发现,他们把参数长度限制在5个字符以内
这样下来就放弃了编码绕过的方式,同时放弃文件包含,毕竟这些操作下参数都会过长。
剩最后一种操作,命令执行。重新整理一下思路:5个字符内通过命令回显flag.php文件。思路是有,不过任务还是艰巨。在贵人的提醒下,选择了通配符绕过的方法。
接下来就是上网搜Linux命令了,先选择现实文件内容的命令,选最短的nl命令,再找最短的能匹配文件内容的字符,不用说就是*,然后选择能实现nl命令的命令通配符,也就是??。所以我们实现nl flag.php的命令就用?? *代替,这里已经只用走了四个字符。测试结果
可以看到这里回显出了一个类似目录的信息,猜测是执行了ls flag.php,下面的乱码也是执行了其他条件,也就是说nl flag.php也执行了,查看源码
由于这是我在比赛期间做的,这里就不现实flag了,有环境的话也可以复现一下。
网友评论