1. 程式人生 > >上海嘉韋思杯部分writeup

上海嘉韋思杯部分writeup

fault 如果 efi 第三題 柵欄 asc find int 再次

第二題

打開賽題,看到加密字符串,進行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