반응형 분류 전체보기151 load of sql injection troll if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~"); if(@ereg("admin",$_GET[id])) exit("HeHe"); $query = "select id from prob_troll where id='{$_GET[id]}'"; 새로운 필터링 함수가 나왔다. ereg()이다.이 함수가 admin이라는 문자열을 필터링하고 있기 때문에 이 함수의 우회방법이 있나 확인해보자. 이 함수는 null을 만나기 전까지의 문자들을 전부다 필터링한다. 즉 %00admin과 같이하면 admin은 null이후에 있기 때문에 필터가 되야 하지만 필터가 안된다.. 그 이유는 싱글쿼터를 preg_match에서 필터해주기 떄문이다.또 다른 방법은 ereg는 대소문자를 구분하.. 2016. 9. 13. 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. 이전 1 ··· 34 35 36 37 38 다음