rectf
入门
先回顾下最近所学的
从最基本的普通逆向到异或操作,学好语言看感觉逆向
学会使用ida,现在知道的操作罗列一下
1
2
3
4
51. f5 编译为c语言
2. shift f12 找字符串
3. alt f7 使用脚本
4. 混淆字,当看到红字或者地址+1/+2的时候可以按u 然后按c进行分析(code)
5. 快捷键r可以直接分析为字符串其余的不是那么重要
又刷了base64的题目,转到目录python底下有介绍
之后是upx壳,只知道打开upx.exe
1
upx -d 文件
就可以脱壳了
花指令也只是看ida里无法反汇编标红的地方,将那个地方修复了即可,也只是将编辑打开,把E9改为90
要注意linux环境和windows环境下的种子是不同的,答案不对可以试试
当函数一个套一个找不到结尾的时候,按下x使用xref流,寻找w,写来找到关键点
python pyinstxtractor.py 文件名.exe python反编译,当遇到pyc可以使用
1. number-mashing
- 一道老早之前做的整数溢出题,现在找回来再来一遍
这需要读懂ARM汇编
1
2
3
4
5
6
7
8
9
101. mov是一样的作用
2. 主要是几个栈的动用
(1)STR X1, [SP,#0x130+var_8]
将 X1 的值存储到栈中偏移量为 0x130 + var_8 的位置。
(2)LDR X1, [X0]
从 X0 指向的地址中读取数据到 X1
(3)ADD X1, SP, #0x130+var_118
将栈中某个位置的地址赋给 X1,用于存储输入的第一个数字。
这里我们输入两个数,第一个数是X0,第二个数是X1
1
也就是x是在11C y在118
分析
- x=0,程序终止

- y=0,程序终止

y!=1,程序继续执行

1 | 总的来说就是 (x != 0 && y != 0 && y != 1) |
算法

1
2最核心的地方,W1(x)/W0(y)放到W0(118)里,W0(x/y)放到114,把11C(x)给W0,把114(x/y)给W1
比较W1和W0,相等,得到flag1
但是y!=0和1 x/y==x想了半天也没有符合的,最后想到整数溢出
- 在 C 中,
int类型的大小通常是 32 位,尤其是在常见的编译器(如 GCC、Clang 和 MSVC)中,即使在 64 位系统上,int仍然通常为 32 位。 - 因此-2147483648和2147483648补码相同 所以让x=-2147483648,y=-1,就是正确答案
- 在 C 中,
2.[KPCTF 2024 决赛]REsignin_revenge
一串以太坊字节码
1
0x6000601d9050611ce3016022016020901b6309a90782600202017fffffffffffffffffffffffffffffffffffffffffffffffffffffa7a7b3cfa9cc191865666666abcdef653a1e2d49f19665123456789abc654d494b55585918180600
Bytecode to Opcode Disassembler | Etherscan
扔进这里
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26[1] PUSH1 0x00
[3] PUSH1 0x1d
[4] SWAP1
[5] POP
[8] PUSH2 0x1ce3
[9] ADD
[11] PUSH1 0x22
[12] ADD
[14] PUSH1 0x20
[15] SWAP1
[16] SHL
[21] PUSH4 0x09a90782
[23] PUSH1 0x02
[24] MUL
[25] ADD
[58] PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffa7a7b3cfa9cc
[59] NOT
[60] XOR
[67] PUSH6 0x666666abcdef
[74] PUSH6 0x3a1e2d49f196
[81] PUSH6 0x123456789abc
[88] PUSH6 0x4d494b555859
[89] XOR
[90] XOR
[91] MOD
[92] STOP找到字节码,只要根据堆栈一步步走就行了
1
2
3
4
5
6
7
8
9重点:
1. SHL是把栈顶元素左移栈顶下面一个元素位
就是假如栈是
a
b
就是a<<b,a向左移b位
2. MOD 第二个模第一个,但这题是第一个模第二个1
2
3最后答案:
0x656330643373
0x457a5f625937
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 ᕙ(• ॒ ູ•)ᕘ欢迎光临ᕙ(`▿´)ᕗ!




