2010.02.10 17:29 WarGame




level0랑 좀 분위기가 다른 문제로군요

처음엔 execlp 를 못보고 쉘코드도 짜서 넣어줘야 하나 했습니다 :(

아무튼 ptr 의 첫바이트에 ca를 넣어주면 됩니다

대략 스택을 살펴볼까요






여기서 Ptr은 Buf[256]을 가리키게 되겠습니다

소스코드를 보면

\를 입력하면 한칸 앞을 가리키게 됩니다

그렇다면 Ptr의 맨 첫번째 바이트를 변경하려면 어떻게 해야 할까요?

1. 아무 문자나 입력해서 ptr이 가리키는 값을 계속 늘린다

2. \ 문자를 입력해서 한칸씩 앞으로 이동해서 ptr에 직접 접근을 한다


1번

은 훼이크죠

스택 주소의 한계점때문에 접근이 불가능합니다

제가 모르는 어떤 방법이 있을 지는 모르겠지만..

전 2번으로 했답니다

256 칸 앞의 1바이트를 수정하기 위해서는

257 번 전진하고 대입해줄 한바이트를 입력하면 됩니다

대략 \ x 257 , ca  그리고 e 함수를 실행시키기 위한 임의의 문자 하나면 됩니다




흠 쉘이 뜨자마자 바로 종료되는군요

문제를 유심히 살펴보면

bash에서 어떻게 EOF [ End Of File ] 을 관리하는지 알아야 한다고 합니다

저런식으로 문자열을 전달해주게 되면 마지막에 EOF가 자동으로 삽입되므로  자동으로 종료되버리죠

이를 방지 하기 위해서는



쉘 상에 값을 출력하고 이를 복사해서 하는 방법과


cat 등을 이용하는 방법이 있겠습니다


라고는 했는데 2번째 방식은 하고 나면 먹통이 되더군요

그래서 다른 방법을 모색해봤습니다

일단 저 명령을 스크립트로 만든 다음에

만든 파일에 다시 파이프로 연결해 주는 방법이나



스크립트를 이용하지 않고 ; 를 이용해서 우겨넣는 방법이 있겠습니다





어때요 참 쉽죠?


'WarGame' 카테고리의 다른 글

Vortex level3 풀이  (0) 2010.02.20
Vortex level2 풀이  (0) 2010.02.16
Vortex level1 풀이  (0) 2010.02.10
Vortex level0 풀이  (0) 2010.02.04
Code Gate 2009 본선 문제 stego_win 풀이  (0) 2010.02.03
Crackme#15  (0) 2010.01.08
Posted by LinkC

블로그 이미지
LinkC

태그목록

Tistory Cumulus Flash tag cloud by BLUEnLIVE requires Flash Player 9 or better.

공지사항

Yesterday23
Today34
Total330,243

달력

 « |  » 2019.7
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

최근에 받은 트랙백

글 보관함


. .