LOB - 6.wolfman -> darkelf
2018. 7. 5. 18:12ㆍWarGame/LOB
바로 본론으로 들어가겠습니다.
먼저 코드를 보죠
이전과 다른 부분은 argv[1] 의 길이가 48이 넘어가면 안되는 것입니다.
하지만? 이때까지 풀었던 방법으로는 48길이가 넘어간 적이 없었기 떄문에 이전과 동일하게 풀면 될 것 같습니다. (간단)
따라서 조건만 정리해 보면
1. argc가 2이상이여야한다. (일단 길게넣자)
2. 환경변수 설정 불가능
3. argv1의 48번째 는 "\xbf"여야한다.
4. 버퍼는 초기화된다.
5. argv[1]의 길이가 48이 넘어가면 안된다.
그럼 기존과 동일하게
1. gdb를 실행시키기 위해 파일을 복사한다
2. 복사한 파일을 gdb로 열어주고, main에 bp를 건다.
3. 앞에 48byte를 "\xbf"로 채워주어서 3번째 조건을 만족시키고, 2번째 argv의 시작주소를 구하기위해 "\x90"*1000을 넣는다.
4. $esp로 부터 100byte의 값을 불러와서 2번째 메모리 시작주소를 본다. ("\f4\xbf\xff\xbf")
5. 쉘코드를 구해 공격을 넣어준다.
(grin)
'WarGame > LOB' 카테고리의 다른 글
LOB - 8. orge -> troll (948) | 2018.07.05 |
---|---|
LOB - 7.darkelf -> orge (931) | 2018.07.05 |
LOB - 5.orc -> wolfman (1069) | 2018.07.05 |
LOB - 4. goblin -> orc (0) | 2018.07.05 |
LOB - 3. cobolt -> goblin (0) | 2018.07.05 |