zoukankan      html  css  js  c++  java
  • XCTF reverse_box(idapython)

    在这里插入图片描述
    ida先静态分析,发现有很多a2[1]不知道是什么,就远程动调了一下,发现是我们所输入的字符串,也就是我们所输入的字符串作为索引,通过v4这个数组输出,这题题目的数据漏给了,当时也是一头雾水,后面找了wp,才发现题目漏了条件,就是正确的flag输入后,会输出95eeaf95ef94234999582f722f492f72b19a7aaf72e6e776b57aee722fe77ab5ad9aaeb156729676ae7a236d99b1df4a
    在这里插入图片描述
    所以现在就是意思是查v4的表,然后再反推序号就得出flag了,然而发现那个v4的表是变动的。
    在这里插入图片描述
    有个随机值,后面在ida中,找到了eax的种子,发现不会超过0xff。
    在这里插入图片描述
    也就是有256种可能性,逐个爆破就可以得出flag了,而且题目提示了flag的格式是T开头,那我们就可以利用这个T字母作为动调的参数,T在表中对应0x95时,说明这个表是我们想要的,取下来,再逆向得出flag。
    ida主要使用函数.

    
    for i in range(1,256):
        RunTo(0x80485b1)
        GetDebuggerEvent(WFNE_SUSP,-1)
        print(i)
        SetRegValue(i,"eax")
    
        RunTo(0x8048704)
        GetDebuggerEvent(WFNE_SUSP,-1)
        w=GetRegValue("eax")
    
        RunTo(0x8048746)
        GetDebuggerEvent(WFNE_SUSP,-1)
        SetRegValue(0x80486D4,"eip")
        if w==0x95:
            print i
            break
    RunTo(0x80485b1)
    GetDebuggerEvent(WFNE_SUSP,-1)
    print i
    SetRegValue(i,"eax")
    RunTo(0x8048746)
    GetDebuggerEvent(WFNE_SUSP, -1)
    addre=GetRegValue("esp")
    addre=addre+0x1C
    arr=[]
    for i in range(0xff):
        arr.append(Byte(addre+i))
    tmp="95eeaf95ef94234999582f722f492f72b19a7aaf72e6e776b57aee722fe77ab5ad9aaeb156729676ae7a236d99b1df4a"
    a=[]
    for j in range(0,len(tmp),2):
        a.append(arr.index(int(tmp[i:i+2],16)))
    print("".join(map(chr,a)))
    
    
    
    
    

    在这里插入图片描述

  • 相关阅读:
    C# 利用 Geckofx60 实现下载
    C# 线程 线程池
    C# DateTime 与 String 格式转换
    C# WPF 获取程序路径
    C# 计时器 Timer 介绍
    获取远程图片并把它保存到本地
    php sql 过滤
    PHP如何生成伪静态
    用php获取客户端IP地址的方法
    php过滤危险html代码
  • 原文地址:https://www.cnblogs.com/YenKoc/p/12779878.html
Copyright © 2011-2022 走看看