reversing.kr 前9题

reversing.kr 前9题

近日写了reversing.kr的前九题。。。真的是一题比一题恶心。。。
写个wp吧,最近期末复习了(慌得一批)。。。

EasyCrack

这网站凡是带上(easy)的都不怎么难
简要带过吧
拖进ida
在这里插入图片描述
可以看到字符串比较
答案就是Ea5yR3versing

EasyKeygen

//那啥,一开始没看到这东西还有个readme。。。害得我搞了半天没搞懂怎么写。。。
//这网站所有带有readme的一定要认真看!!!
//不然就极有可能GG
在这里插入图片描述
加密过程就是与密钥异或
然后再与serial比较,既然serial已经告诉你,那就可以直接z3啦~
//最近在学习z3,当然大家也能用爆破

# -*- coding: UTF-8 -*-
from z3 import *
a = [0x5B,0x13,0x49,0x77,0x13,0x5E,0x7D,0x13]
key = [16,32,48]
s = Solver()
name = [BitVec('u%d'%i,8) for i in range(8)]
for i in range(8):
    s.add(a[i] == (key[i%3]^name[i]))
if s.check() == sat:
    result = s.model()
	flag = ''
	for i in range(8):
    	flag += chr(result[name[i]].as_long().real)
	print flag

K3yg3nm3

Easyunpack

脱壳机一下
当然手脱也不是不行
//果断脱壳机2333
OEP是00401150

Music Player

程序是一个音乐播放器,但只能播放一分钟
所以大致思路就是改程序了
放进od里查找字符串
在这里插入图片描述
有个很可疑的1,这貌似和放到1min时候的弹窗有点关系
我们在这下断点
在这里插入图片描述
发现弹窗在这弹出
//播放的singledog没记错的话是moctf里的一道misc,具体看我前面的wp鸭
在上找关键跳转改成jmp后,运行,发现又一个弹窗
在这里插入图片描述
那就再刚刚跳转处下断点,再次运行
在这里插入图片描述
发现此处有弹窗
改关键跳转
保存文件
在这里插入图片描述
运行就能看到了

replace

smc鸭
看一下程序,拖进od后搜函数下断点
在这里插入图片描述
这边一段程序是吧输入的转化为16进制数
比如我输入123
转化为7B
在这里插入图片描述
走到这程序会炸
0x90就是nop了,对一个地方进行nop,在想想correct弹窗那的俩个jmp
在这里插入图片描述
其实就是要把00401071那里给nop掉
我们放进ida里也能看到,没有任何地方call了correct
那么大致思路就有了
在这里插入图片描述
多次实验即可得

imageprc

这个。。。完全没有思路。。。
没发现是个画图板子。。。
看了大佬的wp才发现的
可以用软件dump出里面的东西的。。。
这边就不写wp了
大家网上找吧2333
通向大佬的链接

Position

这题很奇怪,ida里找不到关键字符串,但od可以,用od找到关键函数段,在ida里搜索就能看到啦
在这里插入图片描述
首先是输入的限制(长度以及只能为小写字母)
其次是serial的生成方法
在这里插入图片描述
在这我只想说
z3大法好
题目告诉你可能有多解,又告诉你最后一位是p。

# -*- coding: UTF-8 -*-
from z3 import *
#76876-77776
name =[BitVec('u%d'%i,8) for i in range(4)]
s = Solver()
for i in range(4):
    s.add(name[i]<=122)
    s.add(name[i]>=97)
s.add(name[3] == ord('p'))
s.add((((name[0]&1)+5)+((name[1]>>2)&1)+1)==7)
s.add((((name[0]>>3)&1)+5+((name[1]>>3)&1)+1)==6)
s.add((((name[0]>>1)&1)+5+((name[1]>>4)&1)+1)==8)
s.add((((name[0]>>2)&1)+5+((name[1]&1)+1))==7)
s.add((((name[0]>>4)&1)+5+((name[1]>>1)&1)+1)==6)

s.add((((name[2]&1)+5)+((name[3]>>2)&1)+1)==7)
s.add(((((name[2]>>3)&1)+5)+((name[3]>>3)&1)+1)==7)
s.add(((((name[2]>>1)&1)+5)+((name[3]>>4)&1)+1)==7)
s.add((((name[2]>>2)&1)+5+((name[3]&1)+1))==7)
s.add((((name[2]>>4)&1)+5+((name[3]>>1)&1)+1)==6)
if s.check() == sat:
    result = s.model()
    flag = ''
    for i in range(4):
        flag += chr(result[name[i]].as_long().real)
    print flag

bump

Direct3D FPS

射击游戏可还行
放进ida查找字符串
具体加密可以看到
在这里插入图片描述
但是byte——409184[v2*4]不知道是多少
运行一下用脚本可以得到
在这里插入图片描述
Congratulation~ Game Clear! Password is Thr3EDPr0m

Ransomware

readme里面说了file是个exe文件。。。。。。
//看了大佬wp才知道
这个run呢是加了upx壳
脱完后放进ida
发现有很多花指令啊
用py脚本去除后就可以反编译啦
在这里插入图片描述
加密过程不复杂,是直接对文件进行操作的,输入的是密钥
根据pe文件格式的特性,我们可以直接用z3求出来密钥
在这里插入图片描述
基本上pe文件都有这一段
直接把file的dump出来
用z3整一下

# -*- coding: UTF-8 -*-
from z3 import *
a = [0xC7,0xF2,0xE2,0xFF,0xAF,0xE3,0xEC,0xE9,0xFB,0xE5,0xFB,0xE1,0xAC,0xF0,0xFB,0xE5,0xE2,0xE0,0xE7,0xBE,0xE4,0xF9,0xB7,0xE8,0xF9,0xE2,0xB3,0xF3,0xE5,0xAC,0xCB,0xDC,0xCD,0xA6,0xF1,0xF8,0xFE,0xE9,0xA2]
b = [0x54,0x68,0x69,0x73,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,0x20,0x63,0x61,0x6E,0x6E,0x6F,0x74,0x20,0x62,0x65,0x20,0x72,0x75,0x6E,0x20,0x69,0x6E,0x20,0x44,0x4F,0x53,0x20,0x6D,0x6F,0x64,0x65,0x2E]
s = Solver()
key = [BitVec('u%d'%i,8) for i in range(39)]
for i in range(39):
    s.add(b[i] == ~(a[i] ^ key[i]))
flag = ''
if s.check() == sat:
    result = s.model()
for i in range(39):
    flag += chr(result[key[i]].as_long().real)
print flag

发现输出是letsplaychessletsplaychessletsplaychess
那就是letsplaychess啦
输入密钥运行一下run
file就能运行了
在这里插入图片描述
Key -> Colle System
就写这么些了哈
下面还有的我会慢慢补上
呜啦啦~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值