高手区re
re1
gdb调试拿到flag
1 | gdb-peda$ x/s $esp+0x24 |
re2
1 | MD5 *__fastcall MD5::init(MD5 *this) |
md5的4个常数,没改,所以百度搜下md5解密,解780438d5b6e29db0898bc4f0225935c0
解出来就是这个
hash: b781cbb29054db12f88f08c6e161c199
re3
dump出数据跑一下就好
1 | #!/usr/bin/env python |
re4
北斗壳,用nspack脱掉
1 | #!/usr/bin/env python |
re5
强,mips的题目
1 | #!/usr/bin/env python |
1 | python3 retdec-decompiler.py ~/Downloads/比赛/xctf/逆向进阶/5 |
利用retdec获得c代码,成功
ghidra也可以反编译mips好强
re6
c++的,读懂流程后写代码
坑点。。。要逆序
还是小端序问题
1 | #!/usr/bin/env python |
re7
第一个idapython脚本取了数据,具体在另一篇博客里
可以看出这个前面的检查跟后面的没关系,可以nop掉或者直接gdb调试拿flag都可以
这不是我想要的,我还是想学算法。。
flag_is_you_know_cracking!!!
1 | #!/usr/bin/env python |
好简单的题目,可是光是数据转换以及小端逆序就搞了我好久。。。
re8
confuse里干了这些事
第三部分 转1
第四部分 转2
第一部分 转3
第二部分 转4
简单,将结果转换回去就好了
1 | 'daf29f59034938ae4efd53fc275d81053ed5be8c' string = |
有坑,不用带{}交flag
re9
原来不知道这题要干嘛,看出有base64跟md5
后面就不知道了
emm,这道题又学到新知识了,利用环境变量伪造时间,绕过检测
1 |
|
编译成动态链接库
1 | gcc -c -fPIC -o faketime.o faketime.c |
获得时间戳
1 | '2012-12-21', '%Y-%m-%d')) time_now = time.mktime(time.strptime( |
1 |
|
emm在具体分析的话,前面可以看出是%Y-%m-%d将时间戳md5加密,再加上.fluxfingers.net,
v21 = sub_18A4(dest);
if ( !v21 )
return 1LL;
这里是关键函数,截取返回值,动态获得
在base64解密一次,
最后异或0x25
就是flag了
flag{e3a03c6f3fe91b40eaa8e71b41f0db12}
最主要关键点要联想到世界末日时间
re10
…手动计算下就出来了
1 | if ( strlen(v11) != 16 |
1 | 170-ord('q') |
CZ9dmq4c8g9G7bAX
re11
sub_401000里的
1 | if ( v18 && *v19 >= v13 ) |
这里看出是base64decode
后面在来一顿异或
1 | for ( ; v4 < v3; ++v4 ) |
所以解密,异或回去,在base64encode
中间一顿操作你会发觉他根本没操作你的输入
XEpQek5LSlJ6TUpSelFKeldASEpTQHpPUEtOekZKQUA=
re12
又是一道简单题
1 | #!/usr/bin/env python |
re13
算法简单,不挣扎了,手动写下出来了
1 | 'D')-1) chr(ord( |
本文作者:NoOne
本文地址: https://noonegroup.xyz/posts/c8f4b23e/
版权声明:转载请注明出处!