SQL Injection (4)

밍기적·2022년 12월 26일
0

웹해킹

목록 보기
15/35

해당 사이트는 아이디와 비밀번호를 작성하면 해당 계정에 관한 정보를 표시해주는 사이트입니다

GET 방식으로 서버로 요청을 진행하고있습니다

이전에 했던 방식에서는 로그인 폼에서 SQL 인젝션을 진행했지만 여기서는 URL을 통해서 진행했습니다


ORDER BY절 이란?

  • Select 문 사용 시 출력되는 결과물은 테이블에 입력된 순서대로 출력되는 것이 기본값입니다.
  • 때때로 내림차순 혹은 오름차순으로 정렬된 데이터가 필요할 때가 있는데 그때 사용하는 것이 바로 ORDER BY절입니다

URL에 보여지는 username 변수에 ' order by [Column Number] #을 추가해서 접속합니다

order by절을 이용하여 현재 데이터베이스의 열의 개수 파악이 가능해집니다

  • 그러므로 존재하지 않는 열을 기준으로 정렬을 하면 에러가 발생하는 것을 확인할 수 있습니다

또한 데이터베이스에서 진행하는 것이 아니기 때문에 URL을 이용하기 위해 URL 인코딩이 필요합니다

  • %23으로 표시된 것은 #을 URL 인코딩으로 변환한 것입니다
  • 데이터베이스의 뒤에 존재하는 질의문을 #을 통해 무시합니다

해당하는 아이디 정보와 비밀번호 그리고 서명을 확인할 수 있습니다

이제 다중실행을 위해 union문을 사용합니다

첫 번째 SQL문은 username과 password를 가지고 사용자 정보를 출력해줍니다

두 번째 SQL문을 통해 우리가 원하는 행동을 하기위해 UNION을 사용합니다

  • union select 1,2,3,4,5

위에서 5개의 열이 존재하는것을 확인했습니다

화면에서는 2, 3, 4가 표시되고있습니다

2, 3, 4를 조작하여 우리가 원하는 정보를 추출할 수 있습니다

먼저 데이터베이스 이름, 로그인한 사용자 이름, 데이터베이스 버전을 추출했습니다

데이터베이스는 owasp10을 사용하고 있으며 root 계정으로 로그인하였고 데이터베이스 버전 또한 확인할 수 있습니다

각 사용자들은 자신만의 데이터베이스를 가지고 있으므로 실제 시나리오에서는 관리자로 로그인되는 일이 없을 것입니다


데이터베이스 이름 : owasp10
계정 : root
버전 : 5.0.51a

0개의 댓글