PWN入门系列(3)ROP的利用

ret2shellcode

原理

ret2shellcode,即控制程序shellcode代码。shellcode指的是用于完成某个功能的汇编代码,如:call等,常见的功能主要是获取目标系统的shell。如果想执行shellcode,需要对应的binary在运行时,shellcode所在的区域具有可执行权限。

举例

还是以bammboofox的ret2shellcode为例
附:ret2shellcode
第一步还是进行checksec

giantbranch@ubuntu:~/Desktop/PWN$ checksec ret2shellcode 
[*] '/home/giantbranch/Desktop/PWN/ret2shellcode'
    Arch:     i386-32-little
    RELRO:    Partial RELRO
    Stack:    No canary found
    NX:       NX disabled
    PIE:      No PIE (0x8048000)
    RWX:      Has RWX segments

可以看到没有开启数据执行保护(NX)和其他的保护措施,并且可读可写可执行的部分存在。
在拖到IDA里面看一下

在这里插入图片描述
还是老演员gets先生了~
仍然是最基本的栈溢出漏洞,不过这次害将对应的地府通过strcpy函数复制到buf2中,不妨来看一下buf2
在这里插入图片描述看到buf2在bss段。
看看bss段所在的buf2能否可执行呢?
首先将文件的权限提升一下。

giantbranch@ubuntu:~/Desktop/PWN$ chmod  a+x ret2shellcode 
giantbranch@ubuntu:~/Desktop/PWN$ gdb ret2shellcode 

在main函数设下断点:

gdb-peda$ b main
Breakpoint 1 at 0x8048536: file ret2shellcode.c, line 8.

r查看一下

Starting program: /home/giantbranch/Desktop/ret2shellcode 

[----------------------------------registers-----------------------------------]
EAX: 0xf7fb8dbc --> 0xffffd0dc --> 0xffffd2cf ("XDG_VTNR=7")
EBX: 0x0 
ECX: 0x245de9ae 
EDX: 0xffffd064 --> 0x0 
ESI: 0xf7fb7000 --> 0x1b1db0 
EDI: 0xf7fb7000 --> 0x1b1db0 
EBP: 0xffffd038 --> 0x0 
ESP: 0xffffcfb0 --> 0xffffcfde --> 0xffff0000 --> 0x0 
EIP: 0x8048536 (<main+9>:	mov    eax,ds:0x804a060)
EFLAGS: 0x283 (CARRY parity adjust zero SIGN trap INTERRUPT direction overflow)
[-------------------------------------code-------------------------------------]
   0x804852e <main+1>:	mov    ebp,esp
   0x8048530 <main+3>:	and    esp,0xfffffff0
   0x8048533 <main+6>:	add    esp,0xffffff80
=> 0x8048536 <main+9>:	mov    eax,ds:0x804a060
   0x804853b <main+14>:	mov    DWORD PTR [esp+0xc],0x0
   0x8048543 <main+22>:	mov    DWORD PTR [esp+0x8],0x2
   0x804854b <main+30>:	mov    DWORD PTR [esp+0x4],0x0
   0x8048553 <main+38>:	mov    DWORD PTR [esp],eax
[------------------------------------stack-------------------------------------]
0000| 0xffffcfb0 --> 0xffffcfde --> 0xffff0000 --> 0x0 
0004| 0xffffcfb4 --
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值