웹해킹/wargame.kr

문제를 읽어보면 SQL injection 문제라는 것을 알 수 있다. start 버튼을 누르면 다음과 같이 ID 입력 창이 나온다. ID를 아무거나 입력 한 후 join 버튼을 누르면(id에 공격 코드 넣어도 안 먹힘) 채팅창이 나온다. 채팅창에 이제 아무거나 입력을 해보자 다음과 같이 아무거나 입력 후 개발자 도구를 통해 이 채팅이 어디로 가는지 확인해 보면 된다. 개발자 도구에서 chat.php를 확인하면 chatlog.php?t=1이랑 chatview.php?t=1&ni="+ni라는 부분을 볼 수 있다. chatlog.php = 현재까지의 채팅 개수 확인하는 페이지 chatview.php = 현재까지의 채팅기록을 볼 수 있는 페이지 우선 chatlog.php 페이지를 들어가보면(/chatlog.ph..
문제를 들어가면 다음과 같은 페이지가 나온다. get source를 눌러 소스를 보았다. D1: D2: get source 코드를 햇거하면 tmp/p7 파일이 존재하지 않으면 p7.c 파일을 컴파일 하여 p7이라는 파일을 만들고 첫번째 값을 p7이라는 실행파일에 집어넣고 실행한 값을 result라는 변수에 저장한 후 result 값이 1이 아니고 d1하고 d2 값이 동일하면 flag 값을 출력하고 그렇지 않으면 try again이라는 문구를 출력하라는 것이다. 이제 p7.c라는 코드를 확인해보자 http://wargame.kr:8080/php_c/p7.c 불러오는 중입니다... 다음과 같이 입력하면 p7.c 코드가 나온다. #include #include void nono(); int main(int a..
문제를 해석하면 PNG 이미지 파일을 복구하라고 한다. 하지만 이게 진짜 PNG 파일이냐고 물어본다, (스테가노그래피는 아니고 포렌식 챌린지 문제이다) 이제 start를 누르면 ptsd가 올 것같은 사진과 함께 find the code!!라는 문제가 있다. 뒤에 있는 사진을 복구하면 되는 것 같다. 개발자 도구를 누르면 pattern pattern이라는 파일이 있다. 이 파일을 다운 받은 후 HXD를 키고 다운 받은 파일을 열면 맨밑에 .tEXtSoftware.Japng r119라는 글자가 있다. 인터넷에 Japng라고 검색을하면 java apng라는 것을 알 수 있다. apng 파일은 .gif 파일처럼 애니메이션을 구연하였지만 기존 PNG 파일과의 호환성을 유지한 파일이다. 쉽게 말해서 png파일이지만..
type confusion 문제를 눌러보면 start를 누르면 view-source를 누르면 view-source 다음과 같은 코드가 나오는데 여기서 중요한 코드만 해석해보면 if (isset($_POST['json'])) { usleep(500000); require("../lib.php"); // include for auth_code function. $json = json_decode($_POST['json']); $key = gen_key(); if ($json->key == $key) { $ret = ["code" => true, "flag" => auth_code("type confusion")]; } else { $ret = ["code" => false]; } die(json_encode..
이번에는 tmitter 문제를 풀어보기로 하였다. tmitter 문제를 눌러보면 우리는 "admin"이라는 계정으로 로그인을 해야한다고 한다. 일단 start를 눌러보면 일단 Tmitter 계정을 하나 만들어 보자 Sign up을 누르면 다음과 같이 나오는데 ID는 4글자 이상 패스워드가 7글자 이상이라고 한다. 일단 id, ps는 32글자로 정해두었다. 일단 id를 32글자 이상으로 만들어서 32글자만 해석되고 짜르게 해야 할 것 같다. 일단 F12를 눌러 ID 코드를 확인해보면 maxlength가 32글자로 되어있는데 33글자로 바꿔 준다. 그리고 admin이라고 치고 공백으로 채운다음 마지막에만 숫자를 넣어준다 ex) admin 2 이런식으로 만들면 된다. 비밀번호는 7글자 이상이면 된다. 비밀번호..
이번에 풀어볼 문제는 md5 compare라는 문제이다. md5 compare 문제를 들어가면 다음과 같이 뜬다. start 버튼을 누르면 다음과 같이 뜬다. view-source를 눌러 소스를 확인하면 다음과 같이 나오는데 소스를 해석해보면 value 1의 값과 value 2의 값이 같아야 해결이 된다. 근데 v1에는 알파벳만 들어가야하고 v2에는 숫자가 들어가야한다. 결론은 알파벳을 넣고 md5 해시 했을 때 값과 숫자를 넣고 md5 해시 했을 떄 값이 동일해야 한다. 당황할 수 밖에 없는 문제였다. 보안기사 공부할 때 해시 함수를 돌리면 충돌이 발생하지 않고서는 서로 다른 값이 같을 수가 없다고 배워왔길래 내가 배워온 지식을 부정하는 것 같았다. 그래서 혹시나 하는 마음에 구글에 'md5 equal..
strcmp 문제를 눌러보면 다음과 같이 나온다. 문제를 해석해보면 "너가 'strcmp'함수를 우회할 수 있다면 너는 flag를 얻을 수 있을것이다." 이 소리이다. 일단 먼 소리인지는 모르겠지만 start를 눌러보자 start를 누르면 다음과 같이 password를 입력하는 창이 나온다. 일단 밑에 view-source를 눌러보자 다음과 같은 코드가 나온다. 코드를 대충 해석해보면 $password = sha1(md5(rand().file_get_contents("/var/lib/dummy_file")).rand()); -> password 값은 랜덤함수를 돌릴 것이다. if (strcmp($_POST['password'], $password) == 0) -> 내가 입력한 패스워드 값과 random ..
WTF-CODE 문제를 클릭하면 다음과 같이 나온다. 해석하면 프로그래밍 언어 중 하나다. 너는 이 코드를 읽을 수 있냐? 라고 나온다. start 버튼을 눌러보면 이런 괴기한 글이 있고 밑에 source_code.ws 파일을 다운 받으라고 되어있다. 일단 다운을 받고 ws 파일이 무엇인가 궁금해서 구글에 ws 파일을 쳐보니 광고글 밖에 없다. 일단 파일을 열기 위해 File Magic이라는 파일을 설치하였다. 설치 하고 키면 다음과 같이 나오는데 파일을 끌어오던 불러오던 불러오면 이런 메시지가 뜨면서 은근 예를 누르도록 유도하지만 우리는 생각이 가능한 사람이기 때문에 아니요를 누른다. 누르면 또는 ws 파일을 메모장으로 열어도 열린다. 다음과 같이 코드가 나온다. 얼핏보기에 점자 또는 모스부호 같아서 ..
DB is really good이라는 문제를 누르면 다음과 같이 나온다. 누가봐도 DB와 관련된 문제이다. start 버튼을 누르고 들어가보면 다음과 같이 나오는데 일단 코드먼저 확인해보았다. 크롬을 사용하는 경우 ctrl+u를 누르면 코드를 확인할 수 있다. 코드를 확인해보면 다음과 같이 코드가 나온다. 코드를 살펴보면 "admin"이라고 입력한경우 "admin은 접근이 안된다"라는 경고창이 뜬다. admin으로 접속하지 말라는 소리다. 하지만 인간이란 생물은 하지말라면 더 하게 되는 종특이 있기에 admin으로 접속해 보았다. 다음과 같이 뜬다. 그래서 아무거나 입력하고 들어가봤다. admin에서 min을 빼고 ad만 입력하였을 때다. 역시 다들 admin을 한번씩은 입력한 것 같아 먼지모를 동질감을..
md5 password 문제를 누르면 다음과 같이 나온다. md5('value', true)이게 힌트가 될수 있다. 일단 md5 해시 원리에 대해 알아야한다. md5같은 경우 인자로 들어온 문자열을 md5 해시하여 32bytes의 길이로 반환을 해준다. 여기서 두번째 인자를 옵션으로 줄 수 있는데 이 값은 'true' or 'false'로 줄 수 있다. 기본적으로 default 값은 'false'인데 'false'일 경우 32bytes의 값 'true'일때는 Hex값을 16bytes의 바이너리값으로 반환해준다. 이제 start 버튼을 눌러보면 다음과 같이 나오는데 여기서 get source 버튼을 누르면 다음과 같은 코드가 나온다. 이제 이 코드에서 우리는 이 부분을 봐야하는데 이코드를 간략하게 해석하면..
fly me to the moon이라는 문제를 클릭하면 다음과 같이 나온다. 게임인데 치팅 시스템 방지 프로그램을 우회해서 게임을 깰 수 있냐고 물어본다. 일단 들어가보자 이런 게임이 나오는데 게임을 하다 죽게 되면 다음과 같은 문구가 뜬다. 31337점 이상을 얻어야 flag가 나오는 것 같다. 이제 burpsuite를 사용해서 조작을 해야할 것 같다. 먼저 proxy 설정 해주고 게임에서 게임오버가 되어 이런 문구가 떠야한다. 이 부분에서 패킷을 캡쳐하면 score부분을 31337보다 크게 잡아주고 intercept is off 누르면 눌러준다 누르면 다음과 같이 flag가 나오는데 이 flag를 문제에 넣고 AUTH를 누르면 색깔이 바뀌어 있다.
login filtering 문제를 눌러보면 다음과 같이 나온다. 해석해보면 나는 계정이 있지만 잠겨있다. 필터링을 우회할 수 있냐고 물어본다. start 버튼을 누르면 다음과 같이 로그인 창이 나온다. 그리고 밑에 get source라는게 보인다. 이 get source를 누르면 복잡한 php 코드가 나온다. 그 중에서 if문을 보게 되면 id가 'guest'이거나 'blueh4g'일 경우 your account is blocked라는 메시지를 출력하도록 되어 있다. 그리고 나머지는 "login ok"라는 문구를 띄어주도록 되어있다. 이 때 비교 대상은 쿼리 결과로 나온 $row['id']가 아니라 $id이다. 또한 MYSQL은 대소문자를 구분하지 않기 때문에 id에 'guest'대신에 'Guest'를..
3년안에 내집 마련
'웹해킹/wargame.kr' 카테고리의 글 목록