-
-
[原创]BUUCTF逆向题:[WUSTCTF2020]Cr0ssfun
-
发表于: 2022-3-27 16:17 5021
-
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}
赞赏
他的文章
- 关于迷宫题的一些求解思路 11128
- [原创]攻防世界PWN新手区:int_overflow 7821
- [原创]攻防世界PWN新手区:guess_num 11534
- [原创]攻防世界PWN新手区:level2 11815
- [原创]攻防世界PWN新手区:level0 6107
看原图
赞赏
雪币:
留言: