AFL的LLVM_Mode

1. 简介

  • AFL(American Fuzzy Lop)是一款基于覆盖引导(Coverage-guided)的模糊测试工具(Fuzzer)。它通过记录输入样本的代码覆盖率,从而调整输入样本以提高覆盖率。
  • AFL既可以对源码进行编译时插桩,也可以使用AFL的QEMU mode对二进制文件进行插桩。
  • 今天的主题不是AFL本身,而是它的LLVM_mode模式。使用编译出的afl-clang-fast(LLVM_mode版afl-clang)编译程序,可以获得更快的Fuzzing速度。
阅读更多...

代码优化与LLVM IR pass

简介

  • LLVM IR(Intermediate Representation) 是LLVM的一种中间表示,也可以将它视为中间代码。

    中间代码 的生成是为了便于更好的 代码优化

  • LLVM Pass 是LLVM代码优化(optimization)中的一个重要组成部分。为便于理解,我们可以将Pass看作一个又一个的模块,各个Pass可以通过IR获取信息为下一个Pass做好准备,又或者直接对中间代码进行优化。

    代码优化的实质:分析(Analysis)+转换(Transformation)

  • CSCD70是多伦多大学涉及代码优化的一门课程,配套 github上的课件与作业

注:本文所设计到的代码优化类型并不全面,仅记录下笔者所学的类型。

阅读更多...

字符串类型混淆漏洞的研究

1. 简介

  • 现在几乎已经很少会看到关于恶意字符串所造成的漏洞了,更不用说那些可利用的字符串了
  • 这并不奇怪,因为SDL(安全开发生命周期)已经禁止了所有不安全的函数
  • 但是,如果开发人员错误地使用了增强的安全功能,仍然可能造成严重的安全漏洞。
  • 在adobe acrobat Reader DC中,开发人员已经实现了一些增强的安全字符串处理函数。但开发人员有可能会错误使用这些函数。
  • 在一般情况下,这不是什么大问题。然而,在这个特定的软件中处理字符串时,类型混淆的情况也很容易被触发。
  • 在某些场景中,可以利用这两个条件来实现代码执行。
阅读更多...

ACTF五校联赛

1. Pwn

1. secret_of_girlfriend

分析

  • 程序中有三处地方内藏flag,两处在data段,一处在bss。其中有两处会被销毁,只剩下一处flag还存在。
  • 程序内部有缓冲区溢出,开启Canary保护
  • 通过缓冲区溢出,覆盖栈上environ处指向程序名称的指针为flag地址,并通过___stack_chk_fail将剩下一处flag打印出来就好

实际上如果三处flag都被覆盖,仍然有办法可以得到flag。

阅读更多...
  • Copyrights © 2020-2024 Kiprey
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~