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 |