티스토리 뷰

Web Security/Webhacking.kr

old 26

HNNN 2021. 3. 3. 11:23

문제를 실행시키면 아래 사진을 확인할 수 있다.

26번 문제 실행

확인 할 수 있는 것이 view-source뿐이니 view-source를 확인하도록 한다 

스크립트 화면 

소스코드를 확인해 보면 빨간색으로 표시한 박스 부분이 핵심 부분인것으로 추측할 수 있다. 

여기에 사용된 preg_match() 함수는 해당 문자열에서 전달받은 정규 표현식과 일치하는 패턴을 검색한다. 

preg_match($pattern, $subject [,$matches]); 의 문법으로 사용된다. 

따라서 admin 과 일치하는 $_GET['id'] 일 경우 no!를 알려주고 종료하고  $_GET['id']를 디코딩한 값이 admin과 같을 경우 문제를 해결하는 것으로 분석할 수 있다. 

즉, admin을 인코딩한 값을 넣으면 문제가 해결될 것으로 추측할 수 있다. 

url 인코딩 표 

따라서 admin을 url 인코딩한 값은 %61%64%6d%69%6e인것을 확인 할 수 있다.  해당 값을 url에 입력했지만 

문제 해결 실패 화면 

문제가 풀리지 않는 것을 확인 할 수 있다. 이는 urldecode가 되기 이전에 자동적으로 디코딩이 되었기 때문에 preg_match가 동작한 것으로 추측된다. 

실제로도, 웹 서버와 브라우저 사이에서 데이터 교환 시 브라우저는 폼에서 입력받은 데이터를 자동으로 인코딩한 값을 php서버로 보내고 php는 받은 인코딩된 값을 자동으로 디코딩한다. 즉, 저렇게 get방식으로 입력한 값은 php에서 자동으로 디코딩한다는 것이다.

따라서 해당 문자열을 한번더 인코딩하여 입력해 보도록 한다. url 인코딩은 밑의 주소를 사용했다.  www.convertstring.com/ko/EncodeDecode/UrlEncode

얻어진 인코딩 값인 %2561%2564%256d%2569%256e 을 입력한다. 

문제 해결 화면 

문제가 해결된 것을 확인할 수 있다. 

'Web Security > Webhacking.kr' 카테고리의 다른 글

old 38  (0) 2021.03.03
old 24  (0) 2021.03.03
old. 016  (0) 2021.03.02
old 17  (0) 2021.02.25
old 14  (0) 2021.02.24
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
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
글 보관함