반응형 war game42 load of sqlinjection darkelf 그렇다 딱 보면 감이 온다.. or또는 and를 우회하는 기법이다. if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); if(preg_match('/or|and/i', $_GET[pw])) exit("HeHe"); $query = "select id from prob_darkelf where id='guest' and pw='{$_GET[pw]}'"; or은 ||,%7c%7c 로 우회가 가능하며 and는 && %26%26 으로 우회가 가능하다.즉 id='guest' and pw='' || id='admin' %23 같은 구문으로 앞에것은 거짓으로 만들고 || 뒤의 구문을 참으로 만들면 댄다.즉 페이로드를pw='||id='admin'%2.. 2016. 9. 6. load of sql injection wolfman 이번 문제는 화이트 스페이스가 없을때 필터를 어떻게 할 것인가의 문제이다. if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); if(preg_match('/ /i', $_GET[pw])) exit("No whitespace ~_~"); $query = "select id from prob_wolfman where id='guest' and pw='{$_GET[pw]}'"; 필터 구분에서 ws를 필터하고 있다. 또한 if($result['id'] == 'admin') solve("wolfman"); 구문을 이용하여 id가 admin인지 확인한다. 즉 쿼리 문에서 id='guest' and pw'' 구문을 만들어서 앞에 문장을 거짓으로 만.. 2016. 9. 6. load of sql injection orc blind sql injection 유형의 문제이다. 이부분이 상당히 멘붕을 불러일으킨다. if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); $query = "select id from prob_orc where id='admin' and pw='{$_GET[pw]}'"; $_GET[pw] = addslashes($_GET[pw]); $query = "select pw from prob_orc where id='admin' and pw='{$_GET[pw]}'"; 이 부분에서 pw로 넘어오는 곳의 '같은 것들을 필터링하고 자신이 입력한 pw와 db의 pw를 비교하여 필터링 하는 것을 알 수 있다 즉 올바른 비밀번호를 입력하여야 한다는.. 2016. 9. 6. load of sqlinjection goblin 싱글쿼터 더블쿼터 등등이 막혀있다. 따라서 문자열을 주입하는 것은 힘들어보인다. if(preg_match('/prob|_|\.|\(\)/i', $_GET[no])) exit("No Hack ~_~"); if(preg_match('/\'|\"|\`/i', $_GET[no])) exit("No Quotes ~_~"); $query = "select id from prob_goblin where id='guest' and no={$_GET[no]}"; if($result['id'] == 'admin') solve("goblin"); 중요한것은 get으로 받는 곳이 no이고 id가 guest로 잡혀 있지만 solve 조건이 id가 admin이어야 한다는 것.따라서 no=123 || id=0x61646d696e .. 2016. 9. 6. 이전 1 ··· 7 8 9 10 11 다음