WarGame
[Suninatas] 3번 문제
공지사항 게시판에 글쓰기 라고 써져있다. 사실 여기서 엄청나게 해맸다..... 알고보니 Suninatas 의 게시판에 글을 쓰라는 것이었다. 이 처럼 글쓰는 페이지가 보이지 않았다. 소스 페이지를 봐도 찾기가 힘들어서 다른 게시판인가해서 FREE 게시판에는 글쓰기가 존재했다. 해당 페이지의 URL를 확인해보니 경로가 /free/write 였다. 혹시하며 notice 페이지로 이동하여 해당 URL 의 뒤에 /write 를 입력하니 해당 페이지가 표시되었다. 내용을 입력하고 SUBMIT 버튼을 누르면 인증코드가 나온다. 글쓰기 버튼이 없어도 예측할 수 있는 경로로 설정해놓으면 접근 할 수도 있는 취약점의 문제인 것 같다.
[Suninatas] 2번 문제
ID 와 PW 입력창만 보이는 간단한 UI이다. 페이지 소스를 확인해보자. 페이지의 하단에 ID 와 PW 가 같으면 공백으로 처리evel 2 ID 와 PW 입력창만 보이는 간단한 UI이다. 페이지 소스를 확인해보자. 페이지 소스 페이지의 하단에 ID 와 PW 가 같으면 알림창과 함께 칸을 공백으로 변환하는 코드이다. 크롬의 개발자 도구에 HTML 코드를 임의로 실행해주는 기능이 있다. 그것을 이용해서 코드를 변환하여 실행해보자. 코드를 복사하여 Console 부분에 함수를 붙여넣고 형광색으로 칠한 부분을 == -> != 으로 변경하여 반대의 코드로 변환하였다. 그리고 같은 ID 와 PW 를 입력하니 AuthKey 값이 나왔다. 처음엔 실패한 줄 알고 계속 시도했었는데 이 값이 맞는 거였다.
[Suninatas] 1번 문제
Suninatas 는 난이도가 쉬운편이라고 하여 차근차근 풀어보려고 한다. Level 1 부터 풀어보겠다. 간단한 PHP 코드가 나타났다. Replace 함수는 문자열을 치환하는 함수이다. Mid 함수는 일정 갯수를 가져오는 함수로 비슷한 함수로 LEFT, RIGHT 함수가 있다. LEFT : 문자에 왼쪽을 기준으로 일정 갯수를 가져오는 함수. {Ex : LEFT(문자, 가져올 갯수)} MID : 문자에 지정한 시작 위치를 기준으로 일정 갯수를 가져오는 함수. {Ex : MID(문자, 시작 위치, 가져올 갯수)} RIGHT : 문자에 오른쪽을 기준으로 일정 갯수를 가져오는 함수. {Ex : RIGHT(문자, 가져올 갯수)} 코드를 해석해보니 admin 이라는 문자열을 체크해야하지만 admin 의 스펠링을..
[Lord of SQL Injection] 3번 문제 goblin
가장 기본적으로 no 에 무작위로 값을 넣어보았다. 우선 guest는 no 번호가 1번으로 설정되어 있나보다. 코드를 보지도않고 우선 union injection 을 시도해보았다. no=0 union select id from prob_goblin where id='admin' 바로 막혀버렸다.. if(preg_match('/\'|\"|\`/i', $_GET[no])) exit("No Quotes ~_~"); 이 부분때문에 쿼티를 사용하여 admin 이라는 문자열을 id로 넘겨줄 수 없었다. no=0 and id=%27admin%27 으로 쿼티를 URL 인코딩을 시도해보아도 서버에서 인증하는 값은 같아서 그런지 막혔다. URL 인코딩을 시도하다보니 HEX 값으로 인코딩하면 될 것 같았다. admin 문자..
[Webhacking.kr] Challenge(old) - 02
이번에는 webhacking.kr 의 2번째 문제를 풀어보자! 문제를 클릭해보면.. 뜬금없이 나오는 왠 아이피를 로깅중이라니? 우선 F12 로 코드를 확인해보자 맨 위의 주석은 error 라고 설명하고 잇고 html 문서는 아무런 내용도 없다. 그런데 바디라인의 주석에 뭔가 php 문서이름이 나타나있다. 만약 admin.php에 접근하면 나의 엉덩이를 걷어찬다는 주석이다.. 뭔지 모르겠지만 차여봐야할거같다. 하위 admin.php 파일로 들어가는 것이 뭔가 맞는거같다. 그런데 갑자기 비밀번호를 물어본다. 아무거나 입력해보자. 당연히 잘못된 비밀번호이다.. 이것저것 찾아보던 중 쿠키가 있는 것을 확인했다. 혹시 이값이 패스워드인가? 해서 입력해보았다. 당연히 아니었다.. 꽤 오랜시간 소비하면서 못 풀어서 ..
[Lord of SQL Injection] 2번 문제 colbat
Lord of SQL Injection의 2번째 문제인 colbat을 풀어보자! colbat을 누르면 달랑 문제 소스코드 하나만 나온다. 이것을 보고 음... 1번문제랑 비슷한데 md5는 비밀번호 암호화 하는거 아닌가? 이걸 어떻게 풀지 하면서 pw에 값을 넣어보았다. 밑에 내용을 보면 if($result['id'] == 'admin') solve("cobolt"); 을 보고 id가 admin으로 참을 만들면 되겠다 라는 생각으로 단순하게 이렇게 풀었다.. 왠걸 갑자기 rubiya가 나와서 당황했다. 생각해보니 앞에 and 연산이므로 admin 은 이미 거짓이 되었으므로 or 로 억지로 참을 만든거같다. 기본값이 rubiya 였던거 같다. 그렇다면? 다시 쿼리문을 쓰면 되지않을까? 역시 맞았다. 그런데 ..
[Webhacking.kr] Challenge(old) - 01
웹 해킹을 지원하는 사이트로 가장 유명한 Webhacking.kr 사이트를 이용하여 웹 해킹을 공부하려고 한다. Challenge(old)는 61개로 되어 있으며 풀어보며 학습하도록 할 것이다. 우선, 사이트로 들어가 Challenge(old)를 누르면 리스트가 나타난다. 가장 먼저 1번 문제부터 풀어볼 것이다. 첫 화면은 아무것도 없이 level : 1 이라는 것과 view-source 라는 버튼만 나타난다. F12를 눌러서 코드를 확인해보면 쿠키에 대한 코드는 나오지 않으므로 저 view-source 라는 버튼을 눌러서 소스를 확인한다. 이와 같이 PHP 소스를 확인할 수 있다. 복잡한 것 같지만 자세히보면 cookie 에 대한 코드이다. 처음 PHP코드는 cookie의 user_lv 라는 이름을 가..
[Lord of SQL Injection] 1번 문제 gremlin
LOS에 로그인을 하면 가장 먼저 gremlin cobolt goblin orc 등등 문제에 이름을 붙여놓은 리스트가 있다. 첫 번째 문제를 풀어야 다음 문제로 넘어 갈 수 있는 시스템으로 되어있다. 차근차근 첫 번째의 Gremlin 문제를 풀어보도록 하겠다. 문제를 클릭하고는 맨 처음은 무엇을 하라는 것인지 한참 고민했다. 우선 PHP 언어로 된 코드를 천천히 살펴보았다. 위의 PHP 코드는 간단하게 DB의 정보를 SQL 쿼리문을 이용하여 ID 와 PW가 일치하는지 확인하는 간단한 코드이다. 1번 문제는 SQL Injection의 기본 지식을 가지고 풀 수 있을 것같다. 이 웹 사이트는 GET방식을 이용하므로 도메인의 뒤에 값을 주어 변수 값을 수정할 것이다. 이런식으로 주소창의 뒤에 ?id=admin..