1. 程式人生 > 實用技巧 >HDCTF-2nd覆盤

HDCTF-2nd覆盤

本文首發於“合天網安實驗室”作者: 淡灬看夏丶戀雨

海南大學校內賽。國慶打的,之前沒時間復現。校外人水了個紀念品。感謝Gamous不捨賜教。感動的哭了。比賽的覆盤。有些沒做出來的闊以看官方wp。題附及官方wp已打包:

藍奏:

https://wws.lanzous.com/i7HmLhmw18f

百度雲:連結:

https://pan.baidu.com/s/1mKWDG-bftD-kPAeZwEUvGw

提取碼:bcxv

1、WEB

signin:

開啟網頁,原始碼,base64解碼

babysql(ACTF題):

這題,一開始以為是純注入,一個一個試'load_file','information_schema'。還過濾了挺多東西的,後來就直接繞過注入,直接select即可。看提示(劃線劃掉的)也是

查完欄位是三個之後,直接查詢flag即可。

1' union select 1,2,flag from flag#

babyrce(ACTF題):

這題也沒啥限制,就是最簡單的rce,../ 就返回上級目錄,flag就是flag檔案。

easygit(ACTF題):

git洩露,github上找個工具,下了原始碼直接cat flag就好了

backup_file(ACTF題):

index.php.bak,備份檔案,根據原始碼繞過就好了,構造?key=123即可

考點應該是php弱型別

參考別人總結的:

https://www.cnblogs.com/Mrsm1th/p/6745532.html

intval函式直接將值轉換成數字,即數字跟字串比較。

傳key=123即可繞過限制。

easy_file_include(ACTF題):

偽協議直接包含

http://8.129.15.153:20005/?file=php://filter/read=convert.base64-encode/resource=flag.php

點選頁面的tips,檔案包含php偽協議直接嘗試即可

do_u_know_HTTP:

提交get引數Hainan_University,然後在post提交HnuSec即可。在根據最後一條,burpsuite抓包加上http頭,沒啥難的,就按要求提交各類引數就好了。就是post的時候我bp一直不行,用hackbar才可以

erciyuan

看原始碼,直接跟到最後。先第一步繞過正則即可,^符號取反。就把除了26個大小寫字母和數字的其他替換成空,第二個過濾則把HnuSec替換成!。觀察前面的hint我們要訪問到!HDCTF!.php檔案。就構造HnuSecHDCTFHnuSec.php的編碼即可繞過

hash_hmac:

觀察原始碼,直接繞過即可。post傳x[]=QNKCDZO&y[]=aabg7XSs。給了個 fllllllllllllag.php,訪問cat flag

md5弱型別,直接繞過吧

welcome:

猜測弱口令,admin/123456,密碼錯誤左上角彈出密碼。輸入 cat flag

calculator_v1

flask的一題,下載給的python檔案,沒做任何過濾。直接cat flag即可

ezflask

給了個參考連結,模板注入。還什麼都沒過濾。就直接套了wp裡的payload。

https://www.k0rz3n.com/2018/11/12/%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%E5%B8%A6%E4%BD%A0%E7%90%86%E8%A7%A3%E6%BC%8F%E6%B4%9E%E4%B9%8BSSTI%E6%BC%8F%E6%B4%9E/{{config.__class__.__init__.__globals__['os'].popen('cat ./flag').read()}}

warmup

getshell

getshell。看過濾。過濾逗號和等號,而後用.來連線前後。

直接把連線前面的閉合掉,在用//註釋符把後面註釋掉

直接閉合後面也是可以cat flag的,看原始碼就拿到flag了

dudaima

get給pass傳個值,然後反序列化他。就滿足if裡的條件即可

就可自己測試了。引用賦值和傳值賦值參考:

https://blog.csdn.net/m15712884682/article/details/77350027

剩下的web題就不咋會了。還有幾道flask和反序列化,可以看看官方wp

2MISC

簽到題:

直接輸flag,簽到即可。

一步之遙:

偽加密

改成00開啟

你知道lsb是什麼意思嗎

就lsb低位隱寫,存為7z即可

後來儲存下來,看到檔案較小,也猜到可能是crc32,找工具爆了確實也不是

在比賽中是沒想到可能會是純數字,後來就寫個純數字的爆破指令碼即可(指令碼來自官方wp)

girlfriend:

匯出HTTP物件,選最大的是圖片檔案。開啟看到flag

嚶語:

----- . ----. -... ..--- -... ...-- -.... . . ...-- ...-- -... .---- ...-- ..-. ..-. ----. .- --... ...-- -.. ..-. ....- ....- ----. -... --... --... . ..--- ..-.http://.com/zonghe/moersicodeconverter.aspx

奇怪的字元:

leet,l33t。黑客語言。wiki上找一下。有對照表,也有線上的網站

http://www.englishcn.com/tools/Leet.htmhttp://output.jsbin.com/IHoFuQE/1
https://www.dcode.fr/leet-speak-1337
http://www.toolsxx.com/code/1337.html
https://1337.me/
https://www.gamehouse.com/blog/leet-speak-cheat-sheet/

無字天書:

開啟檔案,檔案只由空格,tab,換行組成。可能是white-space

找個線上的網站貼進去可以直接解,或者去gayhub上找個。

https://vii5ard.github.io/whitespace/

ook直接解密就可

https://www.splitbrain.org/services/ook

你真的瞭解dns嗎?

nslookup -type=txt hdctf.0x00.work,直接看到flag

dns的type表示dns的協議型別

nospace

零度字元隱寫

解出來的就是password,密碼admin:https://offdev.net/demos/zwsp-steg-js

雪花飄飄

零解一題,看了wp還沒給我整懂,問了一下出題人。diff原頁面和連結頁面。發現換行,考慮網頁隱寫。使用stegsnow。snow=雪

用線上工具diff即可。

海南上一次下雨時間。

然後就儲存題目連結的html檔案。

花朵解密

https://www.qqxiuzi.cn/bianma/wenbenjiami.php?s=huaduo

海底撈幀預告片

這題感覺不難,就是頭大,看了wp還能懂,找到了可以用FFmpeg刪除重複幀的命令,和wp一毛一樣,問了一下出題人,還給一個用指令碼的思路,Hash比較每一幀來篩選。寫不來,Ffmpeg天下第一。

刪除重複幀之後,提出圖片。

最後篩選到4張,但目前無ps就沒繼續做下去了,拼起來反色即可得到二維碼。

專業團隊:

分四階段,主要就是要降噪處理(不知道能不能把抬棺那段分離出來)。還有能聽出來DTMF編碼。morse降噪完直接看就好了。DTMF不能的話,就手解。降噪完也是能看的,一個是頻譜,然後第二個應該是morse,第三個是dtmf 第四個就是流派的flag。連起來就是最後的flag了。

調兩個頻段之後對著DTMF的表就可以看出來了。用工具解的話有幾位是亂了的

瓦斯礦工

很新奇的一道題,虛擬貨幣相關。

metamask使用可參考:

https://zhuanlan.zhihu.com/p/112285438?from_voters_page=true

直接foremost分離圖片即可得到一個壓縮包,拖進16進位制檔案裡也可以看到有12個50 4B 03 04的PK頭

觀察到大小較小,直接爆破crc即可,以太坊錢包通過助記詞登入。助記詞可通過數字查詢,這裡就只爆破數字。

直接破即可

https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt#L350

以太坊錢包通過BIP-39生成私鑰,數字查詢助記詞。

指令碼

import binascii
import zipfile
import time
def crc32asii(v):
       return (binascii.crc32(bytes(str(v), encoding='ascii')) & 0xffffffff)
for x in range(1, 10000):
      f = zipfile.ZipFile("00000001.zip", "r")
      for i in range(1, 13): 
              GetCrc = f.getinfo(str(i)) 
              crc = GetCrc.CRC
              a = ("0x%08x" % crc) 
              j = crc32asii(x) 
             if ("0x%08x" % j) == a: 
                   print(i, x)
                   time.sleep(0.1)

使用助記詞登入之後,複製地址,去查詢最近的交易記錄

詳情裡得到的直接轉字串得到flag

到點了,上號

出題肯定有故事doge

考點是mp3保留字隱寫資料,wp裡給了wiki連結

https://en.wikipedia.org/wiki/MP3#File_structure

直接拿指令碼就出了,未學習原理。

https://github.com/impakho/de1ctf-mc_challs/blob/master/writeup/mc_easybgm/mp3.py

3.crypto

起源

應該是凱撒直接解

圍住世界:

這題疑惑了挺久的,以為是自己找的網站和軟體不對。反反覆覆裡裡外外。試了好幾個。後來翻看筆記的時候發現可能是w型柵欄密碼

http://www.atoolbox.net/Tool.php?Id=777.com

有趣起來了:

就倒序,ctf特訓營上有講的。quiqui也可以做的,前面改成hdctf就好了。順便把字母改一下即可。

官方wp上給的是用指令碼

神祕字元:

一看時候只注意到mc。以為是什麼mc的其他版本。就去瘋狂google也沒找到。後來就翻到mc的wiki。就mc附魔臺上的字元,玩過mc的應該都知道,mc wiki上找張對比圖,對比就好

https://minecraft-zh.gamepedia.com/Minecraft_Dungeons:%E7%AC%A6%E6%96%87

茫茫人海:

base64隱寫,跟[ACTF新生賽2020]base64隱寫挺像的。反正也是套指令碼就好了

奇怪的貝斯:

整不會了這題,抱歉。

具體思路應該就是構造一個碼錶。\x即是轉義字元,方便表示

babyrsa:

https://www.anquanke.com/post/id/87105

這題還好,純現代密碼菜雞,不過給了pqe。又給了個連結,先求尤拉,然後就n,d,m

#coding:utf-8
from binascii import a2b_hex, b2a_hex
import gmpy2
#flag = "*****************************"
p = 262248800182277040650192055439906580479
q = 262854994239322828547925595487519915551
e = 65533
n = p*q
phi = (p-1)*(q-1)
d = gmpy2.invert(e, phi)
c = 68405618655091231850901459679785989915772760467494039910176075122809565696913
m = pow(c, d, n)
print(m)
#a=(int(str(m),16))
a=191853633260784640753082658319123392799532077630882079100618224148262386737246462849

https://tool.lu/hexconvert/https://www.bejson.com/convert/ox2str/

4.Re

sign_up

直接檢視字串就可看到flag

re1

這題比賽的時候看,以為是異或運算+base64換表然後解密,找了半天硬是沒找全64個字元。然後就不了了之。Re也不咋會。之後的題可以看官方wp。

5.Pwn

calculator

題目描述:

python2的input執行輸入導致rce

先用__import__('os').system('/bin/sh')。

直接rce

然後用python -c 'import pty;pty.spawn("/bin/bash");'。

獲得一個bash的shell

找到之後cat即可

自己寫了一個。。發現py直接input就可了

warmup

abs函式是取絕對值的意思。所以不可能小於0。考慮abs負數溢位。就是2的31次方。直接寫指令碼傳就可

backdoor

字串檢視到sh,跟入

繼續跟

bash後門

檢視buf到r的位置

編寫指令碼溢位即可

其他pwn題本菜不會,pwn題可以參考某大佬,應該是ak了pwn題的:

https://www.cnblogs.com/z2yh/p/13771942.html