LOS 3번 Goblin 문제를 풀어보도록 하겠습니다.
1번 박스를 통해, 어떠한 형태의 쿼리를 실행시키려는지 확인이 가능하며,
2번 박스를 통해, 결과값에 따른 출력이 어떻게 변화하는지 확인이 가능하며,
3번 박스를 통해, 문제 풀이를 위한 조건을 확인할 수 있습니다.
- 1번 박스
id가 기본적으로 guest로 박혀있으며, no는 기본적으로 숫자 형태이며, 쿼터(', ", `)가 필터링 되어 있어, 문자열을
입력할 수 없습니다.
- 2번 박스
1번 박스에 있는 쿼리를 통해 성공적으로 조회에 성공할 경우, 조회된 id를 Hello 문구와 같이 화면에
출력해줍니다.
- 3번 박스 : 1번 박스에 있는 쿼리를 통해 admin이라는 id를 조회해야만 문제를 해결 할 수 있습니다.
이 문제는 처음 보면 굉장히 난해할 수 있습니다.
admin으로 로그인하라고 하면서 정작 쿼리에는 guest를 떡하니 써두었으니, 당황스러울만도 한 문제입니다.
하지만 위와 같은 내용을 통해 이 문제가 어떤 의도를 가지고 있는지 파악할 수 있습니다.
"id 조건을 수정할 수 없는 상황에서 다른 id로 로그인을 성공시켜라" 가 이 문제의 의도라고 할 수 있겠습니다.
4번 박스를 통해, guest계정의 no 값은 1임을 확인할 수 있으며, 5번 박스를 통해, 실제 guest계정으로 로그인 시,
Hello Guest라는 문구가 화면에 나타남을 확인 할 수 있습니다.
6번 박스를 통해, 어떻게 공격을 수행하였는지 확인할 수 있으며,
7번 박스를 통해, 문제가 해결되었음을 확인할 수 있습니다.
- 6번 박스
id='admin'이라는 조건을 사용할 수 없는 상황이기에, 문자열 'admin'을 대체 할 수 있는 함수를 찾아 공격을
수행하였습니다. 공격 방식은 아래와 같습니다.
1. no에는 1이 아닌 임의의 숫자를 입력한다. (조건을 거짓으로 만들기 위함)
2. or 문을 통해 또 하나의 조건을 입력한다..
3. char()함수를 이용하여, ascii 코드를 문자화 시켜, 'admin' 문자열을 대체합니다.
(ex : id=char(97, 100, 109, 105, 110))
- 7번 박스
쿼터 없이 id가 admin인 조건으로 쿼리를 수행시켜, 정상적으로 로그인 되었으며 문제가 해결됨을 확인할 수 있습니다.
'Webhacking > LOS[Lord Of Sql injection]' 카테고리의 다른 글
[LOS 5번 : wolfman] 문제 풀이 (0) | 2021.10.03 |
---|---|
[LOS 4번 : orc] 문제 풀이 (0) | 2020.04.26 |
[LOS 2번 : Cobolt] 문제 풀이 (0) | 2019.02.16 |
[LOS 1번 : Gremlin] 문제 풀이 (0) | 2019.02.09 |