basic level 1: 주석에 써있다.
basic level 2: 입력하는 폼 부분을 찾아보면...
<select class="b2txtarea1" name="name"><option value="Admin">Admin</select><p>Password:</p><input type='hidden' name='pass' value='pass.html' /> 이라고 히든 속성으로 하나가 있다.
pass.html로 가보면된다.
basic level 3: user-agent값이 다르다고 안된다고 나온다. User agent Switcher로 하나하나 바꾸다 보니
googlebot일때 됬다고 나온다.
basic level 4: 자동으로 비밀번호가 입력되 있으니, 어드민으로 들어가라고 한다. 처음엔 그냥 크롬 개발자도구로 보내지는 값만 admin으로 바꿨는데....
You have the right idea, although this challenge's focus is to make sure you know how to edit and execute from local scripts.
Please try again.
라고 문제 의도가 스크립트를 바꿔서 실행시키는거라고 한다. 페이지를 다 다운받아서 입력 폼 부분을 바꿔서 보내면 된다. 근데 이상하게도 페이지 소스를 다운받으면 form태그를 종료하는 </form>위치가 조금 바뀌므로 다시 잘 바꿔서 보내면 된다.
<center><p>WARNING UNAUTHORIZED ACCESS IS PROHIBITED</p></center><center>Please login as Admin. Your password has been saved.</center><div id="basic4"><p>Username:</p><form action="http://securityoverride.org/challenges/basic/4/" method="post"><input type="hidden" name="CSRF_TOKEN" value="<?php echo $_SESSION['CSRF_TOKEN'];?>">
<select class="b4txtarea1" name="uname"><option value="Admin">Admin</option><option value="Anonymous">Anonymous</option><option value="qkqhxla">qkqhxla</option></select><p>Password:</p><p>**********</p><div id="challengelogin"><input type="submit" value=""></form> 이런식으로..
basic level 5: 레벨 4와 같은건데 이번엔 개발자 도구로 보내는 value만 Admin으로 바꾸면 통과.
basic level 6: <input type='hidden' name='email' value='admin@securityoverride.com' />이라고 리셋시 보내지는 메일 주소가 있다... 내껄로 바꾸면통과.
basic level 7: 파로스로 응답메시지를 잡으면 Password: 81gl32lb8w0e
라고 보인다.
basic level 8: 데이터베이스와 놀 시간이란다. 비밀번호에 ' or 1=1--, ' or '2'='2'--, 등으로 해보면 된다. 근데 ' or 'a'='a'# 나 ' or 3>2-- 같은건 안된다. 페이지는 php인데 하드코딩되어있거나 db가 mysql이 아니라 다른거같다...
basic level 9: 쿠키. 쿠키가 no로 되어있는데 yes로 바꾸면된다.
basic level 10: 쿠키 오염. 처음 쿠키엔 아무것도 없는데, 아무거나 비밀번호 입력해서 로그실패하고 실패 화면에서 쿠키를 보면 pass라는 쿠키가 있다. pass쿠키에는 우리가 입력한 값이 들어있다. 여기에 인젝션을 하면 된다. ' or 1=1--
basic level 11: 주소 끝에 index.php?status=1라고 써있다. 2로 바꿔보면 open함수가 쓰여져있으며 파일을 열수 없다고 나온다. 리눅스가 좀 약해서 뭔지 이것저것 해보다가 포럼들어가서 힌트찾아봤다.
뒤에 ?status=0|ls|grep처럼 |로 잘 이어주면 되던데 이게 정상적인 명령어가 아닌 status=0|ls|a 같이이 없는 명령어(마지막의 a)를 입력해도 그냥 답이 나온다. |ls|가 들어가면 나오도록 하드코딩해놓은듯.... /basic/11/4cgh2Sj4A.txt로 들어가면된다...
basic level 12: ?id=1%20or%201=1--처럼 뒤에 입력해보면 유저가 다 뜨는걸로 보아 sqli가 된다.
(또 주석문을 보면 힌트가 써있다.) 힌트는 스키마밖에 없다고한다.
http://securityoverride.org/challenges/basic/12/index.php?id=1%20union%20select%201,2,3,4--
처럼 union으로 숫자를 하나하나씩 붙여나가다 보면 1,2,3,4까지 붙였을때
Welcome user: 2
Email: 3
WARNING UNAUTHORIZED ACCESS IS PROHIBITED
Please Login.
라고 나온다. 근데 2대신 rara같은 문자열을 쳐봐도 되는걸 보니 그냥 서브쿼리로 출력할 생각을 하고
http://securityoverride.org/challenges/basic/12/index.php?id=1%20union%20select%201,(select%20group_concat(table_name)%20from%20information_schema),3,4--
처럼 중간에 서브쿼리를 써봤지만 나오지 않는다; 이것도 실제 서비스가 돌아가는게 아니라 뭔가
제대로 나오도록 하드코딩되어있는것같다. 뭔가 될것같은데 안되길래 포럼에서 찾아봤는데..
union select 1,column_name,3,4-- 라고 한다. 아니 이건 정상적인 쿼리가 아닌데...
뒤에 from information_schema등이 없는데도 그냥 있는것처럼 저리 쓰면 나온다.(내가 뭘 모르는건가?) 문제는 2,3이 취약한 부분인데 2번에는 저렇게 입력하면 제대로 나오지만 union select 1,2,column_name,4-- 처럼 취약한 3번에서 출력하게 하면 답이 나오질 않는다. (???뭐지) 그냥 union이라는 형태의 sqli가 있고, 직접 해보는건 다른 실제로 돌아가는 사이트에서 해보는게 좋을것같다..
basic level 13 : index.php로 들어가는게 목표이다.
주석으로 리눅스가 내 친구라고 써있다. 그냥 ls라고 쳐보면 파일명이 쫙 뜬다. 8ball.sh, index.php, level13.php, 5h6Xsxab.txt, .htaccess, .htpasswd 등이 나오는데 그냥 cat 파일명으로 내부 내용이 출력 가능하다. cat .htpassword라고 입력해보면 root:RW3Q1nyZEe0jw라고 뜬다.
cat 5h6Xsxab.txt 는 My password is 3dVgsa3v4 라는게 보인다. index.php로 들어갈때 계정 입력 창이 뜨는데 위에서 보인 root:RW3Q1nyZEe0jw 는 낚시이다. 비밀번호를 3dVgsa3v4로 입력하고 들어가면 통과한다. 이 문제는 의도가 뭔지 모르겠다.
오래된 사이트라 그런지 문제가 전체적으로 그닥 .....
'webhacking > etc' 카테고리의 다른 글
Security Override Advanced 2 (0) | 2014.12.21 |
---|---|
Security Override Advanced 1 (0) | 2014.12.19 |
Security Override Recon (0) | 2014.12.17 |
xcz.kr 21번. (0) | 2014.12.07 |
xcz.kr 32번. (0) | 2014.12.07 |