• 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)))
    
    
    
    
    

    在这里插入图片描述

  • 相关阅读:
    G1垃圾收集器入门-原创译文
    Dubbo微容器(Cooma)详解
    Dubbo工程结构和Maven打包
    Greys学习笔记(未完待续)
    ES学习笔记
    CSS标准盒子模型和IE怪异盒子模型
    npm install 报错
    安卓手机scrollTop失效问题记录
    npm run dev报错
    severless扫盲
  • 原文地址:https://www.cnblogs.com/YenKoc/p/12779878.html
Copyright © 2020-2023  润新知