上海嘉韦思杯部分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”。

原文地址:https://www.cnblogs.com/luoleqi/p/10698403.html