Wargame
-
<Webhacking.kr> old-01Wargame/Webhacking.kr 2021. 11. 4. 15:12
old-01 소스 코드만 보고 풀라는 것 같다. 위 구문을 풀면 풀리는 것 같다. 먼저 쿠키 'user_lv'의 값이 숫자가 아니면 'user_lv'의 값은 1이라고 한다. 그리고 'user_lv'의 값이 4이상이면 'user_lv'의 값이 1이라고 한다. 마지막으로 'user_lv'의 값이 3보다 크면 solve(1)을 실행한다. solve(1)이 아무래도 정답 함수인 듯 하다. 'user_lv'의 값이 3보단 커야하지만, 4보단 작아야한다. (4이상이면 1이 되기 때문) 따라서, 'user_lv'의 값에 3.5를 주면 된다. 주소 창에 'javascript:alert(document.cookie);'를 통해 현재 쿠키 값을 알아보면 'user_lv'의 값이 1이다. 이 값을 3.5로 바꾸면 된다. 바..
-
<XCZ.KR> 21번 문제Wargame/XCZ.KR 2021. 11. 3. 12:23
21번 문제 제목이 PHP Obfuscation Crack이다. 말 그대로 PHP 난독화를 풀라는 뜻이다. View source를 통해 소스 코드를 살펴보자. 코드를 분석하기 굉장히 어렵다. PHP Obfuscation Decoder를 통해 풀어보겠다. 그래도 이해하기 굉장히 힘들다. 알아보기 쉽게 변수명을 알파벳 대문자로 바꿔본다. 먼저, h() 함수를 정의한다. $b에 전달받은 $a를 하나씩 아스키코드 숫자로 변환해서 붙이는 것을 확인할 수 있다. 'key'는 GET 방식으로 전송한다. 이 전송한 'key'는 '-'으로 분할하여 배열로 저장한다. 그리고 PHP에서 '@'는 오류 메시지를 표시하지 않겠다는 뜻이므로 코드 중간의 'Error'가 나타나는 반복문은 무시했다. 아래 조건문 4개가 등장한다. ..
-
<XCZ.KR> 18번 문제Wargame/XCZ.KR 2021. 11. 2. 17:22
18번 문제 Title이 Web Basic인걸로 보아 웹 해킹 문제인듯 하다. 우선 View source를 통해 페이지 소스를 먼저 살펴보겠다. 굉장히 보기 힘든 변수들로 이루어진 PHP문이 있다. 우선 읽기 힘든 변수들 먼저 바꿔보겠다. 쿠키로 받은 값을 $A, GET 방식으로 받은 값을 $B, POST 방식으로 받은 값을 $C라 한다. 그리고 $A, $B, $C중 하나라도 비어있다면 'wrong T.T'를 출력한다. $D는 $B와 $A를 이어붙였고, $E는 $C이다. 그리고 test함수가 나와있다. $b는 빈문자열로 시작하고 파라미터로 받은 $a의 길이만큼 반복한다. 한번 반복할때 마다 $b에 '-'와 문자($a의 문자를 아스키코드로 변환한 것)를 이어붙인다. 아래엔 $D와 $E를 test함수에 인수..
-
<Suninatas> 8번 문제Wargame/Suninatas 2021. 11. 1. 15:40
8번 문제 로그인 창이 있고 패스워드가 틀렸다고 한다. 우선, 페이지 소스코드를 먼저 살펴보겠다. 로그인 창을 구성하는 HTML코드가 있다. 따로 특별한 함수가 보이지 않고, 아래에 힌트가 주어져 있다. admin으로 로그인하고 패스워드는 0부터 9999까지라고 한다. 페이지 소스코드에 브루트 포스를 방지하는 구문이 없는걸로 보아 브루트 포스 공격으로 패스워드를 찾아내면 될 것 같다. Burp Suite를 이용해 브루트 포스 공격을 수행해 보겠다. Burp Suite의 Proxy를 이용한다. 먼저 로그인 창에 아이디는 admin 패스워드는 0을 입력한다. Proxy의 HTTP history에서 방금 로그인한 Request를 찾을 수 있다. 이것을 Burp Suite의 Intruder로 보낸다.(마우스 오..
-
<Suninatas> 7번 문제Wargame/Suninatas 2021. 10. 31. 17:23
7번 문제 아이유 사진과 "그녀를 좋아하는가?"라는 질문이 있다. 밑으로 내려보면 "YES"버튼이 있다. "YES" 버튼을 눌려보면 너무 느리다고 한다. 이 페이지에 접근하는 동시에 "YES" 버튼으로 접근을 해야할 것 같다. 우선, 페이지 소스코드를 먼저 살펴보면 noEvent() 함수를 찾을 수 있다. keyCode값이 116이나 9를 누르면 "No!" 알람이 뜨고, false를 반환한다. 또, ctrl키와 keyCode값이 78이나 82를 누르면 false를 반환한다. ※ keyCode 반환값(https://keycode.info/) 그리고 아래 힌트에 "더 빠르게 더 빠르게"라고 힌트가 주어져 있다. 앞서 생각한대로 빠르게 "YES" 버튼으로 접근하면 될 것같다. 소스 코드에서 "YES" 버튼은 ..
-
<Suninatas> 6번 문제Wargame/Suninatas 2021. 10. 31. 16:41
6번 문제 한 게시판이 등장한다. 1번 Hint를 들어가 보면 suninatas의 글을 읽어보라고 한다. 2번 reference! 를 들어가 보면 해시함수 사이트가 나온다. 제목대로 참고하라는 것 같다. 3번 README를 들어가 보면 패스워드를 입력할 수 있는 칸과 SQL문이 나와있다. T_Web13 테이블에서 nldx가 3이고 szPwd 칼럼을 참고해 szPwd를 구하는 쿼리문이다. SQL문이 나와있는 걸로 보아 SQL Injection을 수행해야 하는 것 같다. 4번과 5번은 그냥 적어놓은 것 같다. 3번의 패스워드 입력 폼에 SQL Injection의 기본 구문인 1' or '1'='1'-- 구문을 삽입하니 "NO! hacking!"이라는 알람이 뜬다. 아무래도 필터링되는 문자열이 있는 것 같다...
-
<Suninatas> 5번 문제Wargame/Suninatas 2021. 10. 29. 22:25
5번 문제 어떤 키 값을 넣으면 인증 키 값을 얻을 수 있는 것 같다. 우선, 일반 문자나 특수 문자를 입력해 보았으나, 어떠한 동작도 하지 않았다. 페이지 소스보기를 통해 소스코드를 살펴보겠다. eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('g l=m o(\'0\',\'1\',\'2\',\..
-
<wargame.kr> DB is really GOODWargame/wargame.kr 2021. 10. 25. 23:57
DB is really GOOD 무슨 종류의 데이터베이스인지 묻는다. 유저 이름과 데이터베이스 사이에서 연관성을 찾아야 한다고 한다. USER의 이름을 입력할 수 있는 입력 폼이 있다. 우선 'admin'으로 접근해 보았다. "don't access with admin"이라는 알림이 뜬다. 'admin '(어디서 봤는지 기억이 나진 않지만)으로 우회해 보았다. 하나의 채팅방이 나오지만, 문제 풀기위한 방향과는 거리가 먼 것 같다. 특수 문자 '/'를 입력하면 데이터베이스 관련 오류 메시지를 보여준다. 개발자 관점에서 웹 사이트를 배포할 때는 이러한 오류 로그가 클라이언트에게는 보이지 않도록 처리해야 한다. 오류 로그를 살펴보면 데이터베이스를 열 수 없다고 한다. SQL Lite를 이용하여 로컬 데이터베이..