-
|Lord Of Bufferoverflow| #8 orge - trollWargame Site/BOF 2019. 5. 20. 16:05
이번에는 인자가 두 개여야 한다는 점과 argv[1] 을 아예 밀어버리는 코드가 추가되었다.
여기서 잠깐, buffer 에는 앞의 40 바이트를 제외하고 그대로 남아 있다는 것을 명심해야한다.
SFP , RET 는 그대로 남아 있다는 것이다.
그렇다면, #7 에서 해결했던 방식으로 접근하면 어떻게 될까?
파일이름에 shell code 를 집어넣고, argv[0] 자리로 RET 를 돌려준다면? 문제가 해결될 것이다.
하지만, 여기서 주의해야할 사항이 있다.
파일이름으로는 \x2F 가 들어가면 안된다는 점이다.
\x31\xc0\x50\x68\x2f\x2f...
기존에 사용하던 Shell code 는 다음과 같이 \x2F ('/') 이 포함되어 있기 때문에 링크를 생성할 수 없다.
\xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x51\x69\x30\x30\x74\x69\x69\x30\x63\x6a\x6f\x8a\xe4\x51\x54\x8a\xe2\x9a\xb1\x0c\xce\x81
이 Shell code 의 원리를 보니 2F 라는 것을 2E + 1 과 같은 형태로 맞춘 형태였다.
따라서 위의 코드를 통해 심볼릭 링크를 생성해준 뒤, 쉘코드 쪽으로 RET 만 돌려주면 해결되는 것이다.
trola 를 통해 심볼링 링크 파일을 생성했다.
ln -s trola `python -c 'print "A"*10 + "\xeb\x11\x5e...."
앞에 A 를 10개로 지정한 이유는 실행할 때 A [tab] 을 해서 사용하기 위함이다.
core dump analysis 를 사용한다 이번에도 ^^ 묘하게 맥주가 먹고싶어지는 그림이다.
어허 제대로 들어간 것을 확인했다 이제는 2F 가 들어있지 않은 코드 쪽을 지칭해주자.
이제 bf 부분을 원하는 shellcode 위치로 돌려주기만 하면 문제가 해결된다.
다음 분석을 통해 Shell code 의 시작은 0xbffffd6d 라는 것을 알 수 있다.
짜잔! 이제 troll 파일에 똑같이 해주면 끝~
Clear 가 된 것을 볼 수 있다.
'Wargame Site > BOF' 카테고리의 다른 글
/bin/sh 을 실행하는 Shellcode 를 만들어보자 (0) 2019.06.07 |Lord Of Bufferoverflow| #9 troll - vampire (0) 2019.05.20 |Lord Of Bufferoverflow| #7 darkelf - orge (0) 2019.05.20 |Lord Of Bufferoverflow| #6 wolfman - darkelf (0) 2019.05.20 |Lord Of Bufferoverflow| #5 orc - wolfman (0) 2019.05.20 댓글