메인화면입니다.

소스보기의 결과 GET방식으로 'id'와 'pw'가 넘어감을 알 수 있습니다.

임의의 값을 한번 넣어봤습니다.

결과를 확인해 보면 "login fail"이 뜨네요 ~

"guest"/"guest"를 넣어보겠습니다.

결과를 확인해보겠습니다.

"login success"가 뜨네요

이제 쿼리결과를 참으로 만드는 인젝션을 한번 해보겠습니다.

"wrong password"가 뜨네요 ~

그럼 거짓인 경우를 살펴보겠습니다.

"login fail"이 뜨네요 ~

이를 토대로 알 수 있는 있었던 것은 쿼리의 결과가 참이면 "wrong password"를 보여주고 거짓일 경우 "login fail"이 뜬다는 것을 알 수 있었습니다.

그럼 이번엔 "admin"계정이 있는지 확인해 보겠습니다.

"admin"이라는 계정을 사용하고 있습니다 ~

이번엔 파라미터와 동일한 컬럼을 사용하는지 확인해보겠습니다.

동일한 컬럼명을 사용하는 것 같습니다.

이를 바탕으로 DB환경구성을 해보면 아래와 같습니다.

아마도 웹에서 이러한 쿼리를 통해 인증을 진행할 것으로 보입니다.

"select [id,pw또는 pw] from chall21 where id = 'test1' and pw='1111';"

이를 이용하여 패스워드의 길이를 한번 구해보겠습니다.

pw의 길이는 4이므로 참으로 결과가 확인됩니다.

위는 거짓일 경우입니다.

pw의 한글자씩 추출하는 쿼리를 만들어 보겠습니다.

pw의 첫글자가 '1'이므로 참인 결과가 보여집니다.

이를 바탕으로 파이썬을 이용하여 자동화시키면 pw의 길이와 pw의 값을 확인할 수 있습니다.

결과는 위와 같습니다.

"there_is_no_rest_for_the_white_angel" 이 출력되었습니다.

챌린지 21 성공!

제가 만든 소스코드도 첨부하겠습니다.

challenge21.py
0.00MB

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

[webhacking.kr] Level23 (old)  (313) 2020.04.28
[webhacking.kr] Level22 (old)  (306) 2020.04.28
[webhacking.kr] Level20 (old)  (308) 2020.04.28
[webhacking.kr] Level19 (old)  (317) 2020.04.28
[webhacking.kr] Level18 (old)  (313) 2020.04.28

+ Recent posts