上海嘉韋思杯部分writeup
第二題
打開賽題,看到加密字符串,進行base64解密,發現是JSFUCK,再次解密,控制臺得到flag。
第三題
打開頻譜圖得到flag,flag中有三個_,聯想到音頻文件詳細信息中的三個zero,帶入MD5解密得到flag。
第四題
打開賽題發現是加密字符串,進行15次base64解密,發現有柵欄規律,解密得到flag。
第六題
題目要求2秒內輸入數學表達式結果,寫腳本得到flag。
#coding:utf-8 import requests improt re import sys reload(sys) sys.setdefaultencoding('utf-8') url = "賽題網址" res = requests.get(url).content.decode("utf-8") exp = re.findall(u'<p>(.+?)</p>',res)[1] print(exp) print(eval(exp)) result = eval(exp) payload = {"result":result} res = requests.post(url,data=payload).content.decode("utf-8") print(res)
第七題
下載圖片使用binwalk分析,發現zip壓縮包,使用binwalk -e進行分離
打開壓縮包發現提示“管理員使用了他的QQ號進行加密”
直接爆破,打開文件得到flag
第八題
打開賽題發現字符串,進行ascii碼的凱撒移位,第一位移4位發現為f,第二位移5位為l,以此類推等到flag。
第十題
文件查殼是無殼文件
拖進ida查看,找到一個函數:sub_8048580
程序的大概邏輯是,getline獲得一個字符串,然後進入sub_8048580進行字符串匹配操作,匹配過程中返回0或1,如果此函數返回1,那麽後面即輸出correct,字符串即為flag
根據程序倒推出flag{09vdf7wefijbk}
第11題
查看網頁源碼,發現是判斷條件是md5碰撞,上網查找符合條件的md5得到flag
第12題
題目有兩個password,首先查殼,發現無殼。
在ida中找到字符串Youpassed level1找到引用“You passed level1!”字符串的地方,順利得到第一個password。
使用OD,動態調試第一個password的流程,找到程序在判斷第一個password是否正確之前,註冊了一個異常處理函數。在異常處理函數中,有個對比兩個數值後的字符串輸出,判斷應該是對比了第二個password之後輸出提示字符串。順著這個線索發現密文解密並匹配字符串的函數,這個函數把0x22FDCC地址的字符串“u1nnf2lg”分別與2異或,得到第二個password“w3lld0ne”。
上海嘉韋思杯部分writeup