LOB - 5.orc -> wolfman

2018. 7. 5. 18:12WarGame/LOB

5번째 LOB이다. 중간에 조금 쉬긴하였지만 LOB는 여전히 재미있다.


그럼 소스코드부터 확인하자



소스코드를 보니 전과 다 비슷한데 맨 아랫줄에 metset(buffer, 0, 40);이 추가되었다.

검색해보니 buffer을 초기화하는 함수라고 한다.


버퍼를 초기화하는 함수라는 것을 알았으니 버퍼에는 값을 넣어주어도 소용이 없다는 것을 알았다.


argv[2]의 시작값을 리턴값으로 돌려주고, 그 부분에 쉘코드를 넣으면 실행이 될 것 같다.


그럼 우리가 지켜야하는 규칙을 정리해보자



1. argc가 2이상이여야한다. (일단 길게넣자)

2. 환경변수 설정 불가능

3. argv1의 48번째 는 "\xbf"여야한다.

4. 버퍼는 초기화된다.



1. gdb로 메모리 값을 보기 위해 원본파일을 복사해준다



2. 복사한 파일을 gdb로 실행시켜주고, main에 bp를 건다.



3. 앞에 48byte를 "\xbf"로 채워주어서 3번째 조건을 만족시키고, 2번째 argv의 시작주소를 구하기위해 "\x90"*1000을 넣는다.



4. $esp로 부터 100byte의 값을 불러와서 2번째 메모리 시작주소를 본다. ("\x14\xfc\xff\xbf")




5. 쉘코드를 구해 공격을 넣어준다.



'WarGame > LOB' 카테고리의 다른 글

LOB - 7.darkelf -> orge  (931) 2018.07.05
LOB - 6.wolfman -> darkelf  (1062) 2018.07.05
LOB - 4. goblin -> orc  (0) 2018.07.05
LOB - 3. cobolt -> goblin  (0) 2018.07.05
LOB - 2. gremlin -> cobolt  (0) 2018.07.05