Yozzang의 해킹일기 💻
article thumbnail
Lord of SQLInjection (21. iron_golem)
Wargame/Lord of SQLInjection 2022. 6. 10. 00:54

이번 포스트에서는 Lord of SQLInjection의 iron_golem문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., (, ), sleep, benchmark를 필터링하고 있다는 것과 "Hello {id}"와 같이 쿼리의 참과 거짓을 알려주는 문구를 출력해주지 않다는 것을 알 수 있다. 또한 pw의 값을 알아내야만 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 참과 거짓을 구분해주는 문구가 사라졌지만 mysqli_error() 함수를 통해 우리가 입력한 쿼리가 참을 반환했는지, 거짓을 반환했는지를 알 수 있다. ### 사용할 공격문 : pw=' o..

article thumbnail
Lord of SQLInjection (20. dragon)

이번 포스트에서는 Lord of SQLInjection의 dragon문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., (, )를 필터링하고 있다는 것과 guest뒤에 #(주석문자)이 붙어 있다는 것을 알 수 있다. 또한 id의 값이 "admin"일때만 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 해당 문자는 #(주석)을 통해 뒤에 오는 값을 무효화처리 하고 있다. ### 사용할 공격문 : pw=' or id='admin ### 실행 결과 : 출력된 값이 변경되지 않는 것을 확인할 수 있다. 그러나 "#"문자는 "1 Line", 즉 한줄 주석 처리이기 때..

article thumbnail
Lord of SQLInjection (19. xavis)

이번 포스트에서는 Lord of SQLInjection의 xavis문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., (, ), regex, like를 필터링하고 있다는 것을 알 수 있다. 또한 pw의 값을 알아내야만 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 이번 문제에서는 SQL의 @local_variable를 활용해서 풀어보겠다. @local_variable은 SQL문에서 값을 할당하기 위해 선언하는 지역 변수이다. 예시) select @local_variable = '1234'; 위의 예시문의 뜻은 local_variable라는 변수에 '1234..

article thumbnail
Lord of SQLInjection (17. zombie_assassin)

이번 포스트에서는 Lord of SQLInjection의 zombie_assassin문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., (, )를 필터링하고 있으며, addslashes() 함수를 통해 특수문자에 역슬래시(\)를 붙여주는 것과 strrev() 함수를 통해 우리가 입력한 값을 거꾸로 출력하게 만든 것을 알 수 있다. 또한 id값이 존재할 때만 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 먼저 해당 문제가 어떻게 동작하는지를 눈으로 확인하기 위해 아무 값을 넣어서 공격해보겠다. ### 사용할 공격문 : id='&pw=hello ### 실행 결..

article thumbnail
Lord of SQLInjection (16. succubus)

이번 포스트에서는 Lord of SQLInjection의 succubus문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., (, ), '를 필터링한 것을 알 수 있다. 또한 id값이 존재할 때만 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 해당 문제는 역슬래시(\)를 활용하여 id의 두번째 '(싱글쿼터)를 문자로 만들어서 풀 수 있다. ### 사용할 공격문 : id=\&pw= or 1 %23 ### 실행 결과 : ## 추가 해석 : 쿼리문 : id='\' and pw=' or 1 #' 해당 쿼리문을 역슬래시(\)를 이용하여 뒤에 오는 '(싱글 쿼터)를 문..

article thumbnail
Lord of SQLInjection (15. assassin)

이번 포스트에서는 Lord of SQLInjection의 assassin문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 '를 필터링한 것을 알 수 있다. 또한 id값이 admin일때만 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 해당 문제는 "%"와 "_"를 활용하여 풀어낼 수 있다. %, _ %a : a로 끝나는 문자열 a%: a로 시작하는 문자열 %a%: a가 포함된 문자열 _%: 임의의 글자로 시작하는 문자열 ### 사용할 공격문 : pw=9% ### 실행 결과 : Hello guest가 출력된 것을 보아 guest의 비밀번호는 9로 시작하는 것을 알 수 있다. 이렇..

article thumbnail
Lord of SQLInjection (14. giant)
Wargame/Lord of SQLInjection 2022. 5. 31. 00:07

이번 포스트에서는 Lord of SQLInjection의 giant문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 공백, \n, \r, \t를 필터링한 것을 알 수 있고, shit의 문자열 길이가 1보다 크면 안되다는 것을 알 수 있다. 또한 반환된 "1234"라는 값이 있어야 해당 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 해당 문제는 from과 prob_gaint 사이에 공백을 하나 넣으면 해결할 수 있다. 여기서는 Tab문자의 우회법인 "vertical tab"을 활용하여 풀어보겠다. ### 사용할 공격문 : shit=%0b ### 실행 결과 : 공격에 성공한 것을..

article thumbnail
Lord of SQLInjection (13. bugbear)
Wargame/Lord of SQLInjection 2022. 5. 30. 00:33

이번 포스트에서는 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 ### 실행 결..

article thumbnail
Lord of SQLInjection (12. darkknight)
Wargame/Lord of SQLInjection 2022. 5. 28. 00:38

이번 포스트에서는 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의 길..

article thumbnail
Lord of SQLInjection (11. golem)
Wargame/Lord of SQLInjection 2022. 5. 27. 00:58

이번 포스트에서는 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의 ..