분류 전체보기
-
[L.O.S] Level 15 - assassinWargame/L.O.S 2022. 12. 5. 03:47
Level 15 - assassin을 풀어보자. '=' 연산자 대신 사용했던 like에 대한 이해가 필요한 문제이다. 코드를 살펴보면 id 파라미터에 admin을 넣어주면 문제는 해결된다. 그런데 싱글쿼터(')를 필터링하고 있고, pw 파라미터가 들어갈 쿼리는 like로 입력을 하고 있다. like는 문자열을 검색할 수 있는 연산자로, 각종 기호 연산자와 함께 사용할 수 있다. 아래의 사진을 보면, %를 입력했는데 Hello guest가 출력되었다. %는 모든 문자를 검색할 수 있는 기호 연산자로, 항상 참 값이 나온다고 생각하면 되겠다. id가 guest인 것은 db에 guest id를 가장 먼저 등록했기 때문이다. 이러한 성질을 이용하여 먼저 pw의 길이를 구해보도록 하자. 여기서 id가 아닌 pw를..
-
[L.O.S] Level 14 - giantWargame/L.O.S 2022. 12. 4. 04:15
Level 14 - giant를 풀어보자. 코드와 쿼리문을 잘 본다면 굉장히 간단한 문제이다. 앞의 Level들에 비해 코드의 양이 적다. preg_match 함수에 의해 필터링되는 것은 각종 공백에 관련된 문자들이다. 그리고 아래 쪽의 if 문을 보면 result[1234]가 되어 있는데, 쿼리문에서 1234를 select하고 있다. 이것의 의미는 이미 result에 1234를 확인하고 있으므로, 문제가 해결되었다는 것이다. 그런데 왜 문제가 끝나지 않는 것일까?? 그 이유를 알아보기 위해 입력을 할 건데, shit 파라미터에 1을 넣어보자. 여기서 쿼리문을 살펴보면 ... from1prob_giant ...로 나타난다. 이 from과 prob_giant가 붙어 있으므로, 쿼리문이 오류를 일으켜 실행이..
-
[L.O.S] Level 13 - bugbearWargame/L.O.S 2022. 12. 4. 03:59
Level 13 - bugbear를 풀어보자. 이번 문제는 darkknight에서 or, and, 공백, like, 0x까지 더 많은 필터링이 추가되었다. 어떻게 해결을 할 지 생각을 잘 하면서 문제를 풀어보자. 우선 참 값을 만들어 입력을 해야 하는데 '=' 문자와 like 문자열을 필터링한다. 그래서 instr이라는 새로운 함수를 이용해 입력을 해보도록 하자. instr은 앞에 입력한 인자에 뒤에 입력한 문자열이 있는지 확인하여 인덱스를 출력하는 함수이다. 이렇게 참 값으로 id 파라미터에 admin을 입력하니 Hello admin이 출력되는 것을 확인할 수 있다. 그 다음, pw의 길이를 먼저 확인해야 한다. 페이지에서 부등호를 이용해 먼저 참 값이 제대로 입력이 되는지 확인해보자. 앞의 Level..
-
[L.O.S] Level 12 - darkknightWargame/L.O.S 2022. 12. 4. 03:46
Level 12 - darkknight를 풀어보자. 이번 문제는 pw 파라미터에서 싱글쿼터(')를 필터링한다. 그리고 no 파라미터에서는 substr과 ascii 함수, '=' 문자를 필터링한다.(제일 위의 필터링은 생략) pw 파라미터는 싱글쿼터로 닫혀 있으니, no 파라미터에 값을 입력해보자. (pw가 닫혀 있다는 것은 다른 입력을 넣기가 힘들다고 생각하면 될 것 같다.) 출력을 확인하기 위해 참 값을 넣으니 Hello guest가 출력되는 것을 확인할 수 있다. id 파라미터에 admin을 입력해야 하는데 golem 문제처럼 '=' 문자를 필터링한다. 이미 해봤던 것이기 때문에 like로 우회하도록 하자. 이제 pw의 값을 구할건데, 기존에 했던 방식과 유사하게 구할 수 있다. 우선 pw의 길이를 ..
-
[정리] 22.11.../정리 2022. 12. 2. 19:03
블로그에 작성한 글을 토대로 22년 11월, 한 달 동안 공부한 내용을 정리해보자. (10월은 생략..) [Wargame] L.O.B : Level 11 ~ Level 20(완) L.O.S : Level 1 ~ Level 5 [Certification] 정보보안기사 : 시험 *블로그에 없는 개인 공부* Python : Programmers Level 0(완), Level 1 - 46 문제 C : solved.ac 티어 - 브론즈 115 문제 웹 해킹 & 보안 완벽 가이드 : 시작 이번 달은 정보보안기사 시험에 꼭 합격하기 위해 블로그를 많이 신경쓰지는 않았다. 그래도 프로그래밍 문제를 풀면서 공부는 꾸준히 하고 있다. 또한, 웹 해킹 중 SQL Injection에 대한 워게임을 시작하면서 기본서라고 할 ..
-
[L.O.S] Level 11 - golemWargame/L.O.S 2022. 12. 2. 18:51
Level 11 - golem을 풀어보자. 이번 문제는 orge에서 substr 함수와 '=' 문자까지 필터링을 한다. 다른 것들은 똑같으므로 어떻게 저것들을 대신하여 의미를 입력할 지 생각해보도록 하자. 우선은 참 값을 입력하기 위해 '=' 문자를 대신할 것을 생각해보았다. 먼저 char 함수를 이용해 '='을 입력했는데, Hello guest가 출력이 되는 것을 확인하였다. 그런데, 이 함수를 이용했을 때 뒤에서 admin은 입력이 되지 않았다. (잘못 했을 수도 있다..) 그래서, like를 이용하여 입력을 해보았다. 역시 참 값으로 입력이 가능했고 Hello guest가 출력되는 것을 확인할 수 있다. id 파라미터에 admin 값이 들어가는 것을 확인하기 위해 pw의 길이를 범위로 지정해 입력을..
-
[L.O.S] Level 10 - skeletonWargame/L.O.S 2022. 12. 1. 21:29
Level 10 - skeleton을 풀어보자. 이번 Level도 간단해 보이는 코드이다. 추가된 함수도 없고, 필터링 하는 문자도 크게 신경쓰지 않아도 된다. 한 가지 걸리는 것은 pw의 and 뒤의 1=0이 항상 거짓이라는 것이다. 저것을 참으로 바꾸는 것은 되지 않으므로 주석 처리를 하는 것으로 문제를 해결해보도록 하자. id 파라미터에 admin을 입력해주고 주석 처리를 해주면 SKELETON Clear!가 나타나며 문제가 해결된다. 아주 간단한 문제이므로 더 이상 필요한 설명은 없는 것 같다.
-
[L.O.S] Level 9 - vampireWargame/L.O.S 2022. 12. 1. 21:24
Level 9 - vampire를 풀어보자. 이번에는 두 가지 함수가 추가되었다. strtolower와 str_replace 함수인데, 이름에서 그 의미를 알 수 있다. id를 GET 방식으로 입력하는데, 입력하는 모든 문자열을 소문자로 전환하고 admin은 공백으로 처리한다. 이번에도 확인해보기 위해 앞에서처럼 입력을 해보았지만, 역시 되지 않는다. 이번에도 간단하게 해결할 수 있다. strtolower 함수가 아닌 str_replace 함수를 우회하면 된다. 입력받는 admin이라는 문자열을 공백으로 처리하는데, 처리한 후의 문자열이 admin이면 공격이 된다. 즉, admin 사이에 admin을 하나 더 넣는 것이다. admadminin을 입력하면 가운데의 admin이 공백이 되면서 양 옆에 적힌 ..