SQL injection/Zixem

zixem 8단계-hard

ys.k 2022. 3. 3. 22:08

포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다.

8단계 웹페이지이다.

파라미터는 id로 받으며 문제 해결조건에 대한 이야기가 없어, 이번에도 역시 유저 이름과 버전을 출력시키면 해결되는 것 같다.

칼럼 수부터 찾아보자.

이번에는 처음부터 문제가 발생했다.

해당 페이지를 보자

쿼리: ?id=1 order by 1

 

 

해킹 시도가 감지되었다.

뭐가 문제일까 여러 번 시도를 한 후 공백에 대한 필터링이 되어있다는 걸 찾았다.

한번 공백우회를 해보자.

쿼리: ?id=1%09order%09by%091

정상 페이지가 출력되었다.

칼럼의 수는 3개이다. (과정 생략)

정보를 추출해보자.

쿼리: ?id=2%09union%09select%09@@version,user(),3

분명히 문법이 맞지만 문법 오류가 생겼다.

그래서 무엇이 문제인가 이것저것 시도해보다가 혹시 문자열 필터링인지에 대해 의구심이 들었다.

따라서 해당 쿼리를 입력했다.

쿼리: ?id=2%09union1%09select1%09@@version,user(),3

select가 필터링되고 있는 걸 찾았다.

바로 우회 쿼리를 주입해주자.

select라는 문자열이 필터링되어 제거당하니까 sel+select+ect형식으로 쿼리를 입력하여 select가 필터링되어 제거가 되어도 select가 만들어지게 끔 우회해준다.

쿼리: ?id=2%09union%09seselectlect%09@@version,user(),3

문제 해결

시행착오

1. 필터링 문자열을 찾을 때 가독이 쉬운 문자열을 넣어줌으로써 db에서 문법 오류에 인해 표출되지 않는 부분을 가시화시킬 수 있다.