萌新的第一次hgame開始了及塘。week1的難度比較友好,至少從web上來說是這樣的绵跷,自己目標也不高膘螟,爭取做到每個week能akweb就滿足了。這次的web整體上比較簡單碾局,除了我自己被坑到的codeworld(中間居然被ban了ip,我只是用腳本post了一次 荆残,沒拿掃描器掃啊啊啊)剩下的3題加起來基本1小時以內就能做完hh擦俐。除此之外還試了試密碼學跟misc的簡單題脊阴,也都寫一寫過程吧握侧。(另外體會到re,pwn真的是爸爸蚯瞧,爺爺,排名高的基本都是二進制的......,我什么時候才能學會二進制捌非妗)
看到官方發(fā)布了才發(fā)的埋合,那就貼下官方的:https://github.com/vidar-team/Hgame2020_writeup
WEB
Cosmos 的博客
顯然提示的是源碼泄露。那么就果斷GitHack走起萄传∩跛蹋可是拿下來的結果只有index.html與css文件。這時候一開始我陷入了錯誤的想法秀菱,具體參考原來ichunqiu上做過的‘登陸’一題振诬。于是我使用了能夠回滾的githack,在它爬下的objects里一個個找(具體方法如下)
git cat-file -p /兩位數(shù)/文件名
查看完所有objects也沒有什么收獲衍菱,除了出題人的github......那么是否是歷史回滾呢赶么?但用git找卻只找到一個版本,感覺不太對勁脊串。那就上github上找找吧......結果還真有辫呻。下面的版本中就有flag的base64編碼
接頭霸王
題目上來沒啥提示清钥,除了一張接頭霸王的圖片跟you need to come from vidar.club
要說web里跟頭有關的,那只能是抓包里常見的Header了钞诡。加上come from 某個網址擅威,不難知道就是http Header中referer這個屬性臊恋。這個屬性之所以有名,跟它將錯就錯的拼寫有關篡悟,正確拼寫顯然是referrer,而這個錯誤拼寫是早期規(guī)范的錯誤因為向后兼容遺留至今的。其作用是告訴服務器我們訪問者是從哪鏈接過來的匾寝,從而進行區(qū)別處理恰力。
那么先加referer頭
提示要從本地訪問,那就更熟悉不過了旗吁,因為這用到已經爛熟于心的XFF頭了踩萎。常常用于偽造ip。所以我們令XFF頭為127.0.0.1.
提示改瀏覽器很钓,那只需改User-Agent 頭香府,加上cosmos即可。
flag要在2077后更新码倦?一看到2077我就想到去年新手上場的中科大hackergame里的信息安全2077企孩,那道題就是通過改header中一個屬性來拿flag。這道題應該也一樣吧......那么我們要改什么屬性呢袁稽?先來看看response:
注意到有Last-Moified這一屬性勿璃,而requests的請求頭中與之對應的就是If-Unmodifed-Since,其官方解釋
HTTP協(xié)議中的
If-Unmodified-Since
消息頭用于請求之中,使得當前請求成為條件式請求:只有當資源在指定的時間之后沒有進行過修改的情況下推汽,服務器才會返回請求的資源补疑,或是接受POST
或其他 non-safe 方法的請求。如果所請求的資源在指定的時間之后發(fā)生了修改歹撒,那么會返回412
(Precondition Failed) 錯誤莲组。
所以改好時間在2077之后:
code world
這道題做出來的人數(shù)算是所有web里面最少的了,但是自己一開始傻傻的卡了好久......
開始一個403,不過作為ctfer,千萬不要相信這個403是真正的403,那么先抓個包暖夭,果不其然
提示存在302锹杈,那么直接訪問index.php吧,抓包后發(fā)至repeater發(fā)現(xiàn)存在405,那么果斷改成POST請求方式迈着,得到:
那么提示通過url傳值竭望,那果斷傳/?a=5+5
啊,結果返回說“再想想”裕菠。自己頓時陷入迷茫咬清,一開始想是不是不是用+連接,后來又想,基于題目是codeworld枫振,是不是要代碼執(zhí)行?但是fuzz了一下喻圃,發(fā)現(xiàn)并沒有回顯執(zhí)行的點。于是陷入迷茫粪滤。后來斧拍,自己在檢查自己抓的包時,意外發(fā)現(xiàn)了一點:
對了杖小!在進行get傳值時肆汹,他會把加號處理成空。也正因如此予权,題目才會要求url傳值并使用相加這種方式來設置限定昂勉。所以payload即為
/?a=5%2B5
??尼泰玫
游戲題hhh但從游戲角度過分難了。顯然游戲只是幌子扫腺,應該找到網站里能post值的操作岗照,于是嘗試狂點‘開始游戲’,果然提示需要300000分時抓到post包笆环。改包就好攒至。
Crypto
InfantRSA
有生之年還能做出RSA......因為看到RSA幾個參數(shù)提示的很清楚就干脆去網上嫖腳本了。在裝庫的時候就很無奈躁劣,gmpy2總是弄不好迫吐。最后去找了個whl,pip install下總歸能用了
import gmpy2
import binascii
p = gmpy2.mpz(681782737450022065655472455411)
q = gmpy2.mpz(675274897132088253519831953441)
e = gmpy2.mpz(13)
phi_n = (p-1)*(q-1)
d = gmpy2.invert(e, phi_n)
c = gmpy2.mpz(275698465082361070145173688411496311542172902608559859019841)
m = pow(c, d, p*q)
print("十進制:\n%s"%m)
m_hex = hex(m)[2:]
print("十六進制:\n%s"%(m_hex,))
#print("ascII:\n%s"%((binascii.b2a_hex(hex(m)[2:])).decode('hex'),))
print("ascii:\n%s"%(binascii.a2b_hex(m_hex).decode("utf8"),))
misc
歡迎參加HGame账忘!
Li0tIC4uLi0tIC4tLi4gLS4tLiAtLS0tLSAtLSAuIC4uLS0uLSAtIC0tLSAuLi0tLi0gLi4tLS0gLS0tLS0gLi4tLS0gLS0tLS0gLi4tLS4tIC4uLi4gLS0uIC4tIC0tIC4uLi0t
一開始不太清楚這是什么編碼志膀,后來百度一下發(fā)現(xiàn)就是base64”钋埽回頭想想溉浙,發(fā)現(xiàn)畢竟是數(shù)字+字母的組合,可以考慮base系的編碼败去。
解碼后為morse電碼放航,在線解一下就好了烈拒。
壁紙
題目下下來打開是個圖片圆裕,扔winhex里看發(fā)現(xiàn)末尾提示flag.txt以及密碼是圖片id,圖片名則標注了pixiv荆几。吓妆。。估計是要改成壓縮包了吨铸,所以也沒去看有沒有壓縮包文件行拢,頭就直接改zip,果不其然是壓縮包诞吱,內容為flag.txt舟奠,需要密碼竭缝。那就直接上p站找這個畫師吧(感覺吃了一波強行安利啊)找到圖片后用密碼看flag.txt沼瘫,最后結果ascii解碼一下就好抬纸。
簽到題ProPlus
一時興起還是看了看這道m(xù)isc。上來先給了一個壓縮包一個文件耿戚,文件內容
Rdjxfwxjfimkn?z,ts?wntzi?xtjrwm?xsfjt?jm?ywt?rtntwhf?f?y???h?jnsxf?qjFjf?jnb??rg?fiyykwtbsnkm?tm??xa?jsdwqjfmkjy?wlviHtqzqsGsffywjjyynf?yssm?xfjypnyihjn.
JRFVJYFZVRUAGMAI
* Three fenses first, Five Caesar next. English sentense first, zip password next.
看到fences跟ceaser就想到了柵欄跟凱撒密碼了湿故。加上提示先3柵欄,再5凱撒膜蛔,那么在線解下碼坛猪,對應組數(shù)與偏移數(shù)分別為3,5即可。解出來前面一句話如下:
Many?years?later?as?he?faced?the?firing?squad,?Colonel?Aureliano?Buendia?was?to?remember?that?distant?afternoon?when?his?father?took?him?to?discover?ice.
出自百年孤獨皂股,不知道有什么用墅茉。解出的密碼用來解壓加密的壓縮包,得到文檔
data:text;ook,
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.............
有點摸不著頭腦呜呐,于是谷歌一下躁锁,發(fā)現(xiàn)這是屬于brainfuck編碼中的一種,不禁讓我聯(lián)想到了原來傷眼睛的jsfuck編碼......那么在線解碼一下(找個好點的網站卵史,開始我找的網站只解了一部分)战转,得到base32編碼。再base32解碼以躯,發(fā)現(xiàn)得到的結果可以進行base64解碼槐秧,且結果開頭有圖片的文件頭。那么可以確認是圖片文件內容進行了base64編碼忧设。那直接解出文件就好了(可以用python刁标,也可以在線)。得到二維碼址晕,直接掃碼得flag膀懈。