-
-
[原创]BUUCTF逆向题:[WUSTCTF2020]Cr0ssfun
-
发表于: 2022-3-27 16:17 5391
-
1.基本信息探查:
1.EXEinfo:

2.运行一下:

2.IDA分析:
1.主函数分析:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | int __cdecl main(int argc, const char **argv, const char **envp){ char v4[48]; // [rsp+0h] [rbp-30h] BYREF puts(" _ _ _ _ _____ _____ _____ "); puts("| | | | | | / ___|_ _| / ___| "); puts("| | | | | | \\ `--. | | \\ `--. ___ ___ "); puts("| |/\\| | | | |`--. \\ | | `--. \\/ _ \\/ __|"); puts("\\ /\\ / |_| /\\__/ / | | /\\__/ / __/ (__ "); puts(" \\/ \\/ \\___/\\____/ \\_/ \\____/ \\___|\\___|"); while ( 1 ) { puts("Input the flag"); __isoc99_scanf("%s", v4); if ( (unsigned int)check((__int64)v4) == 1 ) break; puts("0ops, your flag seems fake."); puts("=============================="); rewind(_bss_start); } puts("Your flag is correct, go and submit it!"); return 0;} |
v4接受字符串后调用check函数,当返回值为1时跳出循环输出flag正确
跟踪过去

发现其实就是每个数组进行对比,没有什么好分析的每个字符都是这么对比出来的:

拼接之后为:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| w | c | t | f | 2 | 0 | 2 | 0 | { | c | p | p | _ | @ | n | d | _ | r | 3 | v |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | |||||||
| e | r | s | e | _ | @ | r | e | _ | f | u | n | } |
wctf2020{cpp_@ndr3verse@re_fun}
赞赏
他的文章
- 关于迷宫题的一些求解思路 12371
- [原创]攻防世界PWN新手区:int_overflow 8350
- [原创]攻防世界PWN新手区:guess_num 12117
- [原创]攻防世界PWN新手区:level2 12396
- [原创]攻防世界PWN新手区:level0 6589
赞赏
雪币:
留言: