利用堆栈缓冲区溢出,错误访问段文本的访问地址

时间:2013-12-29 15:51:51

标签: c assembly exploit

我通过文章"Smashing The Stack For Fun And Profit"学习了漏洞利用 我对这个例子有一些疑问

void main() {
__asm__("
    jmp    0x2a                     # 3 bytes
    popl   %esi                     # 1 byte
    movl   %esi,0x8(%esi)           # 3 bytes
    movb   $0x0,0x7(%esi)           # 4 bytes
    movl   $0x0,0xc(%esi)           # 7 bytes
    movl   $0xb,%eax                # 5 bytes
    movl   %esi,%ebx                # 2 bytes
    leal   0x8(%esi),%ecx           # 3 bytes
    leal   0xc(%esi),%edx           # 3 bytes
    int    $0x80                    # 2 bytes
    movl   $0x1, %eax               # 5 bytes
    movl   $0x0, %ebx               # 5 bytes
    int    $0x80                    # 2 bytes
    call   -0x2f                    # 5 bytes
    .string \"/bin/sh\"             # 8 bytes
");
}

在调用-0x2f之后,寄存器%esi具有字符串“/ bin / sh”的地址,这个也是.text的地址。我的工具总是在行代码崩溃:

movl %esi,0x8(%esi) # 3 bytes

如何访问和使用属于section .text的地址,例如。

0 个答案:

没有答案