Versions Compared

Key

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

...

  • 다음과 같이 fd영역의 값을 변경할 수 있습니다.
    • 공격대상이 될 영역에 해제된 Heap과 같은 크기 값(0x80)이 저장되어 있어야 합니다.
    • 할당받은 4번째 Heap영역에 'A'*8개를 입력해서, 첫번째 free chunk의 fd값이 변경되었습니다.
    • set 명령어를 이용해 fd영역에 공격대상 주소 값을 저장합니다.
      • stack_var(0x7fffffffe220) - prev_size(0x8) = 0x7fffffffe218

  • fd영역의 값 변경으로 fastbins의 Single list에 변화가 발생합니다.
    • 0x602000 → 0x7fffffffe218 → 0x602010 → 0x0
    • 0x7fffffffe218 영역이 fastbinsY에 등록되어 0x602000의 다음 free chunk로 인식됩니다.
    • 0x7fffffffe218 + 0x10 영역이 0x7fffffffe218의 fd영역으로 인식됩니다.
      • 0x7fffffffe218 + 0x10 영역에 저장된 값은 0x602010입니다.
    • 0x602010영역 또한 0x7fffffffe218과 동일하게 다음 free chunk로 인식됩니다.
      • 0x602010 + 0x10 영역에 저장된 값은 0x0입니다.
Code Block
titleBreak point - 0x4006f8
gdb-peda$ c
Continuing.
buf4 size : 8
128

Breakpoint 6, 0x00000000004006f8 in main ()
gdb-peda$ x/gx 0x7fffffffe220
0x7fffffffe220:	0x0000000000000080
gdb-peda$ ni
AAAAAAAA

0x00000000004006fd in main ()
gdb-peda$ x/4gx 0x602000
0x602000:	0x0000000000000000	0x0000000000000081
0x602010:	0x4141414141414141	0x0000000000000000

gdb-peda$ set *0x602010 = 0x7fffffffe220 - 0x8
gdb-peda$ set *0x602014 = 0x7fff
gdb-peda$ x/gx 0x602010
0x602010:	0x00007fffffffe218
gdb-peda$ x/4gx 0x602000
0x602000:	0x0000000000000000	0x0000000000000081
0x602010:	0x00007fffffffe218	0x0000000000000000

...