분류 전체보기

    Root-me : [Web_Server]HTTP - Cookies

    Root-me : [Web_Server]HTTP - Cookies

    쿠키는 서브웨이가 맛있다. 문제를 보자. 이렇게 나온다. 이메일을 입력하면 이메일을 어딘가에 저장하고, admin만 볼수 있는 것 같다. 해당 링크를 누르니까 아래에 다음과 같이 뜬다. http://challenge01.root-me.org/web-serveur/ch7/?c=visiteur 링크가 이런것을 보아 c 가 접속자의 상태를 주는 것 같은데 admin을 넣어보자. 오케이 쿠키를 체크하는 과정이 있는 것 같다. 이제 admin 쿠키를 탈취하여 c=admin 주면 문제가 풀리겠다. 쿠키값이 visiteur 로 이전에 c와 같은 값으로 설정되어 있다. 이걸 admin으로 바꾸고 넣어보자. pass 가 나온다.

    Root-me : [Web_Server]File upload - MIME

    Root-me : [Web_Server]File upload - MIME

    이전 문제랑 동일 한거같은데, 이제 확장자 필터링 하는 부분이 다를 것 같다. 이전 문제랑 같은 접근으로, 이름에 힌트가 있는 것은 확실하다. MIME type 가 뭔지 알아보자. -> http로 전달할때 문서의 type를 전달하는 것. MIME를 보고 필터링 하는거 같다. 그렇다면 burp 같은 걸로 잡아서 MIME 를 변조한 뒤 전달해주면 될 것 같으니 시도해 보도록 하자. 현재 MIME type 이 application/octet-stream 이다. 이를 image/jpg 로 변조해서 전달하면 pass할 수 있을 것이다. 하지만 이전 문제 필터링이랑 같이 사용한다면 pass 할 수 없다. 일단 파일 업로드한 것을 실행해 보자. 동일한 경로상에 존재하는 것을 확인할 수 있다.

    Root-me : [Web_Server]File upload - Double extensions

    Root-me : [Web_Server]File upload - Double extensions

    파일 업로드 문제다. 이전부터 깊게 연습해보고 싶었는데 이번 기회에 제대로 풀어보도록 하자. /.passwd 를 실행하도록 코드를 짜면 된다. 보통 웹쉘을 만들어서 inject 해줘야 하는데 다음과 같은 형식으로 코드를 짜줘야 한다.

    LOS-rubiya : nightmare

    6) exit("No Hack ~_~"); $query = "select id from prob_nightmare where pw=('{$_GET[pw]}') and id!='admin'"; echo "query : {$query}"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id']) solve("nightmare"); highlight_file(__FILE__); ?>id 값이 존재하면 되는 문제.길이가 6 이하여야 된다. 필터링 내용은  prob _ . () # - 주석 종류를 많이 막아놨다.;%00  주석이 남아있다 이제 ')=0;%00 을 넣어주면 된다. -> 문자열의 값은 0이니까

    LOS-rubiya : Zombie_assassin

    query : {$query}"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id']) solve("zombie_assassin"); highlight_file(__FILE__); ?>id값을 가져오기만 하면 문제는 풀린다. 문제 자체에 strrev 함수와 addslashes 함수가 관건일거같은데 한번 알아보자 strrev 함수의 경우 문자열을 거꾸로 뒤집는 함수라고 한다. nimda 를 주면 admin으로 읽는 것이지.  이점을 이용해서 '를 \'에서 '\로 바꿀수 있다. pw 쿼리에 들어가길 원하는 것은.pw=''or 1=1%23 'or 1=1%23 를 입력값으로 주게되는데, 이것은\'or 1=1%23이 되고,..

    LOS-rubiya : Succubus

    query : {$query}"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id']) solve("succubus"); highlight_file(__FILE__); ?>드디어 single quotation 을 우회하는 기법이다. \를 이용해서 '를 문자로 만들어버리면 된다.그러면  and pw= 가 id 의 입력값이 되어버리겠지?id=\&pw=or 1=1%23

    LOS-rubiya : Assassin

    query : {$query}"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id']) echo "Hello {$result[id]}"; if($result['id'] == 'admin') solve("assassin"); highlight_file(__FILE__); ?>' 필터링 한다.그냥 찾아야하는거같은데, %붙으면 탐색하는 기능을 사용해보자.-> magic quote 라고했었던 거 같다. 일단 query 안에 들어가는 문자열을 찾아야 한다.파이썬으로 코드 짜서 보자.?pw=%________ 넣어서 비밀번호 길이가 8인것도 알았다.['0', '1', '2', '9', 'D', 'E', 'F', '_', '..

    LOS_rubiya : Giant

    LOS_rubiya : Giant

    query 가 이렇다.from 사이의 $_GET[shit] 에 공백을 넣어주면 해결된다. 공백문자를 시도해보자 %0a, %0b . . . %0b 가 된다. ?shit=%0b

    LOS_rubiya : Bugbear

    query : {$query}"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id']) echo "Hello {$result[id]}"; $_GET[pw] = addslashes($_GET[pw]); $query = "select pw from prob_bugbear where id='admin' and pw='{$_GET[pw]}'"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("bugbear"); highlight_file(__..

    LOS -rubiya : Golem

    query : {$query}"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id']) echo "Hello {$result[id]}"; $_GET[pw] = addslashes($_GET[pw]); $query = "select pw from prob_golem where id='admin' and pw='{$_GET[pw]}'"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("golem"); highlight_file(__FILE..