이번주에 몰아서 왕창 포스팅 하는 것 같다 .

 

마찬가지로 정답이 공개되어 있으니 참고하고 포스팅을 읽기 바란다.

 

다음은 19번 문제의 인덱스 페이지이다 .

 

 

위 그림은 제출버튼을 눌렀을때의 모습이다.

Admin 이 아니라는데 입력 폼이 회색으로 수정도 가능하고

injection 문제인가 하고 삽질도 많이 한 문제이다 ..T^T

 

아무리 injection 을 해도 되지 않길래 접근 방식을 좀 다르게 다다갔다.

로그인을 구현해놓았기 때문에 쿠키가 존재한다 .

 

 

id폼의 값을 변조시켜 a란 유저로 로그인을 시도해봤다.

다음과 같이 hello a 라고 문자가 표시되며 성공적으로 로그인이 된 모양이다.

쿠키에는 userid 라는 이름으로 암호화된 값이 보인다.

 

뒤부분에 %3D 를 보아하니 url 인코딩이 된 모습이 보인다 .

그럼, 다음을 url디코딩을 하여 원본 문자열을 만들어보면

다음과 같은 문자열이 보인다.

끝 부분의 =를 보아하니 base64 로 인코딩 된 문자열로 추측이 가능하다 .

그 후 base64 디코딩을 한 값이 32글자인걸 보아하니 MD5 의 해시값임을 추측할 수 있다.

 

현재 MD5 디크립터 사이트가 많으므로 그곳을 이용하여

저 값을 복호화 해보면

이런 결과값을 알 수 있다.

즉, 내가 가진 쿠키값이 곧 로그인 한 유저명이니 우린 admin 이라는 쿠키값을

MD5 -> base64 로 인코딩 하여 인젝션을 하면 된다.

 

여기서 주의할 점은 MD5 로 해싱 할 때 한글자 씩 해싱을 진행해야 한다.

 

 

이유는 다음과 같다.

Ad 라는 유저의 정보이다.

알고리즘의 특성상 어떤 값이 들어가던 동일한 길이의 결과값이 나와야 하는데

16byte 의 길이가 아닌 32byte 의 길이가 나왔다.

즉 우리가 입력하는 문자열의 한문자씩 해싱을 진행한다는 점이다.

그럼 우린 a d m I n 5글자를 해싱 시킨 후 base64 로 인코딩 한 뒤 인젝션을 하면 성공이다 .

 

저 값들을 base64 로 인코딩 한다.

한장의 스샷으로 찍기 위해 줄바꿈을 했다.

 

처음엔 저걸 URL 인코딩을 시켜야 하나 했지만 어차피

서버에서 받는값은 디코딩된 값이라 생각하고

저대로 인젝션을 시켰더니 성공했다.

 

이미 예전에 풀어놨던걸 다시 정리하는거라 풀었다 나온 모습이다.

 

'WarGame > WEB_Hacking' 카테고리의 다른 글

Webhacking.kr 21번 문제풀이  (0) 2015.11.14
Webhacking.kr 20번 문제풀이  (0) 2015.11.14
Webhacking.kr 18번 문제풀이  (0) 2015.11.13
Webhacking.kr 17번 문제 풀이  (0) 2015.11.13
Webhacking.kr 16번 문제풀이  (0) 2015.11.13

+ Recent posts