hitb-2017 1000levels writeup

题目分析

题目设置的还是比较巧妙的。

本身是一个二进制的文件,linux 64环境,保护情况如下:

    Arch:     amd64-64-little
    RELRO:    Partial RELRO
    Stack:    No canary found
    NX:       NX enabled
    PIE:      PIE enabled

功能一共三个:
1. go: 选择一个level,然后会再问你一次level,输入之后,回答两次level想加这么多次的问题,就是a * b类型,回答完成之后输出你在多少秒内完成了多少level
2. hint: 打印NO PWN NO FUN
3. give up: 退出

实现如下:

go

int go(void)
{
  int v1; // ST0C_4@10
  __int64 v2; // [sp+0h] [bp-120h]@1
  int v3; // [sp+8h] [bp-118h]@9
  __int64 v4; // [sp+10h] [bp-110h]@0
  __int64 v5; // [sp+10h] [bp-110h]@4
  signed __int64 v6; // [sp+18h] [bp-108h]@7
  __int64 v7; // [sp+20h] [bp-100h]@10

  puts("How many levels?");
  v2 = read_num();
  if ( v2 > 0 )
    v4 = v2;
  else
    puts("Coward");
  puts("Any more?");
  v5 = v4 + read_num();
  if ( v5 > 0 )
  {
    if ( v5 <= 999 )
    {
      v6 = v5;
    }
    else
    {
      puts("More levels than before!");
      v6 = 1000LL;
    }
    puts("Let's go!'");
    v3 = time(
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值