BUUCTF-MISC-[GWCTF2019]math

博客详细介绍了如何解决GWCTF2019的math挑战。通过分析源程序,发现无壳且主要逻辑是进行150次计算。利用pwntools的recvuntil方法获取算式参数,自动计算并反弹结果,最终成功获得flag。
摘要由CSDN通过智能技术生成


每天一题,只能多不能少

[GWCTF2019]math

题目分析

  1. pwntools交互
  2. recvuntil方法

开始

1.题目

给出一个环境。
环境
环境连接后提示:
环境1
给出一个算式,要成功计算150次,每次几秒内没给出结果就退出。
和这个环境的源程序。gwctf_2019_math

2.源程序分析

(1)查壳

无壳

(2)IDA分析

丢进IDA,找到核心函数

int __cdecl main(int argc, const char **argv, const char **envp)
{
  unsigned int seed; // ST14_4
  unsigned int v4; // ST18_4
  unsigned int v5; // ST1C_4
  unsigned int v6; // ST20_4
  unsigned int v7; // ST24_4
  signed int v9; // [rsp+10h] [rbp-130h]
  char buf; // [rsp+30h] [rbp-110h]
  unsigned __int64 v11; // [rsp+138h] [rbp-8h]

  v11 = __readfsqword(0x28u);
  setvbuf(stdin, 0LL, 2, 0LL);
  setvbuf(stdout, 0LL, 2, 0LL);
  setvbuf(stderr, 0LL, 2, 0LL);
  v9 = 0;
  seed = time(0LL);
  srand(seed);
  do
  {
    alarm(5u);
    v4 = rand() % 200;
    v5 = rand() % 200;
    v6 = rand() % 200;
    v7 = rand() % 200;
    puts("Pass 150 levels and i will give you the flag~");
    puts("====================================================");
    prin
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值