'Wargame'에 해당되는 글 15건

  1. 2018.03.06 webhacking.kr 6번
  2. 2018.03.01 webhacking.kr 4번
  3. 2018.03.01 webhacking.kr 3번
  4. 2018.02.28 webhacking.kr 51번 1
  5. 2018.02.27 webhacking.kr 1번
Wargame/webhacking.kr2018. 3. 6. 16:34



뜬금없이 아이디와 패스워드가 나온다.


소스를 보여주니 한 번 보자.




쿠키에 있는 user와 password 항목이 base64로 20번 디코드했을 때 둘 다 admin이면 클리어인 것 같다.


손으로 인코딩하기 힘드니 간단하게 파이썬 스크립트를 짜봤다.



실행시키면 다음과 같다.



이렇게 얻은 문자열로 쿠키를 수정해준다.



새로고침 해주었더니 클리어 되었다.



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

webhacking.kr 4번  (0) 2018.03.01
webhacking.kr 3번  (0) 2018.03.01
webhacking.kr 51번  (1) 2018.02.28
webhacking.kr 1번  (0) 2018.02.27
Posted by BinZIP
Wargame/webhacking.kr2018. 3. 1. 05:04


끝자리가 =으로 끝나는걸로 봐서는 base64 인코딩이다. 디코딩해주자.



이게 flag인가 싶어서 넣어봤는데 아니라고 한다.


문자열 길이를 열심히 세어보니 40자리...라고 해서 찾아보니 sha1 해시인것 같다.


그래서 복호화 사이트를 찾아서 넣어줬다.



한 번 더 sha1 hash가 나온 것 같은 느낌이다. 한 번 더 돌린다.



넣어주니 클리어되었다.

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

webhacking.kr 6번  (0) 2018.03.06
webhacking.kr 3번  (0) 2018.03.01
webhacking.kr 51번  (1) 2018.02.28
webhacking.kr 1번  (0) 2018.02.27
Posted by BinZIP
Wargame/webhacking.kr2018. 3. 1. 04:50

들어가면 뜬금없이 위와 같은 표가 뜬다.


처음에 뭔지 가만히 생각해보면서 소스와 페이지를 쭉 보다가 퍼즐이라는걸 알게 되었다.


위와 같이 정답을 맞추고 gogo 버튼을 클릭하면 다음과 같이 랭킹 등록 페이지 비스무리한게 나온다.



일단 이름을 써보고, 여기에 SQL Injection을 하는 것인가 싶어서 일단 Single quote를 넣어봤다.



그냥 넘어가서 그대로 등록되는 것을 보아하니 저기에 Injection 하는건 아닌 것 같다.


그럼 도대체 무엇일까... 생각해보다가 일단 어떤식으로 쿼리가 짜여 있는지 확인하기 위해 post 메소드를 get으로 바꾸어 어떤 인자가 전달되고 있는지 확인해봤다.



위와 같이 post를 get으로 수정하고 다시 write 버튼을 클릭해봤다.



answer 항목과 id 항목이 넘어가고 있었다.


일단 id로 injection 하는건 아니라는것을 확인했으니, 저 answer을 손봐줘야 할 것 같다.




answer 항목에다 single quote를 넣어 write 해보았다.


no hack이라고 나오는걸 보니 이 친구를 손봐야 하는 게 맞다.


여러가지를 시도해본 결과 single quote를 비롯한 and, or, 세미콜론, 주석처리 등등이 필터링되고 있었다.




필터링 안되는 것을 찾다가, 연산자는 필터링 되지 않는다는 것을 확인해서 or에 해당하는 '||'을 넣어서 전송해보았다.




flag가 정상적으로 출력되었다.

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

webhacking.kr 6번  (0) 2018.03.06
webhacking.kr 4번  (0) 2018.03.01
webhacking.kr 51번  (1) 2018.02.28
webhacking.kr 1번  (0) 2018.02.27
Posted by BinZIP
Wargame/webhacking.kr2018. 2. 28. 01:22


오른쪽 아래에 소스보기가 보인다. 소스를 보자.



쿼리문 결과의 id항목이 admin이면 클리어이다.


pw를 보니 md5 hash화 시켜서 쿼리문에 전달한다.


그런데 php의 md5 함수에서 두 번째 인자가 raw_output 옵션인데, true로 주는 경우 hex값이 아니라 binary 값으로 전달하게 된다.


이 경우, 문자가 직접 출력된다. 만약 그 과정에서 '='이라는 문자열이 직접 출력되는 경우 SQL Injection이 가능하게 된다.


자세한 설명은 아래 블로그에서 자세히 설명해두었다.


@참고문헌 : http://hyunmini.tistory.com/43



false injection으로 처리되는 값을 가져다가 password에 넣었다.



그대로 클리어 되었다.

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

webhacking.kr 6번  (0) 2018.03.06
webhacking.kr 4번  (0) 2018.03.01
webhacking.kr 3번  (0) 2018.03.01
webhacking.kr 1번  (0) 2018.02.27
Posted by BinZIP
Wargame/webhacking.kr2018. 2. 27. 23:45

처음 들어가면 다음과 같은 화면이 보인다.



index.phps라고 써있는 부분을 클릭하면 다음과 같이 소스코드가 보인다.

eregi 함수는 첫 번째 인자로 전달받은 정규표현식에 해당하는 내용이 있을경우 참을, 아니면 거짓을 반환한다.


정규표현식을 도식화하는 regexper.com에 넣어서 확인해보았다.



0~9까지 숫자와 ',', '.'이 없으면 참이 되어 쿠키에 있는 user_lv 항목이 1이 되는 것으로 확인했다.


일단 확인했으니 아래쪽 분기문에 5보다 클경우 클리어같으니, 5를 넣어보았다.



쿠키값을 수정한 후에 새로고침을 했더니 다음과 같았다.



풀려야한다고 생각하고 있었는데 안풀렸다. 잘보니 조건문은 5 초과일때이다.


한참 생각하다가 5초과 6미만일때 클리어라는 생각이 문득 들어서, 5와 6 사이의 소수를 넣어보았다.



클리어해서 flag를 얻을 수 있었다.



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

webhacking.kr 6번  (0) 2018.03.06
webhacking.kr 4번  (0) 2018.03.01
webhacking.kr 3번  (0) 2018.03.01
webhacking.kr 51번  (1) 2018.02.28
Posted by BinZIP