首页
社区
课程
招聘
2024KCTF_第九题 第一次接触-提交题目
发表于: 2024-6-16 14:17 1792

2024KCTF_第九题 第一次接触-提交题目

2024-6-16 14:17
1792

这道题没用复杂算法,主要用到几个小坑 O(∩_∩)O
序列号=hellocatx202112050a3b1c4d29,它是27位,必须平均分成3段,每段9位,但是会误导每段是8位
第一段:hellocat x
第二段:20211205 0
第三段:a3b1c4d2 9

strncmp(第一段, "hellocat", 8)
9位不提
strncmp(第一段, "hellocat", 8)
9位不提
reverse("20211205")="50211202"
atoi("50211202") * 3 = 150633606;  但代码里藏着一个无声的反调试,会将3变成2
9位也不提
reverse("20211205")="50211202"
atoi("50211202") * 3 = 150633606;  但代码里藏着一个无声的反调试,会将3变成2
9位也不提
四皇后问题,每个直线、竖线、斜线上只能有一个皇后!
a3 b1 c4 d2,就是4个皇后的坐标,转换成二维数组坐标
国际象棋坐标系:
4     1
3 1
2       1
1   1
  a b c d
二维数组坐标:
  0 1 2 3
0     1
1 1
2       1
3   1
 
先介绍2个全局变量:
char g_serial3[8] = { 0 };  //第三段serial会拷贝进去
int g_serial3_verify = 0;   //第三段serial最终校验数
 
有意思的校验方式来了!
g_serial3_verify 最终等于 0x10000039 才能校验通过
但是一开始 g_serial3_verify |= 0x10000000 = 0x10000000
 
如果4个坐标都正确,g_serial3_verify = 0x10000000
如果4个坐标都错,g_serial3_verify = 0x39
如果4个坐标,错1-3个,g_serial3_verify = 0x100000**
 
但是只有当4个落子位置都错的时候,才能执行下列4条语句,凑出0x39。但是这样开头的0x10就被清空,最终校验失败
g_serial3_verify = 0b00000001//清空0x10,因为这里用的是 = ,不是 ^=
g_serial3_verify ^= 0b00001000;
g_serial3_verify ^= 0b00010000;
g_serial3_verify ^= 0b00100000;
 
所以陷入矛盾。。。
 
再来看 g_serial3 和 g_serial3_verify 的内存布局是挨着的:
00 00 00 00 00 00 00 00 - 00 00 00 00
模拟下 产生 0x10000039 时,内存布局应该是:
00 00 00 00 00 00 00 00 - 39 00 00 10
所以校验通过的唯一解法就是,让第三段serial是9位,第9位是'9',将 g_serial3_verify 低地址1字节覆盖成0x39
四皇后问题,每个直线、竖线、斜线上只能有一个皇后!
a3 b1 c4 d2,就是4个皇后的坐标,转换成二维数组坐标
国际象棋坐标系:
4     1
3 1
2       1
1   1
  a b c d
二维数组坐标:
  0 1 2 3
0     1
1 1
2       1
3   1
 
先介绍2个全局变量:
char g_serial3[8] = { 0 };  //第三段serial会拷贝进去
int g_serial3_verify = 0;   //第三段serial最终校验数
 
有意思的校验方式来了!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2024-9-4 13:05 被kanxue编辑 ,原因:
上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 3659
活跃值: (4794)
能力值: ( LV13,RANK:437 )
在线值:
发帖
回帖
粉丝
3
kanxue 对空格等字符处理下,比如前后加空格,会提示通过:请输入序列号:hellocatx202112050a3b1c4d29   6767Success~方便可加我微信 8 ...
程序和代码已重新上传,期待入选
2024-6-26 20:50
0
雪    币: 3659
活跃值: (4794)
能力值: ( LV13,RANK:437 )
在线值:
发帖
回帖
粉丝
4
kanxue 对空格等字符处理下,比如前后加空格,会提示通过:请输入序列号:hellocatx202112050a3b1c4d29   6767Success~方便可加我微信 8 ...
我逆向了下程序,看到明文反调试字样,做了下隐藏。 源码和exe重新上传到zip里
2024-6-29 18:53
0
游客
登录 | 注册 方可回帖
返回
//