이번 포스트에서는 Lord of SQLInjection의 golem문제에 대해 다루겠다. 문재를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., (, ), ir, and, substr, =를 필터링한 것을 알 수 있다. 또한 id "admin"의 pw값을 알아야 해당 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 우선, 필터링된 문자들을 우회하면서 pw의 길이를 알아낸 쿼리문을 작성해보겠다. ### 사용할 공격문 : pw=' || instr(id, "admin") %26%26 length(pw) > 7 %23 ### 실행 결과 : "Hello admin"이 출력된 것을 보니 pw의 ..
이번 포스트에서는 Lord of SQLInjection의 skeleton 문제를 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., (, )를 필터링한 것을 알 수 있다. 쿼리문의 마지막 부분에 and 1=0이 붙어있는 것을 보면 해당 쿼리는 무조건 False가 반환한다는 것을 알 수 있다. 또한 id값이 admin이 될때만 문제를 해결하는 것으로 보인다. ## 문제 풀이 : 우선 id를 admin으로 바꿔야 하기 때문에 id 바꾸는 공격문을 먼저 삽입한다. ### 사용할 공격문 : pw=' or id = 'admin ### 실행 결과 : id값은 바뀌었지만 쿼리문 뒤에 붙어 있는..
이번 포스트에서는 Lord of SQLInjection의 vampire문제를 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 '를 필터링하고 있으며, strtolower() 함수를 통해 입력된 값을 소문자로 바꾸고, str_replace() 함수를 통해 admin을 공백으로 바꾼 것을 알 수 있다. 또한 id값이 admin일때만 해당 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 우선 ADMIN을 넣어서 시도해보겠다. ### 사용할 공격문 : id=ADMIN ### 실행 결과 : 화면에 변화가 없다. 즉, 우리가 입력한 ADMIN이 admin으로 변경된 다음에 str_replace()에..
이번 포스트에서는 Lord of SQLInjection의 troll문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 '와 admin을 필터링한 것을 알 수 있다. 또한 id값이 admin일때 해당 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : php코드의 6번째 줄을 보면 admin이 필터링 되어있지만, admin을 대소문자 구분하면서 필터링한 것은 아닌 것으로 보아 admin의 대문자로 시도해보겠다. ### 사용할 공격문 : id=ADMIN ### 실행 결과 :
이번 포스트에서는 Lord of SQLInjection의 orge문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 사용하여 prob, _, ., (, ), or와 and를 필터링한 것을 알 수 있다. 또한 id 값만 있는 경우 Hello $id를 출력하고, pw값이 있어야 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : Blind SQL Injection 기법을 통해 풀어보고자 한다. pw를 알아야 하기 때문에 먼저 pw의 길이를 알아야한다. 참고로 OR연사자의 기로가 ||이고, AND연사자의 URL 인코딩 문자는 %26이며, 주석(#)의 URL 인코딩 문자는 %23이다. ### 사..
이번 포스트에서는 Lord of SQLInjection의 darkelf문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, .,(, ), or, and를 필터링한 것을 알 수 있다. 또한 id값이 admin일때만 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 먼저, 원래의 쿼리문을 무효화 시키고 id값이 admin이 되도록 만들어본다. ### 사용할 공격문 : pw=' or id='admin ### 실행 결과 : 예상했던 대로 "OR"이 필터링된 것을 확인할 수 있다. 그럼 문자로 된 OR말고 OR연산자의 기호를 통해 공격문을 작성해보겠다. 참고로 OR연산자의 기..
이번 포스트에서는 Lord of SQLInjection의 wolfman문제에 대해 다루도록 하겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., (, )와 스페이스바를 필터링 한 것을 알 수 있다. 또한 id값이 admin이 되어야 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 먼저 쿼리문을 참으로 만들어보겠다. ### 사용할 공격문 : pw='or'1 ### 실행 결과 "Hello guest"가 출력된 것을 확인할 수 있다. 이어서 해당 쿼리문을 거짓으로 만든 다음에 id값이 admin이 되도록 만들어보겠다. ### 사용할 공격문 : pw='or id='admin ###..
or이번 포스트에서는 Lord of SQLInjection의 orc문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match를 통해 prob, _, ., (, )를 필터링하고 있다. 또한 id값만 있는 경우 "Hello admin"이 출력되고, pw값이 있어야지 문제를 해결할 수 있는 것을 알 수 있다. ## 문제 풀이 : Blind SQL Injection 기법을 통해 풀어보고자 한다. pw를 알아야 하기 때문에 먼저 pw의 길이를 알아야한다. 이는 다음 구문을 통해 알 수 있다. ### 사용할 공격문 : pw=' or id='admin' and length(pw) = 1 # ### 실행 결과 : 실제 계산한 ..
이번 포스트에서는 Lord of SQLInjection의 goblin문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match를 통해 prob, _, ., (, ), ', ", ` 를 필터링 한 것을 알 수 있다. 즉 우리는 따움표 등을 사용할 수 없다는 뜻이다. 또한 해당 문제의 풀이 조건은 id값이 admin이 되어야 한다는 건데, 쿼리문을 살펴보면 다음과 같다. select id from prob_goblin where id = 'guest' and no = {$_GET[no]} 즉, 우리가 입력할 수 있는 란이 no인 것을 알 수 있다. ## 문제 풀이 : 먼저 no에 1을 넣어본 결과는 다음과 같다. #..
이번 포스트에서는 Lord of SQLInjection의 cobolt 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 이전 문제인 gremlin과 비슷하니 다른 부분만 짚어서 보겠다. 여기서 우리가 주목해야 할 부분이 if($result['id'] == 'admin')이다 위 코드를 통해 우리는 admin이라는 ID로 로그인해야 문제를 풀 수 있는 것을 알 수 있다. ## 문제 풀이 : ID란에 admin을 추가한다. SQL 쿼리문이 참이 될 수 있도록 해준다. ### 사용할 공격문 : id='admin'or'1&pw= ### 실행 결과 : ## 추가 해석 : 쿼리문 : select id from prob_cobolt w..