cobolt 2

[LOB] cobolt → goblin

cobolt / hacking exposed로 접속 goblin.c 파일을 보면 저번과 비슷한 문제지만 이번에는 gets함수로 문자열을 받아온다. 버퍼의 크기가 16바이트이기 때문에 이번에도 환경변수를 이용해 문제를 풀어볼 것이다. export로 환경변수를 설정하고 export shellcode=`python -c 'print"\x90"*100+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"'` getenv함수로 쉘 코드의 주소를 구한다. 쉘코드 주소 : bfffff09 gets함수로 문자열을 받아온다는 걸 간과하고 저번처럼 입력했다가 실행이 안되는 것을 알았다. 이번에..

[LOB] gremlin → cobolt

gremlin / hello bof world로 로그인 $bash2 cobolt.c 파일을 확인했다. buffer를 16 할당받고 인자를 버퍼에 복사해 출력해주는 코드인 것 같다. gremlin 문제와 마찬가지로 strcpy함수때문에 bof 취약점이 발생할 수 있다. 일단 버퍼의 크기가 16바이트이므로 버퍼에 쉘코드는 넣을 수 없다. 환경변수를 이용해 문제를 풀어보자. 환경변수 등록 / 해제 방법 export 환경변수이름 unset 환경변수이름 환경변수 참고 shellcode 환경변수 설정 getenv 함수로 쉘 코드의 주소를 구할 것이다. bfffff07 NOP 16byte + SFP 4byte + RET 4byte 16바이트와 SFP를 NOP로 덮고 RET을 환경변수 주소로 채워줄 것이다. ./cob..