[SK shieldus Rookies 19기][애플리케이션 보안] Numeric SQL Injection, Burpsuite Intercept 사용법

Sungwuk·2024년 3월 28일
0
post-thumbnail

Webgoat Numeric SQL Injection

말그대로 숫자를 이용한 SQL Injection이다.

이번 예제를 풀면서 프록시 서버 툴인 burpsuite도 사용해본다.

주의: 절대로 공공기관, 금융사, 민간기업의 사이트에서 따라하면 안된다

문제: 아래 폼을 사용하면 사용자가 날씨 데이터를 볼 수 있다. 모든 날씨 데이터가 표시되도록 하는 SQL Injection을 하시오


풀이 1

개발자도구를 이용한 SQL Injection

기본값인 Columbia의 출력값

Columbia외 나머지 name 값들이 이렇게 주어진다.

그럼 이 페이지를 개발자도구로 분석해보자

<select name="station">
  <option value="101">Columbia</option>
  <option value="102">Seattle</option>
  <option value="103">New York</option>
  <option value="104">Houston</option>
</select>
... 생략 ...
<input name="SUBMIT" type="SUBMIT" value="Go!">

URL과 HTML 코드를 보면

attack?Screen=44&amp;menu=1100&station=101&SUBMIT=Go!

같은 형태로 서버로 전달 되는걸 알 수 있다.


mysql 문을 보면

SELECT * FROM weather_data WHERE station = 101

인 형태인걸 알 수 있고

SELECT * FROM weather_data WHERE station = 101 or 1 = 1

로 개or 1 = 1 항상 참은 조건을 넣어 공격할 수 있다.

실제로

이렇게 발자도구에서 or 1=1를 넣고 Go! 버튼을 누르면

비공개 자료도 모두 조회되는걸 볼 수 있다.

풀이 2

프록시 서버 툴 "Burpsuite를"을 이용한 Intercept

Firefox 환경설정

우리는 프록시 서버를 이용할 것이기 때문에 Firefox(브라우저는 이걸로 쓰자) 설정에서 설정을 사진과 같이 HTTP Proxy: localhost, Port: 8080 으로 설정해준다.

Burpsuite 환경설정

Burpsuite도 마찬가지로 8080 포트가 맞는지 확인되면 사용할 수 있다.


proxy 탭에서 Intercept is on으로 설정을 바꿔주고 Go 버튼을 누르면

8080 포트로 전송되는 데이터들을 Intercept 할 수 있다. 우린 이제 이걸 임의로 조작 후 전달 한다.

위와 같이 항상 참이 되는 or 1 =1 을 삽임 후 Intercept is on 을 누르면 off로 벼환되고 조작된 데이터가 전송 된다.

마찬가지로 개발자가 원하지 않던 데이터까지 조회되는걸 볼 수 있다.

profile
https://github.com/John-Jung

0개의 댓글

관련 채용 정보