이번 포스트에서는 Lord of SQLInjection의 iron_golem문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., (, ), sleep, benchmark를 필터링하고 있다는 것과 "Hello {id}"와 같이 쿼리의 참과 거짓을 알려주는 문구를 출력해주지 않다는 것을 알 수 있다. 또한 pw의 값을 알아내야만 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 참과 거짓을 구분해주는 문구가 사라졌지만 mysqli_error() 함수를 통해 우리가 입력한 쿼리가 참을 반환했는지, 거짓을 반환했는지를 알 수 있다. ### 사용할 공격문 : pw=' o..
이번 포스트에서는 Lord of SQLInjection의 dragon문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., (, )를 필터링하고 있다는 것과 guest뒤에 #(주석문자)이 붙어 있다는 것을 알 수 있다. 또한 id의 값이 "admin"일때만 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 해당 문자는 #(주석)을 통해 뒤에 오는 값을 무효화처리 하고 있다. ### 사용할 공격문 : pw=' or id='admin ### 실행 결과 : 출력된 값이 변경되지 않는 것을 확인할 수 있다. 그러나 "#"문자는 "1 Line", 즉 한줄 주석 처리이기 때..
이번 포스트에서는 Lord of SQLInjection의 xavis문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., (, ), regex, like를 필터링하고 있다는 것을 알 수 있다. 또한 pw의 값을 알아내야만 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 이번 문제에서는 SQL의 @local_variable를 활용해서 풀어보겠다. @local_variable은 SQL문에서 값을 할당하기 위해 선언하는 지역 변수이다. 예시) select @local_variable = '1234'; 위의 예시문의 뜻은 local_variable라는 변수에 '1234..
이번 포스트에서는 Lord of SQLInjection의 zombie_assassin문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., (, )를 필터링하고 있으며, addslashes() 함수를 통해 특수문자에 역슬래시(\)를 붙여주는 것과 strrev() 함수를 통해 우리가 입력한 값을 거꾸로 출력하게 만든 것을 알 수 있다. 또한 id값이 존재할 때만 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 먼저 해당 문제가 어떻게 동작하는지를 눈으로 확인하기 위해 아무 값을 넣어서 공격해보겠다. ### 사용할 공격문 : id='&pw=hello ### 실행 결..
이번 포스트에서는 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의 ..