본문 바로가기
정보보안/Web Hacking

[SQL Injection] - UNION attack, retrieving multiple values in a single column (단일 열에서 여러 값 검색)// PortSwigger 예제

by 우동이 2020. 8. 10.
300x250

문제 4

여러 값을 단일열에서 검색하라는 문제이다

username,password 라는 컬럼이 users 테이블에 있다고 알려줬다

계정 정보를 조회한 후 administrator(관리자) 계정으로 접속해야한다.

사실 Burp Suite를 사용해야 하는데 아직도 사용법이 익숙칠 않아서

이 문제는 URL을 이용해 풀었다 힌트를 보고,, 

아무튼 풀어보자

동일하게 접속하게 되면 카테고리가 존재한다

 현 URL 상에서 값 입력이 불가능하기 때문에

카테고리를 선택한 후 시도해야한다

그런 다음 먼저 컬럼의 개수를 알아내기 위해 

Union으로 짜인 sql 코드를 삽입한다

 

'union select null,null--

 컬럼의 개수가 두개임이 판명났다 사실

username과 password 두개가 있다고 알려줬지만 확실한 검증이 필요하다

이제 username과 password를 조회해야 하는데

먼저 아는 조회코드를 사용해보자

 

'union select username,password from users--

 

'Internal Server Error'

입력하니 에러가 발생했다 코드에 뭔가 잘못된 부분이 있는듯 하다

컬럼의 개수는 두개고 여러 데이터값이 들어있는 컬럼이 있다는 암시를 줬으니

한 컬럼에서 여러 데이터값을 구하는 법을 알아봐야할듯 하다

 

https://hobbylists.tistory.com/entry/%EC%9B%B9-%ED%95%B4%ED%82%B9-injection%EC%9A%A9-SQL%EA%B5%AC%EB%AC%B8-%EB%AA%A8%EC%9D%8C-1

 

웹 해킹 - 용 SQL구문 모음 (1.1v)

▶SQL Injection Injection ▶ 주입, 삽입하다 SQL ▶ 데이터베이스 관리용 언어 SQL Injection ▶ OWASP 10대 웹 취약점 2020년 기준으로 1순위(Injection)에 기재될정도로 단순하고 강력한 공격법 SQL의 단위 :..

hobbylists.tistory.com

injection을 할때 자주쓰는 sql 구문 모음 중에서

'||'라는 코드가 있는데 이 쌍파이프가

한 컬럼내에 여러 값을 붙여놓는 기능을 한다 

 

다음 컬럼에 각각 값을 넣어봤는데

123이 들어간 view details가 아닌 'ASD' 문자열이 들어간 컬럼에

계정 정보가 들어있을게 분명하기 때문에

'union select null,username || password from users--

두개의 컬럼을 검색하되 한 컬럼내에서 username과 password두개의 값을 검색하기 위해

||로 두 값을 붙여준다 

위와 같이 코드를 삽입해 조회하니 계정정보가 전부 출력되었다

사실 administrator이라는 관리자 계정의 계정명을 알기때문에

위 administrator이라는 계정을 바로 찾아 사용할수있지만 

그게 아니라면 꽤 난감하고 복잡한 상황일것이다

그러므로 위 코드를 삽입할때

 

'union select null,username||'~'||password from users--

 

가운데 삽입할 문자를 하나 지정해 넣어주면 더 구별하기 쉬울것이다

위 코드를 똑같이 수행해주면

갱신된 후 촬영한 사진이라 계정과 암호들이 바뀌어있지만

잘 살펴보면 username과 password사이에 '~' 문자가 삽입되어 있음을 알수있다

그럼 이제 administrator 계정으로 로그인 해주면

관리자 계정 로그인에 성공하면서 문제 해결이 완료되었다.

300x250

댓글