시스템 해킹/LOB
[LOB] gremlin → cobolt
ruming
2021. 2. 20. 21:21
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을 환경변수 주소로 채워줄 것이다.
./cobolt `python -c 'print"\x90"*20 + "\x07\xff\xff\xbf"'`
공격에 성공했다!