Wargame 64

Webhakcing.kr old 20번 문제 풀이

20번을 누르면 위와 같은 화면이 나온다. 각각의 칸이 빈칸이면 return이 되고, captcha 값과 captcha_ 값이 다르면 return이 된다. 우선 아무 값이나 입력해서 submit을 보내보자. 값을 입력한 후 전송하면 위와 같은 창으로 바뀌었다가 다시 돌아온다. Too Slow... 라고 되어 있는 것을 보니 문제에 기재된 timelimit 2초 안에 값을 넣은 후 Submit을 해야 문제가 풀리는 것 같다. 아무리 빨리 입력해도 2초 안에 입력하는 것은 불가하기 때문에, Console 창을 이용하였다. 새로 고침 후 2초 안에 위와 같은 코드를 입력해주면 문제가 풀린다.

CodeEngn Basic RCE L05

문제 이 프로그램의 등록키는 무엇인가. 05.exe를 ollydbg에 돌리면 위와 같은 메시지 창이 뜬다. F9를 통해 실행시키면 아래와 같은 프로그램이 뜨게 된다. 여기서 뭘 더 해야할 지 모르겠어서 PEView로 열어보았다. PEView로 열어보니 UPX0과 UPX1이라고 되어 있는 부분이 있었고, 이를 보고 UPX로 패킹되어 있음을 의심해 보았다. PEiD로 돌려보니 UPX로 패킹되어 있는 것을 볼 수 있었고, 따라서 05.exe를 언패킹 해보았다. 언패킹을 수행한 후 PEView로 열어보았다. PEView로 연 후 05.exe의 SECTION CODE 부분에서 cracked successfully Congrats! 라는 메시지를 찾았고, 그 위에 시리얼 키가 있었다. 이를 입력하니 문제가 풀렸다...

Wargame/CodeEngn 2021.05.02

CodeEngn Basic RCE L04

문제 이 프로그램은 디버거 프로그램을 탐지하는 기능을 갖고 있다. 디버거를 탐지하는 함수의 이름은 무엇인가. 04.exe 파일을 ollydbg로 열어보았다. F9로 실행을 시키니, 디버깅 당함이라는 메시지가 콘솔창에 출력되었다. 그럼 디버깅 당함이 뜨기 전에 디버거를 탐지하는 함수가 있을 것이다. '디버깅 당함' 문자열이 출력되는 주소는 00408454이다. 이때 명령어는 CALL 04.0040100F로, 0040100F 주소에 있는 함수를 호출한다는 뜻이다. 그래서 0040100F 주소로 이동해보았다. 0040100F에서는 다시 00401030으로 JUMP 된다. 00401030으로 가보니 명령어들이 있는 것을 볼 수 있었고, 0040105E에서 IsDebuggerPresent라는 함수가 있는 것을 볼..

Wargame/CodeEngn 2021.05.02

CodeEngn Basic RCE L03

문제 비주얼베이직에서 스트링 비교함수 이름은? 03.exe를 ollydbg로 돌려보려고 하니, dll이 없어서 코드 실행을 진행할 수 없다는 메시지 창이 떴다. 그래서 ollydbg로 보는 건 포기하고, 스트링 비교함수를 찾는 거니까 정적 분석 도구 중 하나인 Strings를 사용해서 문자열을 추출해 보았다. 다운로드 링크 : docs.microsoft.com/ko-kr/sysinternals/downloads/strings 내려서 확인해보던 중에 VBA5.DLL 하위에 vbaStrCmp가 있는 것을 볼 수 있었고, 이를 입력하니 문제가 풀렸다.

Wargame/CodeEngn 2021.05.02

CodeEngn Basic RCE L02

문제 패스워드로 인증하는 실행파일이 손상되어 실행이 안되는 문제가 생겼다. 패스워드가 무엇인지 분석하시오 02.exe 파일을 ollydbg에 넣어보았는데 Error와 함께 파일을 읽을 수 없었다. 혹시 64비트에서 제작된 프로그램이라 실행이 안 되는 건가 싶어서 ollydbg 설정을 추가로 해주었지만, 그래도 exe 파일이 열리지 않았다. 그래서 exe 파일이 아닌 건가 하는 생각에 HxD로 까보았다. HxD로 까보았는데 exe 파일 헤더를 가지고 있길래 뭔가 했더니 문제에서 애초에 실행파일이 손상되어서 실행이 안 된다고 되어 있었다. . . ^^ . . . HxD로 파일을 보던 중에, 패스워드랑 관련되어 있는 것 같은 부분을 찾게 되었다. Addialog를 보니 특정 창을 띄우는 코드? 인 것 같고 실..

Wargame/CodeEngn 2021.05.02

Webhacking.kr old 1번 문제 풀이

1번 문제를 클릭하면 위와 같은 화면이 뜬다. view-source를 눌러보자. $_COOKIE['user_lv']의 값이 4보다 작고 3보다 크면 solve(1)이 되면서 문제가 풀릴 것 같다. 처음 php 코드를 보면, !$_COOKIE['user_lv'] 한 값이 참이면, SetCookie 함수를 실행한다. www.php.net/manual/en/function.setcookie.php 공식문서에 따르면, SetCookie 함수의 인자로는 쿠키 이름, 쿠키에 설정할 값, 쿠키 만료 시간, 쿠키를 사용할 수 있는 서버 경로(기본 값은 쿠키가 설정되어 있는 현재 디렉토리), 쿠키를 사용할 수 있는 도메인, 보안(true로 설정하면 보안 연결이 있는 경우에만 쿠키 설정), HTTP 프로토콜만 사용할지에 ..

CodeEngn Basic RCE L01

문제 HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가 docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getdrivetypea GetDriveTypeA function (fileapi.h) - Win32 apps Determines whether a disk drive is a removable, fixed, CD-ROM, RAM disk, or network drive. docs.microsoft.com Microsoft 공식 문서에 따르면, GetDriveTypeA 함수의 리턴값에 대한 설명은 다음과 같다. 문제에서 묻고 있는 HDD를 CD-Rom으로 인식시키기 위한 GetDriveTy..

Wargame/CodeEngn 2021.05.01

Webhacking.kr old 58번 문제 풀이

58번을 누르면 위와 같은 문제가 나온다. 1을 보냈을 때는 command not found라는 메시지가 뜬다. 명령어를 입력하는 곳인 것 같아서 ls를 쳐보았다. 그랬더니 index.js와 temp.html 파일이 있음을 알 수 있었다. 안 되는 linux 명령어가 많아서 되는 명령어를 확인하기 위해 help를 입력하였다. help를 입력하니 ls, id, flag, help 총 4개의 명령어가 있는 것을 확인할 수 있고 id와 flag를 각각 입력해 보았다. 위는 id를 입력한 결과, 아래는 flag를 입력한 결과이다. 소스코드를 확인해 보았다. 각각의 문법을 간단히 살펴보자. socket = io()를 통해 새로운 소켓을 생성해주고, emit()을 통해 메시지를 보낸다. 그런 다음 on을 통해서 서..

Webhacking.kr old 32번 문제 풀이

32번 문제를 클릭하면 위와 같은 화면이 나온다. 아무 생각없이 inpereal을 클릭했더니 투표가 되었다 . . . .이를 어째 다른 사람들을 더 눌러보니 you already voted라는 메시지 창이 뜬다. 쿠키를 살펴보니 vote_check라는 쿠키값이 있는 것을 알 수 있다. ok로 되어 있는 값을 없애주었더니 투표가 추가적으로 가능했다. 찾아보니 내 닉네임도 존재하는 것을 알 수 있었고, 내 닉네임에 해당하는 값을 100으로 올려주면 문제가 풀리지 않을까? 하고 생각했다. 한 번 누를 때마다 쿠키값에 들어가는 ok를 삭제하는 게 번거로워서 사진에 보이는 금지 모양을 눌러(형광펜 칠해진 기호) 쿠키를 아예 작동하지 않게 해주었다. (값으로 차단 추가 설정) 클릭을 한 20번 정도 하다보니까 귀찮..

Webhacking.kr old 31번 문제 풀이

31번 문제를 클릭하면 위와 같은 화면이 나온다. 서버에 연결하는 것이 거절되었다는 에러 메시지가 출력되고 있다. 코드에서 fsockopen() 함수를 사용하고 있어서, 이게 무엇인지 알아보았다. fsockopen() ; PHP에서 사용되는 함수로, 소켓 통신에 사용된다. fsockopen("IP주소", "포트번호", "에러", "에러메시지", "연결시도시간")이 문법이고, 반환되는 값은 파일 포인터이다. 사진에서는 IP를 가려두었지만, 내 IP로 연결되는 것을 알 수 있는데, 연결이 될 수 있도록 10000번부터 10100의 포트를 열어주어야 한다. (포트포워딩) KT 공유기를 사용하는 경우에는 http://172.30.1.254를 입력하여 공유기 설정 페이지로 접속하면 된다. cmd에서 ipconfi..