'전체 글'에 해당되는 글 1000건


wargame.kr 8번 md5_compare 라는 문제다.
 
점수는 500point!
 
흠.. 일단 비교해보라고? 알았다. 어디한번 시작해보자.



흠...소스부터 확인을해보자.


흠.. 플래그 값을 얻으려면 chk라는 변수가 true로 유지되어야 하는 것 같다.

유지조건을 살펴보니

첫번째로는 ctype_alpha 함수를 통해 v1에 알파벳 외의 다른 문자가 있으면 안된다.

두번째로는 is_numeric 함수를 통해 v2에 숫자 외의 다른 문자가 있으면 안된다.

마지막으로 md5로 출력한 hash 값이 서로 같아야 한단다.

서로 다른 값을 md5로 돌려서 같아야 된다고..? 아무리 해쉬충돌이 발생할 수 있다지만

그걸 찾아내라는 것도 아닌거 같고 찾고 싶지도 않다.

뭔가 취약점이 있을거 같다.

그럼 그렇지. 찾아보니 php magic hash 취약점이라는게 존재한다.

0e로 시작하는 문자열을 비교하면 typecast가 적용이 되어서 우선순위가 더 높은 float형으로 비교가

되어 둘다 0이 된다는 뜻이다.

즉, md5를 통해 출력된 해쉬 값이 "0e어쩌고"=="0e어쩌고" 형식이되면 0=0으로 바뀌어 비교가 되어

결과가 true가 되게 된다.

오호라...신기하구만...

그러면 해쉬 값이 0e가 나오는 문자열만 찾으면 될 것 같다.

aabg7XSs    aabC9RqS    240610708    QNKCDZO

대충 찾아보니 이렇게 4개 정도를 찾았다.

저중에서 v1은 알파벳만이어야하니까 QNKCDZO를 쓰고 v2는 숫자만이니까 240610708을 써보자.


잘 나온다. 성공!

뭔가 풀면서 새로 알게된 점이 많았던 문제였다.  


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

wargame.kr EASY_Crackme  (0) 2018.01.04
wargame.kr md5 password  (0) 2018.01.04
wargame.kr fly me to the moon  (0) 2018.01.04
wargame.kr DB is really GOOD  (0) 2018.01.04
wargame.kr wtf_code  (0) 2018.01.04
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

wargame.kr 7번 fly me to the moon 이라는 문제다.


점수는 500 point!


흠.. 부정행위 방지 시스템을 우회하여 게임을 클리어 해보라는 것 같다. 한번 시작해보자.





오호.. 뭔가 재밌어 보이는게 나왔다. 게임인가..? 해보라니까 어디한번 해보자.







..? 31337점을 얻으란다. 근데 2점... 몇번 더 해봤는데 50점이상을 못가봤다.


내가 게임을 못하는게 아니다. 애초에 불가능한 게임이었다.(아마도)


소스부터 확인해보자.







흠... 일단 자바스크립트 부분이 난독화가 되어있다. 상당히 수상한 부분이다.



 


일단 자바스크립트 언팩 사이트를 통해 난독화부터 풀어주자.

https://www.strictly-software.com/unpacker#unpacker



 


난독화된 소스다.


음.... 저 부분 밑으로도 꽤나 긴 소스코드가 있다.


일단 자세하게 살펴보기로 하자.





오.. 분석하다보니  수상한 부분이 발견됬다. 데이터를 어딘가로 보내는 것 같다.


일단 Ox32bb배열 값들은 나와있으니 들어 있는 내용들을 확인해보자.





출력된 결과를 정리 해 봤다.


$[ajax]({

type: "POST",

url: "high-scores.php",

data: "token=" + token + "$score=" + BTunnelGame["getScore"](),

success: function (_0x8618x19) {

showHighScores(_0x8618x19)

}

})


대충 이런코드가 나온다. 음.. 아무래도  BTunnelGame["getScore"]() 부분이 점수 계산해서 얻어오는 부분인 것 같다.


저 부분을 크롬 개발자 모드로 접속 후 31337로 바꿔서 전송해보자.



 



키 값이 나왔다. 성공!


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

wargame.kr md5 password  (0) 2018.01.04
wargame.kr md5_compare  (0) 2018.01.04
wargame.kr DB is really GOOD  (0) 2018.01.04
wargame.kr wtf_code  (0) 2018.01.04
wargame.kr login filtering  (0) 2018.01.04
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

wargame.kr 6번 DB is really good 라는 문제다.


점수는 500 point!


흠.. 뭔가 하고 보니 데이터베이스 종류가 뭐냐고 묻는다.


근데 유저 이름과 데이터베이스의 연관성을 찾아보란다.


흠.. 일단 들어가보자.





이름을 쓰고 로그인을 하란다. 뭐지? 일단 한번 해보자. 아이디는 내이름!








로그인이 되었다. 흠... 뭐 어쩌라고..? 그러고보니 이름가지고 데이터베이스 종류를 알아내라고 했던거 같다. 


 




일단 소스부터 보도록 하자.




흠... 보아하니 일단 admin 사용자에 대해서 필터링이 되어 있다.


로그인해보니 접속이 안된다.




흠.. 뭐 어쩌라고.. 일단 이름이랑 연관이 있다 했으니 이것저것 이름을 막 쳐봤다.


일단 admin가지고 이것저것 특수문자를 넣어서 하다 보니 오.. /를 넣었을때 에러화면이 처음으로 떴다.



흠... 보아하니 데이터베이스 파일을 열수가 없단다. 


뭔 파일을 여나 봤더니 open('./db/wkrm_a/dmi..') 이부분이 수상하다.

a/dmin이라고 쳤던 아이디가 포함된게 수상하다.


/를 가지고 이것 저것 더 쳐보기로 했다.








오... 보아하니 내가 친 아이디가 디비파일명으로 들어가는 것 같다.


./db/wkrm_{userid}.db 이런 방식이다.


그렇다면 admin의 디비 파일명은 ./db/wkrm_admin.db 일 것 같다. 한번 들어가보겠다.


다운이 받아진다. splite3방식이기 때문에 sqlite viewer 다운로드받아 열어보았다.


 



내용을 확인해보니 


Congratulations!!


Here is flag!


./dhkdndlswmdzltng.php


라는 문구가 보인다.


한번 들어가보자.



 



성공!


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

wargame.kr md5_compare  (0) 2018.01.04
wargame.kr fly me to the moon  (0) 2018.01.04
wargame.kr wtf_code  (0) 2018.01.04
wargame.kr login filtering  (0) 2018.01.04
wargame.kr flee button  (0) 2018.01.04
블로그 이미지

JeonYoungSin

메모 기록용 공간

,