$ 웹 해킹 $/webhacking.kr

webhacking.kr 9번 [900p]

ws1004 2019. 4. 9. 23:52

메인 화면입니다.

1,2,3 전부 한번 확인해 보겠습니다.

 

1,2,3전부가 no=1,2,3으로 되어 있습니다.

0 입력 하니까 메인 화면이 나왔습니다.

0,1,2,3 제외한 나머지를 입력해보면 다음과 같이 나옵니다.

 

sql injection 이용하는줄 알았는데 아니였습니다.

 

Blind sql injection 이용해보 겠습니다.

 

다음과 같은 sql구문을 전송해보면

 

no=if(substr(id,1,1)like(0x41),3,0)

위의 sql 구문을 풀이해 보면

 

id 값을 찾기 위해서 sql 사용한 입니다.

substr() ( 해당문자열 , 몇번째문자부터 , 몇번째 문자까지 ) 가져오는 함수 입니다. 위에선 substr(id,1,1)이기 때문에 id 문자열중 첫번째 문자만 가져오는 기능을 합니다.

 

like =이랑 일치합니다.

0x41 = A입니다.

뒤에 3,0 if문의 기본 형식에 따라서 앞의 값이 참이면 3 반환, 거짓이면 0 반환 하는 것입니다.

이처럼 Secret 나왔다는 것은 no=3 , 해당 sql문이 참이라는 뜻이므로 id 문자는 A였습니다.

 

이렇게 전부 대입해 보면 되는데 직접 하면 너무 많기 때문에… 파이썬으로 코드를 작성해 보겠습니다.