본문 바로가기

IT/웹 해킹(Web Hacking)

webhacking.kr [문제 26번]




25번에 이어 26번문제를 풀어보자.





해당 문제의 배점은 100point이며, 이 문제 또한 다소 쉬울 것으로 예상된다.






해당 문제를 접속하니


index.phps라고


인덱스 페이지의 소스코드가 주어진 것을 확인할 수 있다.


클릭해보자.






소스코드를 보니 상당히 쉽다.




분석)


if(eregi("admin",$_GET[id])) { echo("<p>no!"); exit(); }  // GET방식으로 넘어온 id 변수의 값이 'admin'이면 "<p>no!"를 출력 후 종료한다. 


$_GET[id]=urldecode($_GET[id]);  // GET 방식으로 넘어온 id값을 urldecode하여 담는다.


if($_GET[id]=="admin")  // 해당 변수의 값이 'admin'일 경우

@solve(26,100);  // 문제 풀이 완료



코드 분석을 하여 보았는데,


결과적으로 우린 url값의 id변수를 할당한 후 url인코딩된 'admin'을 대입하여 주면 된다.




백문이 불여일타



한번 시도해보자.





해당 인코딩표를 참고하여


URL인코딩 해보면



admin  ->  %61%64%6D%69%6E



해당 인코딩된 문자열을 직접 GET방식을 통해 전달해보자.






앗...



허나 단호한 메세지를 보여주며,


실패한다.



이유를 생각하며 검색하여본 결과



웹 서버와 브라우저 사이에서 데이터 교환 시 브라우저는 폼에서 입력받은 데이터를 자동으로 

인코딩한 값을 PHP서버로 보내고 PHP는 받은 인코딩된 값을 자동으로 디코딩한다.



그렇다.


다음과 같은 이유로



%61%64%6D%69%6E


라고 전송된 데이터는 자동으로 인코딩되여, admin이 되는 것이다.



그러한 이유로 해당 문자열을


한번 더 인코딩하면 문제가 해결될 것으로 보인다.






해당 문자열을 인코딩 한 결과


%61%64%6D%69%6E  ->  %2561%2564%256D%2569%256E


다음과 같은 결과가 나온다.



해당 문자열로 다시한번 공격을 시도해보자.







다음과 같이 url을 변경한 후 접속









배점은 낮지만 부족한 본인한테는 한번더 고민해봐야할 문제였다.



풀이완료









'IT > 웹 해킹(Web Hacking)' 카테고리의 다른 글

[WRITE UP] HTTP Pirates 2번  (0) 2020.07.21
webhacking.kr [문제 27번]  (3) 2018.04.01
webhacking.kr [문제 25번]  (0) 2018.03.31
webhacking.kr [문제 24번]  (0) 2018.03.31
webhacking.kr [문제 23번]  (0) 2018.03.31