분류 전체보기
-
[L.O.S] Level 8 - trollWargame/L.O.S 2022. 12. 1. 21:17
Level 8 - troll을 풀어보자. 코드를 잘 살펴보면 금방 해결할 수 있는 문제다. id 파라미터에 admin 값을 입력하면 문제가 해결된다. 그런데, 두 번째 if 문의 preg_match 함수에서 admin을 필터링한다. 혹시나 하는 마음으로 admin 을 입력해보았다. HeHe 페이지가 나타나며 공격이 실패하는 것을 확인할 수 있다. 여기서, 첫 번째 if 문과 두 번째 if 문의 preg_match 함수를 보면 차이가 있다는 것을 알 수 있다. 필터링을 하는 문자를 지정하는 '//'의 뒤를 잘 보면 두 번째에는 i가 없다. i의 의미는 대소문자를 구별하지 않는다는 것인데, 이것을 이용해 공격을 수행하면 된다. admin을 필터링하지만, 대소문자를 구별하지 않으므로 대문자를 중간에 넣어주면 ..
-
[L.O.S] Level 7 - orgeWargame/L.O.S 2022. 12. 1. 21:10
Level 7 - orge를 풀어보자. 앞의 Level 중 orc와 비슷한 문제라 금방 풀 수 있었다. pw를 GET 방식으로 입력하는데, id 파라미터에 admin을 넣고 그에 맞는 pw를 찾아야 한다. 앞에서 해봤던 Blind SQL Injection을 이용해보도록 하자. 먼저, 출력을 확인하기 위해 참 값을 입력해보았다. Hello guest가 출력이 되는데, admin을 입력할 수 있어야 하겠다. id 파라미터에 admin 값을 입력하고, pw의 길이를 알아보기 위해 length 함수를 이용했다. 참 값일 때 Hello admin이 출력되는 것을 확인할 수 있다. (한 가지 주의할 것은 & 문자는 url인코딩을 해주어야 한다. 이것을 몰라 조금 헤맸다.) 이 과정을 반복하여 pw의 길이가 이번에도..
-
[L.O.S] Level 6 - darkelfWargame/L.O.S 2022. 12. 1. 03:57
Level 6 - darkelf를 풀어보자. 이번 문제는 앞의 Level처럼 id 파라미터에 admin 값을 GET 방식으로 pw에 입력해주어야 한다. 한 가지 바뀐 것은 공백에 대한 필터링은 사라졌지만, or과 and 문자열에 대해 필터링을 한다. 우선 출력을 확인해보기 위해 평소처럼 참 값을 넣은 입력을 해보았다. or의 문자열때문에 HeHe라는 페이지가 나타나는 것을 확인할 수 있다. 이번 문제를 해결하기 위해서는 or과 and라는 문자열은 사용하지 않아야 하는데, 그 의미는 필요하다. 즉, 프로그래밍을 할 때 각 언어에서 사용하는 or와 and의 의미를 담은 연산자를 사용하면 될 것이다. 이것은 php 코드이기 때문에 그 의미를 담은 &&와 ||를 사용하면 문제를 해결할 수 있다. 다시 입력을 작..
-
[L.O.S] Level 5 - wolfmanWargame/L.O.S 2022. 11. 30. 23:51
Level 5 - wolfman을 풀어보자. 생각을 조금만 해보면 금방 풀리는 간단한 문제였다. 해당 문제로 들어와보면 이번 Level의 php 코드는 pw 값을 GET 방식으로 입력한다. 그런데 if 문을 보면 id의 값이 admin이어야 문제가 해결된다. 앞의 Level들 중 id 파라미터에 GET으로 입력해 pw에 값을 넣는 문제가 있었는데, 그 반대로 하면 된다. 우선 입력 값을 참으로 만들어 어떤 문구가 출력이 되는지 확인해보도록 하자. id의 값이 guest로 되어 있는데, 단순히 참으로 입력을 하면 Hello guest가 출력이 되는 것을 알 수 있다. 그렇다면 id 파라미터의 값을 admin으로 입력을 하면 되는데, 그 전에 확인할 것이 있다. 위의 사진을 보면, 참을 만드는 과정에서 평소..
-
[L.O.S] Level 4 - orcWargame/L.O.S 2022. 11. 30. 07:19
Level 4 - orc를 풀어보자. 앞의 Level들 보다는 약간 더 높은 수준의 공격 기술이 필요하다. 이번에는 id 파라미터가 아닌 pw 파라미터에 값을 넣게 된다. 그리고 코드 사이가 띄워진 곳, 두 번째 문단이라고 한다면 그 곳의 첫 번째 줄에 addslashes 함수가 있다. 간단하게 addslashes 함수는 DB에 특수 문자를 넣을 때, 그 문자열에 역슬래시를 넣어 오류를 줄이는 함수이다. 코드 분석은 문제를 풀면서 필요한 부분만 해보도록 하자. 출력을 알아보기 위해 우선은 pw 값을 항상 참으로 만드는 sql문을 넣어 보았다. Hello admin이 출력되는 것을 알 수 있다. 이것은 쿼리문의 id 값이 admin으로 고정되어 입력되는데, 이 값이 DB에 있다는 것을 의미한다. 첫 번째 ..
-
[L.O.S] Level 3 - goblinWargame/L.O.S 2022. 11. 29. 05:37
Level 3 - goblin을 풀어보자. 문제에 들어가면 php 코드가 있다. 앞의 Level과 유사해 보이지만, 이번에는 id가 아닌 no에 입력값을 넣어야 한다. 그런데 결과는 id 파라미터의 값이 admin이어야 문제가 해결된다. 어떻게 넣어야 하는 것일까?? 혹시나 하는 마음으로 id 파라미터에 admin을 넣어보도록 하자. 당연하게도 되지 않는다.. 다시 코드의 내용을 상기하면서 no 파라미터에 값을 넣어보도록 하자. 1을 넣었는데, Hello guest가 출력이 된다. 다른 값을 넣었을 때는 어떻게 되는지를 알아보기 위해 임의의 숫자 25를 넣어 보았다. Hello guest가 사라지면서 아무런 출력이 나타나지 않는다. no이 1일 때 Hello guest가 출력된 것으로 보아, no에 대응..
-
[L.O.S] Level 2 - coboltWargame/L.O.S 2022. 11. 29. 03:46
Level 2 - cobolt를 풀어보자. 문제에 들어가면 php 코드가 있다. 앞의 Level과 유사한 부분이 많기 때문에 달라진 부분만 보도록 하자. 7번째 줄의 $query를 보면 마지막에 pw가 md5 안에 들어가는 것을 알 수 있다. md5는 해시 알고리즘으로 어떤 값이 들어오더라도 알고리즘을 거쳐 고정된 길이의 새로운 값으로 나타낸다. 그리고 10번째 줄의 if 문을 보면 입력받을 id 값이 'admin'이면 문제가 해결된다고 나와있다. 문제에 나와있는 것처럼 id에 admin을 넣어보자. id 파라미터에 admin이 들어간 것이 출력된다. 하지만 Clear가 나타나지 않는 것을 보아 문제가 해결되지는 않았다는 것을 알 수 있다. 해결을 위해서는 pw도 처리를 해주어야 한다. 그런데, md5 ..
-
[L.O.S] Level 1 - gremlinWargame/L.O.S 2022. 11. 29. 03:11
새로운 Wargame인 L.O.S(Lord of SQL Injection)를 시작해보자. SQL Injection에 대해 공부할 수 있는 Wargame으로, L.O.B처럼 Level 마다 이름이 부여되어 있다. 먼저 Level 1 - gremlin을 풀어보도록 하자. 간단하게 사이트에서 회원가입을 하고 로그인을 하면 많은 문제들이 있는 것을 볼 수 있다. (아래에도 더 있다.) gremlin으로 들어가보자. 이번 Wargame을 시작하기 전에 php에 대해 공부를 조금 했지만, 역시 모르는 내용이 많다. 그래도 간단한 SQL Injection 문제이기 때문에 쉽게 풀 수 있었다. 문제를 열어 보면 php 코드가 나타난다. 7번째 줄의 $query를 보면 id와 pw를 GET 방식으로 입력받고 있다. 8번..