본문 바로가기

Wargame

(35)
wargame.kr strcmp wargame.kr 의 strcmp 문제다.strcmp 함수의 우회법을 알면 플래그를 가질 수 있단다. 딱 들어가면 password를 입력받는 박스와 밑의 소스코드가 있다.소스코드부터 살펴보도록하자. 랜덤값으로 password를 파일에서 가져오는데어쨌든간 그 password랑 내가 입력한 password랑 같아야지 키 값이 출력된다.그럼 정상적으로는 거의 불가능에 가깝게 패스워드가 일치할 수 없다는것이다.strcmp 함수의 취약점을 이용하면 손쉽게 풀 수 있다.php 버전마다 다르지만, strcmp 함수에는 배열과 문자열을 비교했을 때NULL을 반환하게 되어있다. 즉 0 을 반환한다.그게 무슨소리냐? strcmp는 두 문자열이 같을 때 0을 반환하게 된다.결국 문자열과 배열을 비교하게되면 무조건 0을 반..
xcz.kr PROB32 xcz.kr 의 PROB32이다.제목은 Easy Trick내용은 PHP트릭을 이용해서 키를 구하란다. 먼저 Source Page부터 살펴보자. a라는 매개변수로 값을 받아오고 그게1273536633313213246546??????????????????????????????와 같으면 키를 출력하고 아니면 Failed ur tricks를 출력한다..그런데 저 ?를 알아낼 아무 단서조차 없다.어쨌든 검색으로 찾아낸건데, php에 옛날 취약점이라고한다.숫자가 14자리가 넘어가면 ==에서 그 뒤의 숫자들은 검사와 상관없이자리수만 맞으면 맞는다고 생각한다는것이다. Prob Page로 들어오면 이런 문자가 떠있다..별로 중요하진않다. 아까 말한대로 자릿수만 맞추주면 되니까?대신 1로 자리수를 맞춰주고 페이지를 실행해..
xcz.kr PROB30 xcz.kr 의 PROB30.제목은 Easy DLL이고키를 찾으라고한다. 다운로드 받으면 prob30.dll 이라는 dll 파일이 다운로드 받아진다. 올리디버거에 올려서 스트링 검색을 키자마자the key is %s.. 가 보인다. 저 부분에서 키를 출력하는 것일테니저 부분을 중심으로 살펴보아야한다. 이렇게 브레이크포인트를 걸어두고, 이 dll 안에 키 값을 출력하는 함수부분의 제일 처음으로 넘어가서실행을 한단계씩 시켜봐야한다.그런데 이 파일은 dll, 즉 Dynamic Library Link 파일이고, 이 파일 내부에서는C드라이브 아래의 dllinj 파일 안의 target.exe 파일로 실행되게끔 되어있다.하지만 우리가 지금 dllinjection을 이용해서 이 파일을 실행할 수는 없는 노릇이므로강제로..
xcz.kr PROB3 xcz.kr 의 PROB3이다.제목은 I don't speak English.내용을 보아하니 딱 봐도 암호화 문제같다. 앞의 Serz EKW를 검색해보니 이런 키워드가 눈에 띄었다.alphabetic cipher? 처음 들어본다. 일단 디코더를 검색해보자. 디코더를 검색해도 나오지가 않아서 그냥 alphabetic cipher만 검색해보았더니이건 Vigenere cipher란다. 그래서 Vigenere cipher decoder를 검색했다. 디코더를 찾아 들어가서 암호화 된 문장 모두를 복사해서 넣은다음몇가지 부수적 옵션을 맞춰주고 Break Cipher를 해주면 정상적으로 키는 뭐다 라면서 해독된 문장이 나온다.끝.
xcz.kr PROB2 xcz.kr 의 PROB2다.제목이 Listen Carefully! 고 Auth key 는 대문자라고한다.Download Here에 일단 들어가보자. 5초짜리 짧은 wav파일이 등장한다. 이걸 다운로드 받자. 다운로드 받고 필자는 GoldWave로 열었다.다른 툴이 있다면 다른 툴로 열어도 좋을 것 같다.딱 보면 조금 긴 부분과 짧은 부분으로 나누어져있다.wav파일을 들으면서, 그리고 파일 이름으로 추측하면이건 모스부호일 것이다. 저 GoldWave에 올려진 파일의 막대기?를 맞춰서모스부호로 해독하면 답이 나올것이다. 모스부호 코드는 이걸 보면서 해독하면 되겠다. 끝.
xcz.kr PROB1 xcz.kr 의 PROB1이다. Why So Serious? 라고 적힌 사진이 있고제목은 End Of Image이다.단순 카빙문제이다. 복잡하지않아서 손카빙으로 진행했다. 일단 사진파일을 다운받았다.이제 HxD로 열어보자. 열어봤다. 이 파일은 png 파일이기때문에 파일헤더가 89 50 4e 47인데png파일은 마지막에 끝나는 지점이 IEND~ 로 끝나는 특징을 지닌다. 이 IEND~ 부분을 찾으면 다른 파일의 시작이든, 그 끝부분에 무언가 있겠지란 생각으로 찾아갔다. 찾아간 모습인데, 바로 옆에 FF D8 FF E1 이 보인다.저건 jpg 파일의 헤더부분이다. 그렇다면 이 png파일 뒤에 jpg파일을 붙여놨다고 생각할 수 있다.이제 카빙을 진행하면 저 jpg파일이 추출돼 나올것이다.손카빙을할지 툴을 쓸..
wargame.kr keypad_crackme wargame.kr 의 keypad Crackme 문제다. start를 눌러 들어가보면 저번 easy_crack 처럼 패스워드를 찾아보라고한다. 다운로드 받아서 실행시키면 이런 네모박스에키패드, AUTH, BYE를 누를 수 있게 되어있다. 이런식으로 숫자를 누르고 AUTH로 인증하는 식이다. 당연히 111을 넣었을 땐 틀리다고 한다.그래서 올리디에 던져서 조금의 분석을 진행해보았다. 여기가 핵심 부분인데, 입력하는 값을 구할 수 있다.이 부분에서 eax는 무조건 7로 세팅되고, 1이 더해서 8이 된다.그리고 그 eax에 FFFCECC9라는 값을 곱한 뒤에그 값을 입력한 값이 저장되어있던 edi에 더해주고edi와 0BADBABE를 비교해서 맞으면 성공문 틀리면 실패문을 출력한다.대략적인 분석과 조금의 계산..
wargame.kr easy_crackme wargame.kr의 Easy_Crackme 다. 간단한 리버싱 문제란다. Start를 눌러 들어가보면 패스워드를 찾아보세요! 라고 파일을 하나 준다. 파일을 다운받았다. 실행시키면 문자열을 입력받고 check해서 맞는지 틀리는지를 나타낸다.아무 숫자나 입력해서 check를 눌러보자. 틀렸단다. 이제 이걸 가지고 OllyDBG로 프로그램을 실행시켜보자. OllyDBG로 실행시켰다. 문자열 검색으로 nono.. 를 가보자.저 부분에 아마도 분기문이 있을것이라고 생각했다. 분기문이 있었고, 그 위에 문자열들을 비교했는데한 가지 아주 조금 까다로웠던 점은문자열을 나눠서 비교한다음 합친다는 것이다.한마디로 비교 함수가 여러개이다.그 비교 함수들을 다 찾고, 비교하는 문자열들을 찾아서 결합하면답을 찾을 수 있다...