전체 글

전체 글

    LOS -rubiya : Skeleton

    query : {$query}"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id'] == 'admin') solve("skeleton"); highlight_file(__FILE__); ?>pw 를 Get 방식으로 받아주고, prob _ . () 를 필터링한다.그리고 id 가 admin이면 문제가 풀린다. 그런데, query 뒷부분에, and 1=0 이라는 false 구문이 들어있다. 해결해야 할 문제다.and 1=0은 한줄 주석으로 처리해주면 된다. # 을 이용하자. # 뒤의 모든 것들은 주석으로 처리된다.넣어줄때 url-encoding 하는거 잊지말자.?pw=' or id='admin'..

    LOS -rubiya : Vampire

    query : {$query}"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id'] == 'admin') solve("vampire"); highlight_file(__FILE__); ?>이전 문제들이랑 다르게 strtolower 라는 함수가 등장한다.직관적으로 읽어봤을때 string to lower 를 의미하는것 같다. 확실히 하기 위해서 구글링해보자. -> 맞다.Get으로 받아준 id 값을 소문자로 치환해주고, admin이라는 값을 NULL로 바꿔준다.그리고 id 가 admin이면 문제가 풀린다. 조금만 고민해보면 쉽게 문제를 풀 수 있다. admin이라는 값은 초기 입력에서 한번만 삭제..

    LOS -rubiya : Troll

    query : {$query}"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id'] == 'admin') solve("troll"); highlight_file(__FILE__);?>id 에 Get 방식으로 입력을 받아주고, 필터링한다.\를 필터링하고, admin을 필터링하는데, 눈치가 빠르다면 항상 붙던 \i 라는 게 없다는것을 알 수 있다.기본적으로 preg_match 방식은 대소문자를 구분한다. \i 옵션을 넣어주게 된다면 대소문자를 구분하지 않게 된다는 것을 알고 가자.result 의 id 가 admin이면 문제가 풀리게 된다.위에 작성해놓은 것처럼 대소문자가 섞여있다면 문제를 pass 할..

    LOS - rubiya : Orge

    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_orge where id='admin' and pw='{$_GET[pw]}'"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orge"); highlight_file..

    LOS - rubiya : Darkelf

    query : {$query}"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id']) echo "Hello {$result[id]}"; if($result['id'] == 'admin') solve("darkelf"); highlight_file(__FILE__); ?>pw 에 Get 방식으로 입력을 받는데, prob _ . () or and 를 필터링한다. or and 를 필터링하는게 메인이겠다. 이후에 result 의 id 값이 admin이면 문제가풀린다.or 는 %7C%7Cand 는 %26%26으로 인코딩해주면 된다. ?pw='or id='admin'%23 을 넣어주고 싶으니,..

    LOS -rubiya : Wolfman

    query : {$query}"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id']) echo "Hello {$result[id]}"; if($result['id'] == 'admin') solve("wolfman"); highlight_file(__FILE__); ?>pw를 Get 방식으로 받아주고, prob _ . () 공백을 필터링한다. 로그인 정보를 보여주고, 이때 로그인한게 admin이면 문제가 풀린다.공백을 필터링하는게 제일 중요한 문제인듯 하다. /**/ 을 이용해도 되고, %0a,%0b를 이용해도 된다. ?pw='or id='admin' %23 을 넣어주고 싶으니?pw=..

    LOS -rubiya : Wolfman

    query : {$query}"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id']) echo "Hello {$result[id]}"; if($result['id'] == 'admin') solve("wolfman"); highlight_file(__FILE__); ?>pw를 Get 방식으로 받아주고, prob _ . () 공백을 필터링한다. 로그인 정보를 보여주고, 이때 로그인한게 admin이면 문제가 풀린다.공백을 필터링하는게 제일 중요한 문제인듯 하다. /**/ 을 이용해도 되고, %0a,%0b를 이용해도 된다. ?pw='or id='admin' %23 을 넣어주고 싶으니?pw=..

    prob 3 (150pt)

    prob 3 (150pt)

    일단 암호인듯 하다. 알파벳으로 구성된 것으로 보아, vigenere 아니면 shift cipher의 하나가 아닐까라는 생각이 들었다. shift 먼저 넣어보자. (ZODK: Lvyiwl: 13 Oeez Iajxw Qbnsy os Yjekrr) 여기에 13이라는 숫자가 호옥시 key 값이 아닐까라는 생각이 들었기 때문…. 개소리였고, vigenere cipher 였다. Kasiski test 이용해서 통계적으로 찾아줄수도 있지만, 시간이 많이 걸리니 decoding 사이트를 이용한다. https://www.dcode.fr/vigenere-cipher 찾아준 key는 GANGPSYNAM 이었다. MEETPSYYOUMAYNOTKNOWHISNAMEBUTACCORDINGTOTHEYOUTUBESTATSSOMEMI..