攻防世界 REVERSE

目录

标题1 game

标题2 open-source

标题3 simple-unpack

标题1 game

下载得到游戏界面,先玩着试试吧!

每次输入后开关会变化,可是不仅仅是按照输入变化的,,,,,,,,,,,

硬着头皮试试,n=1 2 3 4 5 6 7 8,可得flag。

但是按这种做法,也不是长久之计,怎么办呢?度娘一下,网上不都有。下面是我按照网上方法试试的过程,原文链接在这https://blog.csdn.net/ookami6497/article/details/115412972

将下载文件拖入IDA 32位中,但是为什么时32位,不是64位呐?度娘,,,,,,,,,,,,

https://www.cnblogs.com/17bdw/p/12239505.html在此文章中引用,对于IDA的讲解也很详尽,只引用部分(和做题相关的),有其他想了解的,详情见文章内(点它!)

言回本题,首先由于版本问题,到网上查询了许许多多的教程,都没有完全一致的步骤,教我IDA怎么用!试了几次,这种情况就跟着默认走吧!

首先在右侧函数窗口,点击一下函数名称,ctrl+f(这种一定好好记!平时用起来特别方便,分分钟就是外行眼中的大神,反正当初在这些我眼里是!)进行main函数查找

 找到后按下f5进行反汇编,

跟进main0 继续跳转(双击就行) 

看到if语句,及判断的条件,这应该就是得到flag的条件,不用说,标黄的地方,接着跟进! 

跟进! 

 看到这,就有希望了,接下来就是考验专业能力了!

有很多东西,个人也不是很了解,*()应该是类似于指针。

 标题2 open-source

看懂代码就行!

网上有更详细的题解,对于C语言小白十分友好!下面那个就是(我怎么知道?嗯,,,,,)做个题,网上的方法我都要看(不行吗?)https://www.cnblogs.com/luckymx/p/13293909.html,加油鸭!

#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
    if (argc != 4) {       //说明必须得是4个参数(其中注意文件名是一个)
        printf("what?\n");
        exit(1);
    }
    unsigned int first = atoi(argv[1]);
    if (first != 0xcafe) {    //说明first=0xcafe的时候才能继续向下执行
        printf("you are wrong, sorry.\n");
        exit(2);
    }
    unsigned int second = atoi(argv[2]);
    if (second % 5 == 3 || second % 17 != 8) {     //说明要么%5!=3,要么
%17=8才能继续向下执行
        printf("ha, you won't get it!\n");
        exit(3);
    }
    if (strcmp("h4cky0u", argv[3])) {      //说明argv[3]="h4cky0u"才能继
续向下执行
        printf("so close, dude!\n");
        exit(4);
    }
    printf("Brr wrrr grr\n");
    unsigned int hash = first * 31337 + (second % 17) * 11 + strlen(argv[3]) 
-1615810207;
    printf("Get your key: ");
    printf("%x\n", hash);
    return 0;
}

将前面的条件了解清晰,使得各个输出条件满足(等号前后带入),使得hash输出。输出就是答案,直接填上去就行,不用添加格式!

标题3 simple-unpack

菜鸡拿到了一个被加壳的二进制文件 ,,,,,,,,,,,,,,没有思路,度娘一下,什么是被加壳的二进制文件,从而了解到。

准备工具:exeinfo pe,upx,IDA
首先用exeinfo pe查壳

借鉴文章https://blog.csdn.net/qq_45970858/article/details/115917316windows下的文件是PE文件,Linux/Unix下的文件是ELF文件。

可得,这是一个Linux下的二进制文件。被PUX进行了加壳,那就要用UPX进行脱壳。

注意UPX 3.96这一部分,可以更改,一定要选对! 脱壳成功格式如图所示!

 接着拖入IDA 中(本来是想着区分32位和64位,结果将其拖入32位,软件报错,让我去64位)

 按题game的方法,找main函数,直接可的flag。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值