[PortSwigger Web Security Academy]Lab: SQL injection UNION attack, determining the number of columns returned by the query write up

zzsla·2023년 7월 6일
0
post-custom-banner

문제 정보

This lab contains a SQL injection vulnerability in the product category filter. The results from the query are returned in the application's response, so you can use a UNION attack to retrieve data from other tables. The first step of such an attack is to determine the number of columns that are being returned by the query. You will then use this technique in subsequent labs to construct the full attack.

To solve the lab, determine the number of columns returned by the query by performing a SQL injection UNION attack that returns an additional row containing null values.

문제

lab에 들어가면 가상 shop 사이트가 나온다.

분석

category filter에 SQL injection 취약점이 있다.
목표
SQL injection UNION 공격을 이용하여 null값을 추가하면서 columns갯수를 확인해서 반환되어야 한다.

category filter부분에 SQL injection 취약점이 있고, UNION 공격을 이용해서 columns 갯수를 확인하라고 하니까 burpsuite repeater를 이용해서 category에 다음 페이로드를 넣어본다.
'+UNION+SELECT+null--

그러면 오류가 반환된다. 오류가 반환된다는 의미는 현재 null개수와 columns 개수가 다르다는 말이다. 그래서 null을 하나 더 넣어본다.
'+UNION+SELECT+null,null--

이번에도 오류가 뜬다. 그러면 아래와 같이 오류가 안 나올 때 까지 계속 null을 하나씩 넣고 보내본다.

' UNION SELECT NULL--
' UNION SELECT NULL,NULL--
' UNION SELECT NULL,NULL,NULL--
etc.

그렇게 하다 보면 null 개수가 3개일 때 정상이 나오는 것을 볼 수 있다.

즉 columns 개수는 3개라는 것을 알았으니까 burpsuite proxy에 정상일 때 값을 넣고 보낸 뒤에 intercepte을 풀면 문제가 풀린다.
'+UNION+SELECT+null,null,null--

profile
[README]newbi security hacker :p
post-custom-banner

0개의 댓글