Yozzang의 해킹일기 💻
article thumbnail
Lord of SQLInjection (31. zombie)

이번 포스트에서는 Lord of SQLInjection의 zombie문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 rollup, join, ace, @를 필터링하고 있다는 것을 알 수 있다. 또한 pw값을 알아야 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : ace가 필터링 처리되어 replace() 함수를 사용하지 못한다. 따라서 다른 방식으로 접근해야 한다. DB의 information_schema에는 processlist이라는 테이블이 존재한다. 해당 테이블에는 현재 실행 중인 쿼리가 저장되어 있다. 따라서 이를 활용하면 문제를 쉽게 해결할 수 있다. ### 사용할..

article thumbnail
Lord of SQLInjection (30. ouroboros)
Wargame/Lord of SQLInjection 2022. 6. 29. 00:50

이번 포스트에서는 Lord of SQLInjection의 ouroboros문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., rollup, join, @를 필터링하고 있다는 것을 알 수 있다. 또한 pw값을 알아야 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 간단하게 pw=' or '1를 통해 공격을 시도해보겠다. ### 사용할 공격문 : pw=' or '1 ### 실행 결과 : 아무런 값이 출력되지 않다는 사실을 알 수 있다. 즉, 테이블 안에 아무 값이 존재하지 않다는 것이다. 그럼 이어서 union select 문을 활용하여 공격을 시도해보겠다. ..

article thumbnail
Lord of SQLInjection (29. phantom)
Wargame/Lord of SQLInjection 2022. 6. 28. 00:20

이번 포스트에서는 Lord of SQLInjection의 phantom문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 duplicate를 필터링하고 있다는 것을 알 수 있다. 또한 no=1의 email값을 알아야 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 일단 joinmail 파라미터에 아무 값을 넣어서 결과를 확인해보겠다. ### 사용할 공격문 : joinmail=haha ### 실행 결과 : 테이블에 no=0, ip, 'haha'가 새로 삽입된 것을 확인할 수 있다. insert문은 별도의 필터링이 없다면 여러 열을 삽입할 수 있는 취약점이 존재한다. 해당 취약점을..

article thumbnail
Lord of SQLInjection (28. frankenstein)
Wargame/Lord of SQLInjection 2022. 6. 23. 00:50

이번 포스트에서는 Lord of SQLInjection의 frankenstein문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., (, ), union을 필터링하고 있다는 것과 에러가 발생하면 탈출한다는 사실을 알 수 있다. 또한 pw의 값을 알아야 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : error 출력 및 case문을 이용해서 공격을 시도해보겠다. 또한 ()괄호가 필터링 되어 있으므로 비밀번호의 길이를 구하지 않고 바로 비밀번호를 구하도록 하겠다. ### 사용할 공격문 : pw=1' or id='admin' and case when pw like ..

article thumbnail
Lord of SQLInjection (27. blue_dragon)
Wargame/Lord of SQLInjection 2022. 6. 21. 00:21

이번 포스트에서는 Lord of SQLInjection의 blue_dragon문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., ', \를 필터링하고 있다는 것을 알 수 있다. 또한 pw의 값을 알아야 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : "\"와 "'"가 필터링 되었으므로 이번에는 Time based SQL Injection 기법을 통해 공격을 실행해보겠다. ### 사용할 공격문 : id=&pw=' or if(id='admin' and length(pw) > 5, sleep(2), 1)%23 ### 실행 결과 : 페이지가 2초 동안 로딩한 뒤에 ..

article thumbnail
Lord of SQLInjection (26. red_dragon)
Wargame/Lord of SQLInjection 2022. 6. 20. 00:16

이번 포스트에서는 Lord of SQLInjection의 red_dragon문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, .을 필터링하고 있다는 것을 알 수 있다. strlen() 함수를 통해 id값의 길이를 7자 이하로 제한하고 있다. no값이 숫자인 경우에 그대로 쓰이고 아닌 경우에는 1로 변경된다. 또한 no의 값을 알아야 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 해당 문제는 글자 제한이 걸려있으므로 최대한 짧은 쿼리문을 사용하여 no의 값을 알아내야 한다. 또한 is_numeric() 함수는 공백 문자 등을 인식하지 못하는 점을 활용하여 공격해..

article thumbnail
Lord of SQLInjection (25. green_dragon)
Wargame/Lord of SQLInjection 2022. 6. 17. 00:13

이번 포스트에서는 Lord of SQLInjection의 green_dragon문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., ', "를 필터링하고 있다는 것을 알 수 있다. 또한 id의 값이 admin일때만 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 우선 "\"문자가 필터링 처리되지 않았으므로 "\"를 활용하여 공격을 시도해보겠다. ### 사용할 공격문 : id=\&pw= union select 0x61646d696e %23 ### 실행 결과 : "\"문자를 통해 id 파라미터의 값을 '\' and pw='로 만든 다음에 union문을 활용하여 s..

article thumbnail
Lord of SQLInjection (24. evil_wizard)
Wargame/Lord of SQLInjection 2022. 6. 16. 00:30

이번 포스트에서는 Lord of SQLInjection의 evil_wizard문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., proc, union, sleep, benchmark를 필터링하고 있다는 것을 알 수 있다. 또한 email의 값을 알아내야만 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 우선 아무런 값을 넣어서 공격을 실행해보겠다. ### 사용할 공격문 : order=1 ### 실행 결과 : id값 admin의 email값이 *****로 출력된 것을 확인할 수 있다. email의 값을 알아내야 하기 때문에 Blind SQL Injection ..

article thumbnail
Lord of SQLInjection (23. hell_fire)
Wargame/Lord of SQLInjection 2022. 6. 13. 00:14

이번 포스트에서는 Lord of SQLInjection의 hell_fire문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 prob, _, ., proc, union을 필터링하고 있다는 것을 알 수 있다. 또한 email의 값을 알아내야만 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : 우선 아무런 값을 넣어서 공격을 실행해보겠다. ### 사용할 공격문 : order=1 ### 실행 결과 : id값 admin의 email값이 *****로 출력된 것을 확인할 수 있다. email의 값을 알아내야 하기 때문에 Blind SQL Injection 기법을 활용해보겠다. 먼저 email..

article thumbnail
Lord of SQLInjection (22. dark_eyes)
Wargame/Lord of SQLInjection 2022. 6. 12. 00:21

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