Wargame & CTF/Lord of SQLInjection 3

[los]goblin 문제 풀이

문제 풀이 첫 번째와 두 번째 if문을 보면 no에 prob _ . ' " 를 필터링 세 번째 if문에서는 id가 들어있으면 Hello 'id'를 출력 네 번째 if문에서는 id에 admin 값이 들어가면 문제 해결 where id='guest' and no= 먼저 no의 값을 주고 or을 사용하여 뒤의 쿼리문을 참으로 만들면 해결 guest에 해당되는 no 값을 알아내야 함 -> no 값이 1을 가지면 guest가 됨 그렇다면 id='guest'의 쿼리문이 False값을 가져야 하기 때문에 no값을 1로만 설정해주지 않으면 됨 -> ?no=2 or 그리고 id값을 admin으로 설정해주어야 함 여기서 '(작은 따옴표)와 "(큰 따옴표)를 필터링 하기 때문에 뒤에 id = "admin" 방식으로 쿼리를 ..

[los]cobolt 문제 풀이

문제 풀이 if($result['id'] == 'admin' ) solve("cobolt"); 쿼리문이 실행되었을 때 id값으로 admin을 가지면 문제는 풀린다. id 값을 알고 있으므로 id 값을 가지고 문제를 풀면 된다. 즉, 쿼리문을 or을 통해 참으로 만들어줄 필요 없이 id 값만 지정해주고 그 뒤는 주석처리를 해주면 된다. admin' -- 이를 입력해주면 된다. 뒤에 --을 통해 주석처리를 해줄 때는 띄어쓰기를 해주어야 주석이 처리되므로 %20(띄어쓰기)을 덧붙여주어야 한다.

[los]gremlin 문제 풀이

문제 풀이 if($result['id']) solve("gremlin"); 쿼리문 실행되었을 때 id의 값이 존재하면 이 문제는 풀린다. 그렇다면 우리는 id 값이 참이 되면 된다. id의 값으로 아무 값이나 넣고 or을 통해 참으로 만들어 준다. 뒤에 다른 코드들이 실행되지 않도록 주석처리를 해주면 된다. 1' or 1=1 -- 이를 url 피라미터 값으로 입력해주면 된다. 뒤에 --을 통해 주석처리를 해줄 때는 띄어쓰기를 해주어야 주석이 처리되므로 %20(띄어쓰기)을 덧붙여주어야 한다.