WriteUp

    LOS -rubiya : Kraken

    LOS -rubiya : Kraken

    query : {$query}";   $result = sqlsrv_fetch_array(sqlsrv_query($db,$query));   if($result['id']) echo "{$result['id']}";   if($krakenFlag === $_GET['pw']) solve("kraken");// Flag is in `flag_{$hash}` table, not in `member` table. Let's look over whole of the database.   highlight_file(__FILE__);?>master 랑 information ; 이 필터링 당하는 항목이다. krakenFlag 값을 알아내면 문제가 풀리는데, Flag 값이 다른 테이블 상에 존재하낟고 힌트가 나온다..

    LOS -rubiya : Mummy

    query : {$query}"; $result = sqlsrv_fetch_array(sqlsrv_query($db,$query)); if($result[0]) echo "Hello anonymous"; $query = "select pw from prob_mummy where id='admin'"; $result = sqlsrv_fetch_array(sqlsrv_query($db,$query)); if($result['pw'] === $_GET['pw']) solve("mummy"); highlight_file(__FILE__);?>쿼리를 직접 작성해줘야 한다. ord(query 의 문자) 면 exit 한다. 32 아래는 주로 공백밖에 없다. error 문구로도 whitespace 를 말해..

    LOS -rubiya : Nessie

    query : {$query}"; sqlsrv_query($db,$query); if(sqlsrv_errors()) exit(mssql_error(sqlsrv_errors())); $query = "select pw from prob_nessie where id='admin'"; $result = sqlsrv_fetch_array(sqlsrv_query($db,$query)); if($result['pw'] === $_GET['pw']) solve("nessie"); highlight_file(__FILE__);?>처음보는게 많다. 일단 코드부터 보자.master / sys / information / prob / waitfor / _  필터링 되고 있다. sqlsrv ??? 이게 처음보는..

    LOS -rubiya : revenant

    query : {$query}"; sqlsrv_query($db,$query); if(sqlsrv_errors()) exit(mssql_error(sqlsrv_errors())); $query = "select * from prob_revenant where id='admin'"; $result = sqlsrv_fetch_array(sqlsrv_query($db,$query)); if($result['4'] === $_GET['pw']) solve("revenant"); // you have to pwn 5th column highlight_file(__FILE__);?>이전 문제랑 동일하게 mssql 을 이용해서 문제를 푼다.필터링 항목부터 체크해보면, master sys informati..

    LOS -rubiya : Yeti

    query : {$query}"; sqlsrv_query($db,$query); $query = "select pw from prob_yeti where id='admin'"; $result = sqlsrv_fetch_array(sqlsrv_query($db,$query)); if($result['pw'] === $_GET['pw']) solve("yeti"); highlight_file(__FILE__);?>mssql 환경에서 진행된다.id, pw 에 필터링 항목 확인해보면, master, sys, information, ; 이 있다. 쿼리에 입력 받아주고, id가 admin인 result 의 pw 값이 Get 방식으로 입력해준 pw 와 같다면 문제가 풀린다.에러를 낼 수 가 없다. tim..

    prob 6 (100pt)

    prob 6 (100pt)

    adieu.scx 파일을 다운받을 수 있다. scx 확장자에 대해서 조사해봤다. -> starcraft 맵 확장자라고 한다. 그래서 스타크래프트를 깔았는데, 맵 에디터가 없다…. 블리자드에 따로가서 맵 에디터를 받아보자. https://kr.forums.blizzard.com/ko/starcraft/t/%EC%8A%A4%ED%83%80%ED%81%AC%EB%9E%98%ED%94%84%ED%8A%B8-%EB%A7%B5-%EC%97%90%EB%94%94%ED%84%B0-%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C-%EC%95%88%EB%82%B4/828 맵 에디터를 잘 뒤져보니, trigger 부분에 힌트가 있다. congratulation ! key is SECRET, Find ..

    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' %23 Clear!

    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(__FILE__..