Angr符号执行练习–SecuInside 2016 mbrainfuzz

💡 原文中文,约17000字,阅读约需41分钟。
📝

内容提要

本文介绍了使用angr和radare2/r2pipe进行静态分析和漏洞利用的过程。通过分析sample_1中的栈溢出,构造特定的argv[1]以触发漏洞,并利用angr求解约束条件,生成shellcode和最终的Exploit。同时提到需手动修改sample_1以使.bss可执行。

🎯

关键要点

  • 本文介绍了使用angr和radare2/r2pipe进行静态分析和漏洞利用的过程。
  • 通过分析sample_1中的栈溢出,构造特定的argv[1]以触发漏洞。
  • 利用angr求解约束条件,生成shellcode和最终的Exploit。
  • 需手动修改sample_1以使.bss可执行。
  • sample_1存在由argv[1]触发的经典栈式缓冲区溢出。
  • 使用r2pipe进行静态分析,提取函数调用和约束条件。
  • angr CFG静态分析方案用于分析控制流图。
  • 针对每个sub_400XXX求解rdi/rsi/rdx/rcx的值。
  • 使用pwn模块生成shellcode以提高可维护性。
  • 生成最终Exploit时需考虑局部变量和返回地址。
  • Patch sample_1以使.bss可执行,解决SIGSEGV问题。
  • 修改原solve.py以避免某些函数返回None。
  • simulation_manager是path_group的升级版,path_group已过时。

延伸问答

如何使用angr进行静态分析和漏洞利用?

使用angr进行静态分析和漏洞利用的过程包括分析样本中的栈溢出,构造特定的argv[1]以触发漏洞,并利用angr求解约束条件生成shellcode和最终的Exploit。

sample_1中的栈溢出是如何触发的?

sample_1中的栈溢出是通过sscanf从argv[1]读取16进制字节流并灌入.bss中的固定位置缓冲区,导致缓冲区溢出。

如何生成shellcode以提高可维护性?

可以使用pwn模块生成shellcode,通过指定要执行的命令来提高可维护性。

为什么需要手动修改sample_1使.bss可执行?

需要手动修改sample_1使.bss可执行是因为默认情况下.bss只有读写权限,没有执行权限,这会导致shellcode无法执行。

r2pipe和angr在静态分析中的主要区别是什么?

r2pipe的静态分析速度较快,而angr的CFG静态分析速度较慢,angr在处理时耗时几乎是r2pipe的10倍。

如何使用angr求解sub_400XXX中的约束条件?

使用angr求解sub_400XXX中的约束条件时,需要指定起始地址和结束地址,以及需要避免的返回地址和符号变量。

➡️

继续阅读