LOB
[Load Of Buffer overflow]
#01 :gate->gremlin
일단 예전에 정리했던 걸 가져왔는데ㅋㅋㅋㅋ지금 보니까 답이 없다.^^;;
일단 그대로 쓰다가 중간중간 수정해야겠다.
일단 환경 구축을 하기 위해서 저번에 팀원들과 공유했던 vmx파일으로 일단 LOB Redhat을 구축하고, 찾아보니 LOB Redhat은 bash버전이 낮아서 쉘 상에서 \xff를 입력시 \x00으로 처리해버리는 문제가 있다하여, root / hackerschoolbof로 접속하여, vi 편집기로 /etc/passwd를 수정하였다. :%s/bash/bash2/를 명령어를 vi커맨드 모드로 실행하는데, %는 파일 전체를 의미하고, s는 문자열 치환시작, bash/bash2는 bash를 bash2로 치환한다는 내용이다.
그 후로 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를 조금 쓸 줄 알아야 했다.(^^)
![](https://blog.kakaocdn.net/dn/b1nOCk/btqtT5GFewA/buTHAmISxmTwEA0cEO9371/img.png)
이런 식이었고, 중요한 부분은
![](https://blog.kakaocdn.net/dn/FvmwZ/btqtWi5FnB5/1CdZeeTONAsPcRGsgm3KPk/img.png)
이부분인데,
스택이 이런 식임을 확인할 수 있다.
![](https://blog.kakaocdn.net/dn/bayQZv/btqtT6yNO4v/mRj9ztxtHFxfx2YFVfgnyk/img.png)
사실 ebp+8부터는 잘 모르겠다. (ㅋㅋㅋㅋ)
어쨌든 260바이트를 채우면 된다는 것을 알 수 있다.
나는 저 비어있는 260바이트에 쉘코드를 입력하고, return addr에 쉘코드의 주소를 주려고 했는데 잘 안되었던 것이다.
![](https://blog.kakaocdn.net/dn/broBEn/btqtS7dGEMC/CYJHzNRxjfyk3Fx4X4Y6iK/img.png)
일단 strcpy가 작동한 이후에 buffer에 저장이 될것이므로, main 59에 브레이크포인트를 걸어서 NOP을 입력해서 run해보았다. 대충 0xbffff9e0쯤에 쉘코드를 넣고 정확하지 않으니 NOP을 앞뒤로 넣어서 해보려고 했다….근데 왜 안될까(ㅋㅋㅋㅋㅋㅋㅋㅋㅋ)
옛날에 내가 쓴 내용은 여기가 끝이다.
이제 와서 다시 풀어보았다. 레드햇 이미지 파일을 삭제해서 다시 깔아서 다시 환경 구축했다..
일단 카피해서 gdb 하자.
![](https://blog.kakaocdn.net/dn/GXcCi/btqtUA7nnQk/uZvuZlSV7SOHLaGBtF7tz0/img.png)
버퍼가 256임을 알 수 있다.
![](https://blog.kakaocdn.net/dn/sN2Uy/btqtUBFdmSU/9VjOwOuVv8ogNQIaNOzUvk/img.png)
음 환경변수 등록을 막는 코드가 없으니까 환경변수로 쉘코드 올리기로 했다.
![](https://blog.kakaocdn.net/dn/b8h9Gy/btqtWH5hnMC/lXUcBKSChf0eCpHCtSJ2G1/img.png)
쉘코드 주소는 0xbffffe40으로 잡기로 했다. NOP을 넉넉히 넣었으니까^^
![](https://blog.kakaocdn.net/dn/bkmrpj/btqtUkcBHHB/N1Ph1p2vwVCMPee2mV81WK/img.png)
이걸 왜 못했을까..
성공:D
![](https://blog.kakaocdn.net/dn/dGMIBG/btqtT7q1di0/PUMg0OfgBgKjDJzZoTliqk/img.png)
'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 |