记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

CTF逆向专题连载之虚拟机vm混淆(3)

2020-12-19 12:12

前言

在前边的连载两篇文章我们分别讲了两种动态调试的方法,现在讲一种自动化的方法:angr

什么是angr?

angr是一个基于python的二进制漏洞分析框架,它将以前多种分析技术集成进来,方便后续的安全研究人员的开发。既能动态执行,也能静态分析。在CTF逆向中简直是“偷懒”的神器!
简而言之,angr能够自己模拟程序执行,走到我们所给出的地址,跑出flag,实现CTF逆向题的解决。
实现一个angr跑出flag的步骤如下:
  1. 加载文件

  2. 初始化入口

  3. 给入口地址或字节 开始设置模拟执行

  4. 告诉程序要执行到的地方

  5. 出结果

  6. 输出结果

下面我们用简单例题讲解angr的使用
网鼎杯青龙组signal
搜索字符串定位到main函数,并进入红框处函数

根据graph可以看出题目是虚拟机。同时查看伪代码

分析可知:该题如果执行至地址0x004017A5,则代表着题目解答正确。因此我们可以使用angr,让他尝试运行至地址0x004017A5处。

代码如下:
In [1]: import angr                                                             In [2]: p = angr.Project("./signal.exe")    # 加载文件                                     In [3]: init_state = p.factory.entry_state()  # 初始化入口                                  In [4]: sm = p.factory.simgr(init_state)    # 给入口 开始设置模拟执行                                     In [5]: sm.explore(find = 0x004017A5)  # 告诉程序要执行到的地方 In [6]: found_state = sm.found[0]      # 出结果 In [8]: found_state.posix.dumps(0)     # 输出结果 # 出flagOut[8]: b'757515121f3d478\x00\x01\x08\x00\x00\x00\x02I\x19\x00\x0c\x00J\x1a\x02\x00\x02\x02\x9a\x01\x00)\x02\x00\x00\x00\x01\x08)*\x00\x00\x08\x83\x08\x00*F\x08\x8a\x00\x08\x02\x00\x08'
验证正确

总结:

  1. angr能够让我们省去逆向的时间,但也有不能用的时候,有其局限性。

  2. 文中并没有多介绍angr,在该题中的应用也只是最简单的应用方法。还有大量的相关知识需要学习。


文章系列链接:

CTF逆向专题连载之虚拟机vm混淆(1)


题目链接:

https://pan.baidu.com/s/1Cj3DVssh8ZOiZpWax1UDmQ

提取码:9t5k

(题目出自2020网鼎杯青龙组)



知识来源: https://mp.weixin.qq.com/s?__biz=MzUzMDUxNTE1Mw==&mid=2247487169&idx=1&sn=03dde9ae3d709e9751a2b039fbe0ba0f

阅读:752927 | 评论:0 | 标签:逆向

想收藏或者和大家分享这篇好文章→复制链接地址

“CTF逆向专题连载之虚拟机vm混淆(3)”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

黑帝公告 📢

十年经营持续更新精选优质黑客技术文章Hackdig,帮你成为掌握黑客技术的英雄

🙇🧎¥由自富财,长成起一↓

标签云 ☁

本页关键词 💎