slide-image

LOB

[Load Of Buffer overflow]

#01 :gate->gremlin

 

 

일단 예전에 정리했던 걸 가져왔는데ㅋㅋㅋㅋ지금 보니까 답이 없다.^^;;

일단 그대로 쓰다가 중간중간 수정해야겠다.

 

일단 환경 구축을 하기 위해서 저번에 팀원들과 공유했던 vmx파일으로 일단 LOB Redhat을 구축하고, 찾아보니 LOB Redhatbash버전이 낮아서 쉘 상에서 \xff를 입력시 \x00으로 처리해버리는 문제가 있다하여, root / hackerschoolbof로 접속하여, vi 편집기로 /etc/passwd를 수정하였다. :%s/bash/bash2/를 명령어를 vi커맨드 모드로 실행하는데, %는 파일 전체를 의미하고, s는 문자열 치환시작, bash/bash2bashbash2로 치환한다는 내용이다.

 

그 후로 netconfig명령으로 네트워크 설정을 하였다. vm웨어에서는 자동으로 ip를 부여해주니, DHCP를 선택하였다. 그 다음 /sbin/ifconfig 명령어로 내부 아이피 주소를 확인해서 xshell로 연결하였다.

 

기본은 gate / gate이므로 로그인해주면

접속 성공!

 

일단 ls했는데 gremlin프로그램이 gremlin.c 컴파일이겠거니 해서 cat해보았다.

...더보기

 

일단 gremlin은 뭔지 잘 모르겠고(ㅋㅋㅋㅋ이때는 몰랐나보다), 밑의 코드는 인자로 받은 것을 buffer에 저장하라는 c코드여서 쉘코드를 작성해서 그 쉘코드의 주소를 인자로 주기로 했다.

(이때는 쉘코드를 찾지 못했나보다. 일단 이걸 이용했다.)

\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\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

나는 에그쉘을 이용해서 이 쉘코드를 환경변수로 설정해서 하려고 했더니 정확한 주소값을 찾을 수 없어서(ㅋㅋㅋㅋㅋ) NOP 슬라이드를 이용하기로 했다. 그러기 위해서는 gdb를 조금 쓸 줄 알아야 했다.(^^)

이런 식이었고, 중요한 부분은

이부분인데,

스택이 이런 식임을 확인할 수 있다.

사실 ebp+8부터는 잘 모르겠다. (ㅋㅋㅋㅋ)

어쨌든 260바이트를 채우면 된다는 것을 알 수 있다.

나는 저 비어있는 260바이트에 쉘코드를 입력하고, return addr에 쉘코드의 주소를 주려고 했는데 잘 안되었던 것이다.

일단 strcpy가 작동한 이후에 buffer에 저장이 될것이므로, main 59에 브레이크포인트를 걸어서 NOP을 입력해서 run해보았다. 대충 0xbffff9e0쯤에 쉘코드를 넣고 정확하지 않으니 NOP을 앞뒤로 넣어서 해보려고 했다….근데 왜 안될까(ㅋㅋㅋㅋㅋㅋㅋㅋㅋ)

 

옛날에 내가 쓴 내용은 여기가 끝이다.

이제 와서 다시 풀어보았다. 레드햇 이미지 파일을 삭제해서 다시 깔아서 다시 환경 구축했다..

일단 카피해서 gdb 하자.

버퍼가 256임을 알 수 있다.

 

음 환경변수 등록을 막는 코드가 없으니까 환경변수로 쉘코드 올리기로 했다.

 

쉘코드 주소는 0xbffffe40으로 잡기로 했다. NOP을 넉넉히 넣었으니까^^

이걸 왜 못했을까..

성공:D

 

 

'Wargame > LOB(Redhat)' 카테고리의 다른 글

[LOB] cobolt->goblin  (0) 2019.03.28
[LOB] gremlin->cobolt  (0) 2019.03.28
[LOB] golem->darkknight  (0) 2019.03.22
[LOB] skeleton->golem  (0) 2019.03.21
[LOB] vampire->skeleton  (0) 2019.03.19