首页 > 其他分享 >BUUCTF [RoarCTF2019]polyre

BUUCTF [RoarCTF2019]polyre

时间:2024-08-01 20:17:54浏览次数:18  
标签:BUUCTF polyre sign flag 0xB0004B7679FA26B3 反控制 RoarCTF2019

第一次遇到反控制流平坦化的题目,记录一下。
扔进ida,发现main函数中全是while循环,后来上网查阅才发现是控制流平坦化。
反控制流平坦化的教程可以参考这个blog:
https://www.cnblogs.com/kelec0ka/p/17909008.html
使用deflat生成recovered文件:

python deflat.py -f test --addr 0x400620


用ida打开得到反混淆后的伪代码:

可以看到其中有很多没有意义的判断,推测应该为无用代码,用来进行混淆的。

这一块为关键代码,推测为将flag每8个一组,每组取出乘以二,或者异或,最后和s1比较。
后来知道这是CRC加密算法,写出解密脚本:

secret = [0xBC8FF26D43536296, 0x520100780530EE16, 0x4DC0B5EA935F08EC,
        0x342B90AFD853F450, 0x8B250EBCAA2C3681, 0x55759F81A2C68AE4,
        0xB0004B7679FA26B3]
key = 0xB0004B7679FA26B3
flag = ''
for s in secret:
    for i in range(64):
        sign = s & 1
        # 判断是否为负
        if sign == 1:
            s ^= key
        s //= 2
        # 防止负值除2,溢出为正值
        if sign == 1:
            s |= 0x8000000000000000
    # 输出表
    print(hex(s))
    # 计算CRC64
    j = 0
    while j < 8:
        flag += chr(s&0xFF)
        s >>= 8
        j += 1
print(flag)
#flag{6ff29390-6c20-4c56-ba70-a95758e3d1f8}

标签:BUUCTF,polyre,sign,flag,0xB0004B7679FA26B3,反控制,RoarCTF2019
From: https://www.cnblogs.com/reverse-chen/p/18337407

相关文章

  • 【BUUCTF】AreUSerialz
    【BUUCTF】AreUSerialz(反序列化)题目来源收录于:BUUCTF网鼎杯2020青龙组题目描述根据PHP代码进行反序列化<?phpinclude("flag.php");highlight_file(__FILE__);classFileHandler{protected$op;protected$filename;protected$content;......
  • BUUCTF [GXYCTF2019]simple CPP
    buu上的一道z3题,记录一下z3奇怪的用法。首先扔进ida,打开主函数,非常混乱的算法,大概发现两个关键点:这里应该是对flag进行异或得到v6而这里的比较应该就是求解flag的关键,可以看出来有四个未知数,求解也是非常简单,z3直接求解即可:fromz3import*x,y,z,w=BitVecs("xyz......
  • BUUCTF GWCTF2019 re3
    挺有意思的一题,记录一下主要思路为smc解密+AES算法扔进ida后找到主函数:发现函数地址异或,推测为smc,先按d转化为数据,然后直接使用python脚本解密:fromida_bytesimport*ea=0x402219foriinrange(0,224):patch_bytes(ea+i,bytes(ea+i)^0x99)选中按p生成......
  • BUUCTF-Exec(Web)
    1.相关知识Ping命令ping命令通常用来作为网络可用性的检查。ping命令可以对一个网络地址发送测试数据包,看该网络地址是否有响应并统计响应时间,以此来测试网络的连通情况和测试网络速度。ping命令执行后会显示一系列Replyfrom或者Requesttimeout这样的结果。前者表示与对方......
  • BUUCTF-Include(Web)
    一、Include11.相关知识PHP://filterphp://filter是php中独有的一种协议,它是一种过滤器,可以作为一个中间流来过滤其他的数据流。通常使用该协议来读取或者写入部分数据,且在读取和写入之前对数据进行一些过滤,例如base64编码处理,rot13处理等。具体详见:https://blog.csdn.net......
  • BUUCTF 6.[第五空间2019 决赛]PWN5 1
    拿到题目,先运行一下很明显地出现了一个重复我们的输入,以及一个判断的过程,那么我们可以猜测可能会有栈溢出漏洞,让我们继续保护是开了一个canary以及nx,大概率就不是栈溢出漏洞了,因为canary的存在会使栈溢出非常麻烦。我们看一下IDA存在栈溢出漏洞,但是由于长度不够,我们无法......
  • BUUCTF 5.level0
    很简单的一道栈溢出的题(不知道为啥解题人数却比前几个少)直接开干:看不出啥来保护只开了NX,我们看一下IDA很明了的一道题,直接秒exp:flag:......
  • BUUCTF 5.pwn1_sctf_2016
    拿到题目首先先运行。我们发现他是将我们输入的重新输出出来,但是第二次运行时,我输入超长字符串后,仅仅只是输出了一部分,所以我们可以猜测程序中应该有检测长度的部分,我们再检查一下保护机制。我们发现仅仅只是开了一个nx保护,那么我们直接看IDA我们发现主函数中仅仅只是调用......
  • BUUCTF 4.ciscn_2019_n_1
    拿到题目首先先运行程序我们发现给了我们一个数字,我们猜测应该是一个条件判断的程序,然后我们检查一下保护机制我们发现只开了NX(不可执行)保护,那我们直接看IDA就行了。main函数只是设定了无缓冲模式,以及调用了一个func函数,然后我们看一下我们可以看到gets和我们想要的flag,......
  • BUUCTF 3.warmup_csaw_2016
    拿到题目,我们先运行一下我们发现这道题的样子和BUUCTF的rip很像,一样是让我们输入,一样是在输入超长字符串后程序会崩溃,所以我们可以猜测是一道栈溢出的问题,我们来看一下保护机制我们发现依旧是几乎没开保护机制,所以大概率是一道栈溢出的题。我们看一下IDA我们发现最后的get......