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

Pwn_9 作业讲解

时间:2018-03-07 13:30:34      阅读:641      评论:0      收藏:0      [点我收藏+]

标签:start   intel   src   from   alarm   输出   nbsp   div   bsp   

pwn1

技术分享图片针对Alarm clock进行处理

  • 修改程序的16进制数值
  • Hook函数

技术分享图片

将alarm函数替换掉

在linux下使用命令 sed -i s/alarm/isnan/g ./pwn1

检查保护机制

技术分享图片

checksec --file ./pwn1

NX 数据保护权限 可写的不可执行

查看编译

file ./pwn1

./pwn1: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=5243dd9fb1db881e7845015ab0b1d643857ba43b, stripped

动态编译

确定使用return to library

  • 确定libc的基地址,通过puts函数打印.got.plt地址中的值,输出实际地址 libc_base =  address – offset
  • 调用libc中的system函数 构造getshell
  • 一个Rop是无法完成的,所以需要两个rop,第一个rop泄露基地址,第二个rop构造getshell

技术分享图片小端置序

使用ipython Tab键自动补全


from pwn import *

p = ELF(‘./pwn’)

hex(p.symbols(‘puts’))

hex(p.got[‘__libc_start_main‘])  #获取.got.plt 地址

Pwn_9 作业讲解

标签:start   intel   src   from   alarm   输出   nbsp   div   bsp   

原文地址:https://www.cnblogs.com/rookieDanny/p/8521595.html

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