이번 포스트에서는 Lord of SQLInjection의 succubus문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., (, ), '를 필터링한 것을 알 수 있다. 또한 id값이 존재할 때만 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 해당 문제는 역슬래시(\)를 활용하여 id의 두번째 '(싱글쿼터)를 문자로 만들어서 풀 수 있다. ### 사용할 공격문 : id=\&pw= or 1 %23 ### 실행 결과 : ## 추가 해석 : 쿼리문 : id='\' and pw=' or 1 #' 해당 쿼리문을 역슬래시(\)를 이용하여 뒤에 오는 '(싱글 쿼터)를 문..
이번 포스트에서는 Lord of SQLInjection의 assassin문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 '를 필터링한 것을 알 수 있다. 또한 id값이 admin일때만 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 해당 문제는 "%"와 "_"를 활용하여 풀어낼 수 있다. %, _ %a : a로 끝나는 문자열 a%: a로 시작하는 문자열 %a%: a가 포함된 문자열 _%: 임의의 글자로 시작하는 문자열 ### 사용할 공격문 : pw=9% ### 실행 결과 : Hello guest가 출력된 것을 보아 guest의 비밀번호는 9로 시작하는 것을 알 수 있다. 이렇..
이번 포스트에서는 Lord of SQLInjection의 giant문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 공백, \n, \r, \t를 필터링한 것을 알 수 있고, shit의 문자열 길이가 1보다 크면 안되다는 것을 알 수 있다. 또한 반환된 "1234"라는 값이 있어야 해당 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 해당 문제는 from과 prob_gaint 사이에 공백을 하나 넣으면 해결할 수 있다. 여기서는 Tab문자의 우회법인 "vertical tab"을 활용하여 풀어보겠다. ### 사용할 공격문 : shit=%0b ### 실행 결과 : 공격에 성공한 것을..
이번 포스트에서는 Lord of SQLInjection의 bugbear문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., (, ), ', substr, ascii, =, or, and, 공백, like, 0x를 필터링한 것을 알 수 있다. 또한 id "admin"의 pw값을 알아야 해당 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 우선, 필터링된 문자들을 우회하면서 pw의 길이를 알아낸 쿼리문을 작성해보겠다. ### 사용할 공격문 : no=1%09||%09instr(id,"admin")%09%26%26%09length(pw)%09>%097 ### 실행 결..
이번 포스트에서는 Lord of SQLInjection의 darkknight문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., (, ), ', substr, ascii, =를 필터링한 것을 알 수 있다. 또한 id "admin"의 pw값을 알아야 해당 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 우선, 필터링된 문자들을 우회하면서 pw의 길이를 알아낸 쿼리문을 작성해보겠다. ### 사용할 공격문 : no=1 or instr(id, "admin") and length(pw) > 7 ### 실행 결과 : "Hello admin"이 출력된 것을 보아 pw의 길..
이번 포스트에서는 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이다. ### 사..