본문 바로가기
category/웹해킹(webhacking.kr)

웹해킹(webhacking.kr) - 19번

by 자운대고라니 2020. 11. 17.
반응형

안녕하세요??

자운대 고라니입니다.

오늘은 wargame.kr old-19번 문제를 풀어보겠습니다.


문제에 접속하면 첫 화면이 id : admin [제출] 이라고 나와있다.

일단 제출 버튼을 눌러보자.

you are not admin이라고 나온다.

이때 id의 값은 GET방식으로 서버와 통신한다는 것을 아래처럼 url을 통해 알 수 있다.

그렇다면 NULL우회를 통해서 id값을 입력해보자.

위 처럼 ad%00min을 넣어서 엔터를 눌러봤다.

그러더니 문제가 풀리드라;;

아니 근데 너무 쉽게 푼 거 아닌가 싶어서 다른 블로그들을 탐방해보았다.

확인해보니 쿠키값으로 문제를 풀었다고 한다.

나도 쿠키값으로 문제를 풀어보겠다.

a를 넣었을때 쿠키값
d를 넣었을때 쿠키값
ad를 넣었을때 쿠키값

일단 admin에 들어가는 a, d, ad를 넣었을 때의 쿠키값을 확인해보았다.

마지막에 %3D가 붙어있는데, 이는 url-encoding에서 =를 표현한다.

마지막에 =를 넣는 암호화 방식은 base64 임을 알고 있으므로 base64-decoding을 해보았다.

a 암호화에 대한 decoding 값
d 암호화에 대한 decoding값

그랬더니 32자리 문자열이 나왔다.

32자리 문자열은 흔히 MD5 해쉬 함수에 의해 나온다는 것을 알고 있었다.

일단 a와 d에 대한 MD5값을 확인해보았다.

내 추측이 맞았다.

정리를 해보자면 각각 문자열에 대한 md5값을 얻은 다음 문자열을 합치고 base64-encoding 한 값을

쿠키값으로 넣는다는 것을 알 수 있다.

그러므로 파이썬 코드를 작성해서(굳이 작성할 필요는 없다.) 쿠키값을 얻어냈다.

 

위의 소스를 돌려보면

MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjE4Mjc3ZTA5MTBkNzUwMTk1YjQ0ODc5NzYxNmUwOTFhZDZmOGY1NzcxNTA5MGRhMjYzMjQ1Mzk4OGQ5YTE1MDFiODY1YzBjMGI0YWIwZTA2M2U1Y2FhMzM4N2MxYTg3NDE3YjhiOTY1YWQ0YmNhMGU0MWFiNTFkZTdiMzEzNjNhMQ==

라는 값이 나오고 이를 쿠키값에 대입하면 score가 올라갈 것이다.

 


이번 문제는 GET방식의 취약점을 통해 푸는 문제인지 쿠키값을 변조하는 문제인지

명확하게 모르겠어서 두개 다 풀어봤다.

 

애초에 쿠키값으로 풀어야 하는 문제라면 꽤나 복잡한 과정이 필요했다.

이 글을 읽는 사람들은 둘 다 활용해서 풀어보길..

 

아 그리고 좀 버그가 있는데, logout버튼이 안먹힐 것이다.

이때는 쿠키값을 지우고 logout을 누르면 될 것이다.

 

반응형

댓글