whois

Webhacking.kr 39번 본문

Wargame/Webhacking.kr

Webhacking.kr 39번

HongJun Choi 2018. 7. 19. 11:54

[그림 1] 39번 문제


39번 문제를 클릭하게 되면 그림 1과 같은 화면이 나온다. 텍스트 박스 하나 주어지는 것을 보니 문구를 입력하고 제출 하면 되는 것 같다.


[그림 2] 39번 문제 소스 보기


그림 1 페이지에서 우클릭 하여 소스 보기를 하면 그림 2와 같은 소스 코드를 볼 수 있다. 주석 처리로 된 index.phps가 있으니 접속해 보기로 했다.


[그림 3] index.phps


그림 1의 url에서 s만 붙여 index.phps로 접속해 보았다. 접속해 보니 그림 3과 같은 소스 코드를 볼 수 있었다. 해석 하면 아래와 같다.


1. _POST[id] 변수에 \\ 값이 있으면 공백으로, ' 값은 ''로 변환하라.

2. _POST[id] 변수의 값을 첫 번째 글자(0의 인덱스)부터 15글자까지만 빼서 저장해라.

3. id와 _POST[id] 값이 일치하면 zmail_member로부터 good 문자열을 추출해 q 변수에 저장해라.

4. q의 0번 방에 good이 있으면 문제를 해결한다.


정리하자면, _POST[id]의 값이 zmail_member에 접근할 수 있는 권한을 가져야 된다는 것이다. 특이점은 빨간색으로 줄 쳐진 부분의 젤 끝에 보면 $_POST[id]를 '(싱글 쿼터)로 앞 부분만 감싸주고 뒷 부분에는 없다. 즉, 이 부분을 해결해야 하면서 admin으로 만들어줘야 한다.


[그림 4] 실패 테스트


다른 값을 넣으면 어떤 결과가 궁금하여 그림 4와 같이 hello 라는 텍스트를 넣고 제출을 해보았다.


[그림 5] 실패 테스트 결과


그랬더니 index.php 17번째 줄에서 값이 없다고 뜬다. 아마, hello라는 id 값이 MySQL에 없는 듯 하다.


[그림 6] Burp Suite Intercept


Burp Suite로 확인해보니 id에 hello라는 값이 들어가는 것을 확인 할 수 있다.


[그림 7] 성공 테스트


다시 본론으로 돌아가서 문제를 풀면, admin이 되게 하고 '가 ''이 되는 변환을 우회(?) 하기 위해선 15번째 즉, 마지막 글자에 '을 넣음으로써 ''로 변환 되지만 16번째 글자는 잘려나가게 되어 그림 7의 문구로 온전히 들어가게 된다. NULL 값 전인 admin만 체크하여 id가 admin이 되어 good이라는 문자를 추출해 q 변수에 저장하게 된다.


[그림 8] 성공


다른 일을 하면서 집중 못 하고 포스팅 하여 설명이 중구난방이고 틀린 부분이 있을수도 있다. 그러한 부분은 댓글로 피드백 주시면 감사하겠습니다.


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

Webhacking.kr 38번  (0) 2018.07.18
Webhacking.kr 32번  (0) 2018.07.17
Webhacking.kr 27번  (0) 2017.09.07
Webhacking.kr 25번  (0) 2017.09.01
Webhacking.kr 26번  (0) 2017.07.26
Comments