blind sql-injection 인 것만 빼면 이전 darkelf와 크게 달라진 것은 없다.
los - darkelf
·
Lord_of_SQL-Injections_I
id='guest'로 고정되지만, 클리어는 'admin'을 원하고 있다. 이전처럼 'or' 연산자를 써야하는데 필터링 부분에 'or' 연산자가 추가되었다. 따라서 'or' 인듯, 'or 아닌 'or' 같은 역활을 하는 무언가를 입력해야 한다. (즉, 필터링 우회) http://localhost/darkelf_c6a5ed64c4f6a7a5595c24977376136b.php?pw=%27%20||%20id=%27admin%27%23
los - wolfman
·
Lord_of_SQL-Injections_I
필터링에 공백이 추가되었다. (공백을 URL Encoding 시키면 '%20'이 나옴) 쿼리에는 id값이 'guest' 로 고정되지만 클리어 조건은 'admin'인 것을 보아 goblin 문제랑 유사하다. 문제는 공백인데, sql injection을 연습할 때 가장 중요한 것은 필터링을 우회하는 것이다. 공백은 단순히 %20 뿐만 아니라 /**/, (), %0 등등 다르게 사용될 수 있는 것들이 무수히 많다. http://localhost/wolfman_4fdc56b75971e41981e3d1e2fbe9b7f7.php?pw=%27%0aor%0aid=%27admin%27%23
los - orc
·
Lord_of_SQL-Injections_I
클리어 조건을 보면 드디어 'pw'를 체크하기 시작한다. 필터링은 별로 신경 쓸 만한 것은 없지만 이전 문제들과 다르게 blind sql injection 문제인 것을 알 수 있다. 중간에 공백 라인을 기준으로 위쪽 부분은 blind sql-inejction 값이 참이면 "Hello admin"을 출력하고, 최종적으로 입력한 'pw'가 올바르면 아래쪽 부분에서 "ORC CLEAR"를 출력할 것이다.
los - goblin
·
Lord_of_SQL-Injections_I
쿼리에서는 id 값이' guest'로 고정되어 실행되는데, 클리어 조건은 'admin'을 원하고 있다. no 파라미터 값을 2로 입력하면 "Hello guest"가 출력되는것으로 보아 admin의 no 값은 1로 추정할 수 있다. 그런데 no 파라미터 값을 1로 입력하면 논리 연산이 거짓으로 되고, no=2 or 1 로 입력하면 쿼리 결과가 'admin','guest' 둘 다 나오기 때문에 쿼리 결과의 개수를 제한시켜야 한다. http://localhost/goblin_e5afb87a6716708e3af46a849517afdc.php?no=2%20or%201%20limit%201,1
los - cobolt
·
Lord_of_SQL-Injections_I
필터링은 무시하고, 클리어 조건을 보면 쿼리에 대한 결과 값 중 id 값이 'admin' 이여야만 한다. 다행히 'pw'는 체크하지 않기 때문에 간단하게 클리어 할 수 있다. http://localhost/cobolt_b876ab5595253427d3bc34f1cd8f30db.php?id=1%27%20or%20%271=1%27%20and%20id=%27admin%27%23
los - gremlin
·
Lord_of_SQL-Injections_I
가장 기본적인 필터링이 적용된 문제이다. "select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'"; 쿼리에 대한 실행 결과가 있기만 하면 클리어 되는 문제이기 때문에 가장 기본적인 id=1' or '1=1'"# 을 입력한다. http://localhost/gremlin_280c5552de8b681110e9287421b834fd.php?id=1%27%20or%20%271=1%27%23