여러 값을 단일열에서 검색하라는 문제이다
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'
입력하니 에러가 발생했다 코드에 뭔가 잘못된 부분이 있는듯 하다
컬럼의 개수는 두개고 여러 데이터값이 들어있는 컬럼이 있다는 암시를 줬으니
한 컬럼에서 여러 데이터값을 구하는 법을 알아봐야할듯 하다
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 계정으로 로그인 해주면
관리자 계정 로그인에 성공하면서 문제 해결이 완료되었다.
댓글