워게임/Lord Of Sql Injection

    Lord Of Sql Injection - orge

    후.... 요즘 병원을가고, 홈페이지 만들고 있어서, 포스팅을 못했다....ㅏㅏㅏㅏ 쨌든, LoS orge문제를 풀어봐야지ㅣㅣ 우선, 소스코드가 요런식으로 나온것을 확인 할 수 있다. 우선, pw값까지 일치해야 문제가 풀리는걸 보아하니, ......음................ Blind Sql Injection 임을 알 수 있다. 또한, 코드가 저번 orc문제랑 굉장히 비슷함을 알 수 있다. 결론을 먼저 말하자면, 딱 한개의 필터링이 추가되었다. 바로 이코드이다. if(preg_match('/or|and/i', $_GET[pw])) exit("HeHe"); 이런 필터링은, or을 || 으로, and를 &&로 우회해주면 된다. 우선, pw의 길이를 알아내기 위해 ?pw=' || length(pw)=1%..

    Lord Of Sql Injection Drakelf

    이번문제는 저번문제(WolfMan, 5번문제) 와 동일한 문제이다. (적어도 내 생각에서는...) 너무 쉬웠다. 저번문제가 공백을 필터링하면, if(preg_match('/or|and/i', $_GET[pw])) exit("HeHe"); 이번문제는, or, and를 필터링하고 있다. 저번과 마찬가지로, or대신 || 을 사용하면 되기에 ?pw='||id='admin'%23 요렇게 해주면 된다. 클리어.....

    Lord Of Sql Injection wolfman 5번문제

    이번문제는 굉장히 쉽다. 1분만에 풀었다고 해도 과언이 아닐정도로 쉽다. 한마디로 말해서, ?pw=1' or id='admin'%23 이 파라미터를 날려야하는데, if(preg_match('/ /i', $_GET[pw])) exit("No whitespace ~_~"); 이부분에서, 공백(White Space)를 필터링하고 있다. 따라서 or을 쓰면 공백이필요하지만 or을 대체할 수 있는, || 이 기호를 쓰면된다. ?pw=1' or id='admin'%23 => ?pw=1'||id='admin'%23 이렇게 바꿀 수 있다. 클리어~~~ 이번문제는 굉장히 쉬웠다. 물론 이외에도 캐리지리턴, tab 등 (%0d, %0b, ...) 이런 방식으로 우회를 할 수 있지만, 요렇게 푸는걸 권장하고 싶다.

    Lord Of Sql Injection orc 4번문제

    흠.... 개인적으로 이문제는 Blind Sqli 로서, 코딩을 해야되는 문제이다. (web은 파이썬이 쉬운듯.....) 우선, 문제를 보면은 if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orc"); 이런 코드가 되어있는데 이번문제의 특징은, admin계정의 pw를 알아내야 문제가 풀린다는것이다. $query = "select id from prob_orc where id='admin' and pw='{$_GET[pw]}'"; echo "query : {$query} "; 하지만, 쿼리가 참이기만 하더라도 Hello admin을 출력해주기에 이부분을 이용하면 된다. 우선, blind sqli 를 풀기전에 http://kcats.tistory..

    Lord of Sql Injection goblin 3번문제

    와.... 12월 31일이다....... 우선 3번문제는, 이런식으로 나와있다. 대충 풀이는 id, no를 비교할때, 이를 거짓으로 만들어야 하며 뒷부분에다가 id='admin'을 해줘야한다는것이다. 하지만 문제가있다. if(preg_match('/\'|\"|\`/i', $_GET[no])) exit("No Quotes ~_~"); 바로 ( ', ")를 필터링한다는 것이다. (싱글쿼터, 더블쿼터) 그래서 쿼터로 감싸줘야하는 문자열입력은 힘든상황이다. 우선, guest의 no값을 알아보기위해 약간의 테스트를 해보았다. 우선 no값이 1일때만 Hello guest가 출력되는것을 보아 guest의 no값은 1이라는것을 알 수 있다. 따라서 no=1 이 아닌 no=0등을 통해 이 조건문을 거짓으로 만들어야 한다..

    Lord of Sql Injection cobolt 2번문제

    드디어 시험이 끝내서 그동안 푼 포스팅을 몰아서 해야지.... 우선 2번문제인 cobolt를 풀것이다. 문제를 확인해보면, 요런 PHP코드를 확인할 수 있다. 또한 Query 에서 md5가 나오는것을 확인할 수 있는데, 저 md5암호화는 문제를 푸는데 어떠한지장도 없으니 걱정 안해도 된다. (아직도 느끼는것인데 los는 query를 요약해서 나타내주는게 참 편한것 같다.) 좀더 상세하게 계획을 해보면, and pw 앞에다가 #(%23)을 넣어서, #and pw=md5..으로 만들어 버리면 된다. 또한 조건은, id값은 admin이어야 하니, 파라미터를 작성할때, ?id=admin으로 해주고, 또, 주석을 넣어주어야 하니 ?id=admin'# 을 해줘야 하는데, #은 urlencoding에서 %23이기 때..