首页
社区
课程
招聘
[原创] KCTF 2023 第一题 wp - 98k
2023-9-2 16:36 2234

[原创] KCTF 2023 第一题 wp - 98k

2023-9-2 16:36
2234

main 主要逻辑:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  if ( sscanf(input, "%lld-%lld", &value1, &value2) == 2 )
  {
    v10 = snprintf(temp, 13ui64, "%lld-%lld", value1, value2);
    if ( v8 > 0 && v10 > 0 && v8 == v10 )
    {
      while ( input[v3] == temp[v3] )
      {
        if ( ++v3 >= v8 )
        {
          if ( value1 > 0 && value2 > 0 && value1 <= value2 && value2 + value1 == 117738 )
          {
            v11 = "Accepted!\n";
            if ( value1 * value2 == 3457897337i64 )
              goto LABEL_28;
          }
          break;
        }
      }
    }
  }
LABEL_27:
  v11 = "Wrong answer!\n";
LABEL_28:
  printf(v11);

输入两个数以-分隔,给了两数之和与两数之积、第一个数不大于第二个数,求解二次方程即可。或者直接 z3 解:

1
2
3
4
5
6
7
8
9
from z3 import *
x = Int('x')
y = Int('y')
s = Solver()
s.add(x + y == 117738)
s.add(x * y == 3457897337)
assert s.check() == sat
print(s.model())
# 56101-61637

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回