본문 바로가기

Wargame/Lord of SQLInjection

Lord of SQLInjection 4번 orc

 

코드를 보면 pw에 pw값을 직접 넣어야 한다는 것을 알 수 있다.

그렇다면 Blind SQL Injection을 사용해야 하는데 잘 모르기 때문에 Blind SQL Injection에 관해 검색을 해보았다.

Blind SQL Injection은 참 거짓으로만 확인을 해야 하기 때문에 < > = 이런 연산자들을 이용해 진행한다.

 

 

이미 pw=''라고 되어 있기 때문에 %23을 이용하여 ' 하나를 무시해준다.

이렇게 구문을 써보면 pw가 10보다 작은 글자 수라는 걸 알 수 있다.

이런 식으로 대입을 해보았을 때

 

 

pw의 길이는 8인 것을 얻어낼 수 있다.

그리고 이제 8글자 길이의 pw의 값을 하나하나 대입해서 알아봐야 하는데 이때 ascii()와 substr()이라는 함수를 사용하게 된다. ascii()라는 함수는 안에 있는 값을 ascii 코드 값으로 변환시켜준다. 이 함수를 이용하여 ascii 코드 값을 이용하여 대입하여 볼 것이다. substr()은 substr(a, b, c) 이런 형태로 쓰게 되는데 a라는 문자열을 b번째부터 c개의 문자열을 가져온다. 이 함수를 이용하여 한 글자씩 비교를 해볼 것이다. 

 

 

이렇게 비교를 하여 아스키코드 50보다 작다는 것을 알 수 있다. 이제 이런 식으로 좁혀갈 것이다.

 

 

이렇게 범위를 좁혀 첫번째 글자가 ascii 코드로는 48, 문자로는 0인 것을 알 수 있다.

이런 식으로 8번째까지 하나하나 조사를 해본다.

 

 

갑자기 5번째 글자부터 뭔가 이상한 점이 발견되었다.

아무리 수정을 해도 되지 않기에 그냥 문제 검색을 해보았다.

id를 지정해주지 않았기 때문에 다른 유저의 것과 문제가 생긴 듯했다.

 

 

이렇게 admin으로 id를 지정해주니 제대로 나왔다. 이렇게 모두 대입을 해주니

48 0
57 9
53 5
97 a
57 9
56 8
53 5
50 2

이러한 결과가 나오고 pw에 넣었다.

 

 

답 : pw=095a9852

'Wargame > Lord of SQLInjection' 카테고리의 다른 글

Lord of SQLInjection 8번 troll  (0) 2021.12.14
Lord of SQLInjection 7번 orge  (0) 2021.12.14
Lord of SQLInjection 6번 darkelf  (0) 2021.12.13
Lord of SQLInjection 5번 wolfman  (0) 2021.12.13
Lord of SQLInjection 3번 goblin  (0) 2021.12.13