欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[翻译]使用AFL进行fuzz

[翻译]使用AFL进行fuzz

使用AFL进行fuzz

回顾早期的软件漏洞,在攻防之间的较量相当精彩。现在IT公司和安全实验室会使用强大的Fuzz工具寻找软件缺陷或挖掘漏洞。新防御技术提出的同时,反防御技术也随之出现。在这篇文章中,我们将了解软件漏洞利用的整个过程:从使用American Fuzzy Lop(AFL)来进行fuzz,到使用gdb-pedapwntools调试编写漏洞利用脚本。为此,我们编写一个有明显缓冲区溢出漏洞的64位程序,然后对其进行fuzz,找到漏洞,分析结果,并为其编写漏洞利用脚本。这里也提供了视频资源

安装AFL

我们使用Ubuntu64位系统,通过以下命令即可成功安装AFL:

wget http://lcamtuf.coredump.cx/afl/releases/afl-latest.tgz

tar -xvf afl-latest.tgz

cd afl-2.52b/

make

sudo make install

用afl-gcc编译有漏洞的vuln1程序

虽然可以在网上找一个有漏洞的程序,但为了完全了解细节,我们还是自己写一个简单的C程序。这个程序使用了2个字符串缓冲区,每个缓冲区的长度为32字节,分别用于存放usernamepassword。为了获取用户输入,我们使用不安全的gets()函数,它不会去检查边界,这会导致缓冲区溢出。

#include <stdio.h>

#include <string.h>

int main(void)

{

    char login[32];

    char passwd[32];

    printf("Login: \n");

    gets(login);

    printf("Password: \n");

    gets(passwd);

    if (strcmp(login, "root") == 0) {

        if (strcmp(passwd, "1qazxsw2") == 0) {

            printf("Access Granted.\n");

            return 0;

        }

    }

    printf("Access Denied.\n");

    return 1;

}

执行该程序,会要求输入usernamepassword。输入被存放到loginpasswd变量中。然后使用strcmp()和正确的值比较,如果输入值为"root"和"1qazxsw2",控制台会输出"Access Granted.",否则输出"Access Denied."。

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功