reverse 1
使用ollydbg调试
这个题就是字符串替换也可以写一个脚本在ascii码的十六进制直接做运算,我这里为了速度快直接输入存在的ascii字符的 一一对应
这道题需要配置的是DDCTF{reverseME} 找到对应的一一匹配就是flag
=<;:9876543210/.-,+*)(‘&%$][ZYXWVUTSRQPONMLKJIHGFEDCBA”
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[]“
abcdefghijklmdcbpqrstyz#!B
=<;:987654321:;<.-,+*%${}\
DDCTF逆向二
脱壳 首先文件有一层asp壳 由于只是业余逆向就不手脱了,用
ASPack Stripper这个工具
总体分析
脱完壳拉进ollydbg进行调试
首先总结初步调试的
- 输入字符数是偶数
输入的字符57 - 65 >48 <70
可以输入ABCDEF1234567890 - 最后将输入的值进行转换后与reverse+进行比较
- python模块itertools的排列组合函数模拟所有输入的所有情况
输入测试
以下是几组测试输入的值转换后的变化情况
1234567890
EjRWeJA=
1234567890ABCDEF
EjrWeJCrze8=
FEDCBA0987654321
/ty6CYdlQyE=
逆向分析
使用0x401240这个函数对输入过滤
接着单步往下执行
发现输入的字符主要在
这个函数进行变换
步入进去这个函数
将计算数来的值在0x403020里面对应找到的值再与0x76异或
解析出来是
最后将转换完的字符串与reverse+比较
多次测试最后总结
- 这个循环的输入是6个字符串为一组。输出是4个字符串
所以我们输入是十二个字符
题解奉上
1 | import itertools |