CTF入门之西北大学NWUCTF练习(2)re逆向练习

  1. re1
  2. pyc
  3. Let’s learn C
  4. crackme
  5. nwu

re1

题目
运行结果
看结果是hello world,目测主函数只是打印,答案就藏在里面

IDA打开,找到main函数,先aHelloWorld入栈,然后call子函数,然后。。。
main
反正我也不是每句都认识,把子函数,或者数据地址都点点看

刚开始跳转sub_4011F2发现太乱了,就回来点下一个off_407030,马上找到答案,其他的就不看了。反正也看不懂
答案

pyc

题目是一个pyc文件,首先对其进行反编译
反编译
发现很多0和o,本地创建后,以比较常见的名称替换恢复后,代码如下

#!/usr/bin/env python
# encoding: utf-8

def bar1():

    try:
        bar2 = int(raw_input('please enter your key:'))
    except Exception:
        None
        None
        None
        bar2 = 1

    return bar2


def bar3(bar4):
    bar5 = 0xD8EA21CE54EAA6F16593CC9D3F9B6AEEB2124692BAD8A1B3A12953B394C9FCA82538529753D0CCA7FBCB90D9708CAFB080852772D1907A62418F27EFE7FB27EFL
    bar6 = 0x21FF2254681BD592E13F732612B964DA42A68735FF7D96600E3104CCD366FFA3056FE0A803A5AE51E215A9CD544C29116EF912E7B516781B0A781630BABF68B0L
    # pow函数是计算x的y次方,如果z在存在,则再对结果进行取模,其结果等效于pow(x,y) %z
    if pow(2, bar4, bar5) == bar6:
        print 'nwuctf{key}' 
    else:
        print 'sorry, please try again!'

while True:
    bar7 = bar1()
    bar3(bar7)

就算运行一下也还是因为太长出错

剩下的就一目了然了嘛不会了

Let’s learn C

题设
代码复制,格式化后如下

#include <stdio.h>
#include <string.h>
int main()
{
    FILE *txt;
    char rflag[30];
    char *tflag = "nxwfxf|EfGCDEfgCdEFgCDeF\x81";
    int i, j;
    txt = fopen("flag.txt", "r");
    fgets(rflag, 26, txt);
    for (i = 0; i < 5; i++)
        for (j = 0; j < 5; j++)
            rflag[i * 5 + j] = rflag[i * 5 + j] + j;//每位加0到4进行偏移
    if (strcmp(tflag, rflag) == 0)//比较
        puts("good!");
    else
        puts("error");
    fclose(txt);
    return 0;
}

可以看出代码是从flag.txt中读取答案,然后对每一位进行偏移0到4的偏移量(j的值),也就是说把tflag给减去相应的偏移量(x81即0x81-4=0x7D对应的ASII码,即})

首先想着直接在写一份代码,进行循环减偏移量

#include <stdio.h>
#include <string.h>
int main()
{

    char *tflag = "nxwfxf|EfGCDEfgCdEFgCDeF\x81";
    int i, j;

    for (i = 0; i < 5; i++)
        for (j = 0; j < 5; j++)
            tflag[i * 5 + j] = tflag[i * 5 + j] - j;
    printf("%s", tflag);
    return 0;
}

似乎没有结果,好像是有错,不太知道怎么改,有会的老铁麻烦指点一下

那就暂时只好手动一个个的恢复:nwuctf{CcCCCCccCcCCcCCcC},手写了几个才发现,妈的全是c,大小写对应上即可。

crackme


题目一直说是VB6写的,但是不懂VB,查查也无从下手,IDA扔一下也没看出什么来,先跳过吧

nwu

提示先扔到IDA里看一下,基本上也看不出来什么

只能看出来栈区大小是34字节


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 452966517@qq.com

文章标题:CTF入门之西北大学NWUCTF练习(2)re逆向练习

文章字数:651

本文作者:Night Zhang

发布时间:2019-07-31, 10:52:22

最后更新:2019-07-31, 16:00:42

原始链接:https://night-zhang.github.io/2019/07/31/CTF入门之西北大学NWUCTF练习-2/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏

github