SMALL
cobolt // hacking exposed
먼저 소스파일을 확인해 어떻게 구성되어있는지 확인해준다.
우선 gets함수가 보인다.
알아보니 gets함수는 버퍼크기 상관하지 않고 입력을 받는다
그럼 이 취약점을 이용해 문제를 해결해야한다.
그리고 전 문제와 차이점은 main은 인자를 받지않고 gets에도 인자를 받지 않는다는 점이다.
더미값이 없이 buffer의 크기는 16바이트 이다.
buffer, sfp 위 ret의 위치를 파악할수있다.
버퍼오버플로우의 여러가지 방식중 환경변수를 이용하는 방법을 선택
“HA”라는 환경변수를 이용할것이기에 환경변수를 가져오는 getenv 함수를 이용해 “crush.c”파일을 생성하고 컴파일 해준다.
export 를 이용하여 환경변수 생성해준다.
메모리주소를 예측을 한다고 하지만 매우 어렵다 그래서 처음에 NOP를 넣어서 안전하게 실행하려고 넣고 쉘코드를 넣어준다.
환경 변수 주소값 확인
원래 하던대로 쉘코드를 넣어주면 오류가 난다.
아까 gets는 인자를 받지 않는다고 했는데 직접 입력받지 않기 때문에 파이프라인을 통해서 넘겨주는데 표준입출력을 받아서 출력하는 명령어를 써줘야한다.
cat(입력받은걸 그대로 출력해주는 명령어)를 써주었다.
클리어!
'System > LOB' 카테고리의 다른 글
[LOB_6]wolfman (0) | 2019.07.25 |
---|---|
[LOB_5]orc (0) | 2019.07.25 |
[LOB_4]goblin (0) | 2019.07.25 |
[LOB_2]gremlin (0) | 2019.07.25 |
[LOB_1]gate (0) | 2019.07.25 |