'Gremlin'에 해당되는 글 2건

  1. 2019.04.26 [LOB] 2. gremlin -> cobolt
  2. 2019.04.26 [LOB] 1. Gate -> gremlin
System/LOB2019. 4. 26. 18:09

 

▲ LOB 두번째 문제. gremlin -> cobolt 문제이다. 파일은 cobolt.c와 cobolt 두개가 있다.

▲ 소스코드로는 buffer를 16만큼 할당해 주고 인자값을 argv로 받는다. 그리고 strcpy로 첫번째 인자 값을 buffer에 복사해 준다. 우리는 해당 strcpy를 공격지점으로 잡는다.

▲ 이후는 1번 문제와 같다. EGG에 쉘을 넣은 환경변수를 만들고, 해당 시작 주소를 알아내 nop*(16+4) + EGGShell 을 입력해준다.

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

6. wolfman -> darkelf  (0) 2019.04.26
[LOB] 5. orc -> wolfman  (0) 2019.04.26
[LOB] 4. goblin -> orc  (0) 2019.04.26
[LOB] 3. cobolt -> goblin  (0) 2019.04.26
[LOB] 1. Gate -> gremlin  (0) 2019.04.26
Posted by BadSchool
System/LOB2019. 4. 26. 18:05

 

▲ Lob의 시작. 첫번째 인 gate -> gremlin 문제이다. 파일은 gremlin.c, gremlin 두가지가 있다.

▲ gremlin.c와 gremlin의 disasm내용, 딱 봐도 취약한 strcpy가 존재한다. 우리는 이를 공격한다.

▲ disasm을 확인해 보자. 시작에서 sub로 esp를 0x100 = 256_ten 만큼의 버퍼를 할당 해 주었다. 그렇다면 그 앞에 차례로 SFP[4], RET[4]가 존재한다. 

두가지 방법이 있는데 buf에 shellcode에 넣거나 환경변수에 shellcode에 넣는 방법 두가지가 있다. 나는 환경변수에 넣는 EGG Shell 공격 방법을 사용한다.

▲ 첫번째 명령어로 EGG라는 환경 변수에 공격 페이로드를 넣었다. 그리고 간단한 C코드 getenv()로 EGG쉘의 주소값을 알아낸다.

▲ EGG쉘의 시작주소는 0xBFFFFE43. 따라서 공격 페이로드는 nop*(256+4)개 + 0xBFFFFE43이 된다.

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

6. wolfman -> darkelf  (0) 2019.04.26
[LOB] 5. orc -> wolfman  (0) 2019.04.26
[LOB] 4. goblin -> orc  (0) 2019.04.26
[LOB] 3. cobolt -> goblin  (0) 2019.04.26
[LOB] 2. gremlin -> cobolt  (0) 2019.04.26
Posted by BadSchool