The Lord of The BOF - Redhat 클리어!!

2011/02/13 00:22

사용자 삽입 이미지
[그림1] death_knight dropped item

해커스쿨의 "The Lord of The BOF- Redhat"1을 지난 달부터 1년 만에 다시 도전하여 클리어했습니다. 작년 3월에 잠시 도전했었지만, 그 당시에 큰 벽에 가로막혀서 1년 간 손을 놓아었지요.

문제들은 리눅스 시스템과 BOF에 관해 공부를 할 수 있도록 짜임새가 좋습니다. BOF 기초부터 시작하여 리눅스 시스템의 스택 구조를, RTL 기법을 배울 수 있습니다. 그리고 PLT와 GOT를 이해할 수 있고, SYS_LC_MESSGES라는 특별한 영역도 알 수 있었네요.

마지막 Level 20은 Remote BOF 문제였습니다. 그 이전까지의 문제들은 Local BOF였시 때문에 마지막 문제는 다르게 접근해야 풀 수 있더군요. 문제 20개를 모두 풀면 [그림1]과 같은 화면을 볼 수 있습니다.

Monster List
LEVEL1 (gate -> gremlin) :  simple bof
LEVEL2 (gremlin -> cobolt) : small buffer
LEVEL3 (cobolt -> goblin) : small buffer + stdin
LEVEL4 (goblin -> orc) : egghunter
LEVEL5 (orc -> wolfman) : egghunter + bufferhunter
LEVEL6 (wolfman -> darkelf) : check length of argv[1] + egghunter + bufferhunter
LEVEL7 (darkelf -> orge) : check argv[0]
LEVEL8 (orge -> troll) : check argc
LEVEL9 (troll -> vampire) : check 0xbfff
LEVEL10 (vampire -> skeleton) : argv hunter
LEVEL11 (skeleton -> golem) : stack destroyer
LEVEL12 (golem -> darkknight) : sfp
LEVEL13 (darkknight -> bugbear) : RTL1
LEVEL14 (bugbear -> giant) : RTL2, only execve
LEVEL15 (giant -> assassin) : no stack, no RTL
LEVEL16 (assassin -> zombie_assassin) : fake ebp
LEVEL17 (zombie_assassin -> succubus) : function calls
LEVEL18 (succubus -> nightmare) : plt
LEVEL19 (nightmare -> xavis) : fgets + destroyers
LEVEL20 (xavis -> death_knight) : remote BOF
크리에이티브 커먼즈 라이센스
Creative Commons License

6l4ck3y3 0x03 Linux RCE ,

Trackback Address:이 글에는 트랙백을 보낼 수 없습니다