PortSwigger의 Sql Injection문제 6번이다
개인적으로 여기서 막혀서 풀이까지 시간이 좀 오래 걸렸었다.
Burp Suite를 사용하지 않으면 url로는 풀이가 안되는데
이유나 원리는 아직도 의문이다..
문제의 내용은 이러하다 DB는 MySql이고 버전을 확인해야한다
DB별 버전 문자열은 위에서 확인할수있다.
select @@version
아무튼 우리는 위 MySql 버전정보 확인 코드를
Union삽입 코드와 적절히 섞어 사용하기만 하면 된다.
DB 가 "8.0.15" 라는 문자열을 검색하도록 하라한다
아마 버전정보를 조회하면 나오는 문자열 검색값이 "8.0.15"일 것이다.
Burp Suite를 실행시켜준다 Burp Suite는 웹을 프록시로 잡아 여러 기능을 수행시켜주는데
이 문제는 이상하게 버프스위트를 사용하지 않으면 안풀리더라
아무튼 우선 실행시켜주고
프록시 서버를 실행시켜준다.
Proxy를 잡으려면 intercept를 on으로 맞춰주고 현재 접속한 사이트를 찾아야한다
지금 화면이 카테고리에 접속된 url이니 여기서 Repeater항목으로 이동시켜준다
Repeater로 이동하면 위와같은 화면이 나오는데 이제 intercept를 멈추고
이 화면에서 전송한 코드에 대한 결괏값을 확인할 수 있다.
Raw에서는 html 코드가 나오고 Render에서는 코드가 렌더링된 화면으로 결과값을 확인할수있다.
그럼 이제 컬럼의 개수를 알아내야하기에 기존에 계속 사용했던
컬럼 개수 반환 Union 코드를 삽입후 Send를 해주면 된다
참고로 MySql의 주석문은 '#'이다
'+UNION+SELECT+null,null#
만일 컬럼의 개수가 두개가 아니라면 Burp Suite에서는 Error가 발생할것이다.
컬럼의 개수가 두개로 밝혀졌으니 그 다음은 자료형을 판별해준다
카테고리 내의 글들에는 제목과 내용 즉 문자열 자료형으로 이루어져 있기에
null대신에 문자열 형을 넣어 확인해준다.
'+UNION+SELECT+'ASD','DEF'#
아니나 다를까 문자열형으로 제목과 내용에 들어갔다
우리는 이제 버전정보를 여기서 확인하게 될 것이다
그럼 아까 위에서 알게된 MySql의 버전정보 확인 코드를
작성해주자
'+UNION+SELECT+null,@@version#
첫번째가 제목이었고 두번째가 내용이었다
두번째 null자리에 버전을 주면 버전정보가 나올것이다.
내용에 버전 정보가 나왔다
아까 찾으라한 문자열이 버전 정보였나보다.
버전을 조회하면 문제는 풀이가 완료된다.
댓글