Wargame & CTF 42

[picoCTF][Reverse Engineering]vault-door-training 문제 풀이

문제 풀이 파일 형식을 보니 java인 것을 확인 bintext를 사용하여 코드를 확인 이는 자바를 몰라도 어느정도 이해가 가능하다. picoCTF{ 가 눈에 들어온다. 밑에 조건문에서 checkPassword 를 통해 확인하는 것을 확인 checkPassword에서 password.equals 를 통해 문자열을 비교해준다는 것을 예측 가능 picoCTF{w4rm1ng_Up_w1tH_jAv4_eec0716b713}

[CodeEngn]Basic RCE L01 문제 풀이

문제 풀이 이 문제는 crackme 1번 문제와 흡사하다. 하지만 이 문제의 경우 GetDriveTypeA를 이용해야 한다. GetDriveTypepA의 반환값은 아래의 사진과 같다. 즉, 우리는 반환값으로 5를 가져야 한다. 문제가 풀렸지만 파일을 좀 더 살펴보도록 하자. 이제 파일을 실행해보자. ollydbg로 파일을 열어보자. 실행을 하다보면 GetDriveTypeA 함수를 지나고나서 EAX 값이 3으로 지정되어 있는 것을 볼 수 있다. 그래서 저 함수를 실행하자마자 EAX의 값을 5로 설정해주고 실행을 하였다. JE 전에 EAX와 ESI를 비교하는데 둘은 3으로 값이 똑같다. 정상적으로 실행이 되는 것을 확인할 수 있다. 이는 윈도우7에서 진행하였다. 윈도우10에서 올리디버거로 실행을 할 때는 E..

[webhacking.kr] old-10 문제 풀이

문제 webhacking.kr/challenge/code-1/ 풀이 문제를 열면 이러한 창이 뜨고 하단의 스크롤이 생겨 조정을 해보니 이러한 모습이 보인다. 코드를 확인해보자. 중요한 부분만 보자. onclick = this.style.left=parseInt(this.style.left,10)+1+'px'; 클릭을 할 때마다 left로 +1씩 이동하게 된다. Goal의 위치를 보니 "left:1600px" 이다. Goal의 위치까지 이동시켜야 한다는 것을 짐작할 수 있다. 이를 하나씩 눌러서 1600번을 갈 수 없으니 나는 위치를 처음부터 "left:1599px"로 수정을 해주었다. 그 뒤에 O를 한번만 클릭 해주었다. 문제가 풀렸다.

[abex' crackme] 5번 문제 풀이

문제 풀이 우선 파일을 열어보자. 시리얼을 입력하라는 창이 뜬다. 아무 값이나 입력을 하고 확인을 누르면 올바르지 않다는 에러 메시지가 뜬다. ollydbg로 파일을 열어보자. 밑으로 조금만 내려보면 아까 본 에러창이 보이고 그 위에 분기문이 보인다. 그 윗부분을 살펴보자. lstrcmpA 함수는 대소문자를 구분하여 문자열을 비교하는 함수이다. 리턴값인 EAX가 0이 되어야 한다. lstrcmpA 함수에서 비교하는 문자열이 같으면 0값을 반환한다. 그렇다면 String1, 2가 같은 값을 가지면 된다. 그 위에 lstrcatA 함수는 한 문자열에 다른 문자열을 추가해주는 함수이다. 이를 입력하고 check버튼을 눌러주었다. 이를 보아 우리가 입력해주는 값이 String2에 들어가서 비교되는 것을 알 수 ..

[abex' crackme] 4번 문제 풀이

문제 풀이 파일을 실행시켜보았다. 아무거나 입력을 해보아도 버튼이 활성화되지 않는다. ollydbg로 파일을 열어보았다. ollydbg에서 문자열을 찾아보았다. "Well done!" 이라는 문자열이 보인다. 일단 저 문자열을 따라가 보았다. MSVBVM60.__vba 이런 식의 문자들이 보인다. 이러한 정보들로 보아하니 비주얼 베이직으로 프로그래밍된 것을 알 수 있다. (peid를 이용하면 바로 알 수 있는 정보이다.) 비주얼 베이직으로 쓰인 함수들이다. 이는 우클릭 -> search for ->all intermodular calls 를 통해 볼 수 있다. 보다보면 StrCMP 라는 부분이 있는데 이 곳에서 비교해준다는 것을 예측할 수 있다. (시리얼 값을 입력받을 때, 그 값이 시리얼인지 아닌지 비..

[abex' crackme] 3번 문제 풀이

문제 풀이 파일을 실행시켜보았다. 확인을 누르면 파일을 찾을 수 없다는 메시지창이 뜬다. ollydbg로 파일을 열어보았다. 열자마자 우리가 아까 보았던 메시지창들이 보인다. 위에서부터 살펴보면 파일을 확인하려면 ok를 누르라는 메시지창을 띄운다. 그 밑에는 CreateFileA 가 보인다. 이는 파일 또는 I / O 장치를 만들거나 열어주는 기능을 한다. Mode의 OPEN_EXISTING은 파일 또는 장치가 있는 경우에만 열어준다. FileName은 "abex.l2c"이다. 즉, "abex.l2c" 파일이 있을 경우 이 파일을 열어준다. 하지만 현재 우리는 저 파일을 갖고 있지 않기 때문에 실행을 시키면 JE SHORT crackme3,00401075 가 실행되어 에러메시지를 띄운다. 그래서 "abe..

[webhacking.kr] old-18 문제 풀이

문제 webhacking.kr/challenge/web-32/ 풀이 문제에서 이는 SQL INJECTION 문제라고 알려주었다. view-source를 통해 소스를 확인해보았다. 중요한 부분만 보겠다. id 값이 admin이면 문제는 풀린다. 하지만 퀴리문을 보면 id 값은 guest로 지정이 되어 있다. 그러므로 우리는 no의 값을 통해서 admin 값을 만들어주어야 한다. 주석처리를 보니 admin의 no 값이 2라고 친절히 알려주고 있다. 0 or no=2 이렇게 치면 no hack이라는 문구가 뜬다. 그 이유는 preg_match를 통해 필터링을 해주고 있기 때문이다. 띄어쓰기를 필터링 해주고 있으므로 이를 %09(tab)으로 바꾸어 입력해보았다. 0%09or%09no=2 이를 주어진 칸에 입력을..

[webhacking.kr] old-15 문제 풀이

문제 webhacking.kr/challenge/js-2/ 풀이 문제를 열면 이러한 알림창이 뜬다. 그리고 확인을 누르게 되면 webhacking.kr의 메인화면으로 돌아가게 된다. 알림창이 뜨지 않아야 해당 문제의 소스코드를 확인이 가능하다. 그렇기 때문에 자바스크립트를 차단해주는 설정을 걸어준다. 크롬 브라우저의 오른쪽 위에 점 세개 -> 설정 -> 사이트 설정 -> 자바스크립트 에 가서 설정을 해주면 된다. 그 뒤 해당 문제에 다시 접속하여 코드를 확인해 보았다. 코드를 보니 url에 ?getFlag라는 값을 붙여주면 문제가 풀릴 것 같다. 문제가 풀렸다.