Dork's port

SQL-injection - SQL injection UNION attack, retrieving multiple values in a single column 본문

portswigger-academy

SQL-injection - SQL injection UNION attack, retrieving multiple values in a single column

Dork94 2020. 7. 14. 16:17
  • 마찬가지로 admin의 id, pw를 이용해서 로그인 하면 되는 문제.
  • 이전 문제와 다른 점은 data type이 text인게 2개의 필드중 하나밖에 없었다.
  • 따라서, username과 password를 한 필드에 동시에 출력하지 못하므로 (문제에서는 동시에 출력하라고 했으나 이 방법으로 풀지 않음) 가장 무식한 방법으로는 username과 password를 한번씩 쿼리를 날리고 나오는 password list를 이용해서 brute force를 하는 방법이다.
  • 다만 나는 다른방법으로 풀었는데, ' UNION SELECT NULL , password from users where username like '%admin%'-- 이렇게 하게 되면, 아이디에 admin이 속한 것 중, password만 출력이 되므로, 계정의 password를 쉽게 알 수 있다.
  • Solution을 보니 동시에 출력하는 방법으로는 database에 제공하는 concatenation을 이용해서 동시에 출력하도록 한다. ' UNION SELECT NULL , username || '~' || password from users-- 이런식으로 하면 ~를 token으로 왼쪽에 id, 오른쪽에 password가 위치하게 된다. 다만 concatenate 하는 방법은 database 마다 다르므로, 모두 시도해보거나, database의 정보를 미리 사전에 탐색하여 이용하면 좋을 것 같다.
Comments