๐คROP Emporium - Full
Ret2Win
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 แป ฤรขy.
+--------------------------------------------------------------------------------------------+
Split
Done

Link walkthrought แป ฤรขy.
+--------------------------------------------------------------------------------------------+
Callme
Done

Link walkthrought แป ฤรขy.
+--------------------------------------------------------------------------------------------+
Write4
Done

Link walkthrought แป ฤรขy.
+--------------------------------------------------------------------------------------------+
Badchars
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
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
