欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

攻防世界 reverse 新手题wp

程序员文章站 2022-07-09 12:39:58
...

open-source

题目描述:菜鸡学逆向学得头皮发麻,终于它拿到了一段源代码
直接给了一段源代码,读懂源码即可

思路

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {       //代码中有四个if语句,每个if语句中的条件都必须不成立才能得到key
    if (argc != 4) {                     //argc==4
    	printf("what?\n");
    	exit(1);
    }

    unsigned int first = atoi(argv[1]);   //atoi()函数可以将字符串(有数字组成)转换为int型数字,其他的return 0;
                                          //例如:字符串"123456"转化为整型数字123456
    if (first != 0xcafe) {                //0x为16进制数 所以first==51966
    	printf("you are wrong, sorry.\n");
    	exit(2);
    }

    unsigned int second = atoi(argv[2]);
    if (second % 5 == 3 || second % 17 != 8) {  //a[2]%5!=3&&a[2]%17==8
    	printf("ha, you won't get it!\n");
    	exit(3);
    }

    if (strcmp("h4cky0u", argv[3])) {        //strcmp比较函数相等返回0,大于返回正数,小于返回负数,len=7
    	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);       //x代表16进制,hash的十六进制数即为key
    return 0;
}

first==51966,(second % 17)==8,strlen(argv[3])==7,
计算得hash=c0ffee(一开始用大写提交用大写提交不对。。。)

insanity

题目描述:菜鸡觉得前面的题目太难了,来个简单的缓一下

思路

打开附件,拖入ida64,不能生成伪代码,拖入ida32,得到

int __cdecl main(int argc, const char **argv, const char **envp)
{
  unsigned int v3; // eax
  unsigned int v4; // eax

  puts("Reticulating splines, please wait..");
  sleep(5u);
  v3 = time(0);
  srand(v3);
  v4 = rand();
  puts((&strs)[v4 % 0xA]);
  return 0;
}

进入strs
找到 “9447{This_is_a_flag}”(格式无语。。)得到flag

python-trade

题目描述:菜鸡和菜猫进行了一场Py交易

思路

有一个pyc文件,一开始我还是拖入ida,得到一串密码,好像要用base解码但得不到flag
搜pyc的时候找到一个pyc反编译网站,进行反编译得到

#!/usr/bin/env python
# visit http://tool.lu/pyc/ for more information
import base64

def encode(message):
    s = ''
    for i in message:
        x = ord(i) ^ 32
        x = x + 16
        s += chr(x)
    
    return base64.b64encode(s)

correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
flag = ''
print 'Input flag:'
flag = raw_input()
if encode(flag) == correct:
    print 'correct'
else:
    print 'wrong'

相关标签: 安全