계속해서 이어지는 Root Me의 SQL Injection 문제
이번 문제의 목표 역시 취약점을 이용해
administrator 의 비밀번호를 빼앗는 것이다.
문제페이지에 처음 접속했을때 화면이다.
Home 의 아래에 있는 버튼이 총 5개 있는데
버튼을 하나씩 눌러보면
위처럼 뭔가 게시글같은 느낌으로 글들이 써있는게 보인다.
페이지 오른쪽 위에는 Search 와 Login 페이지로 이동할 수 있는 버튼이 있다.
SQL Injection 문제이니
검색창에 가장먼저 ' or 1=1-- - 라고 입력해봤다.
그랬더니 인젝션이 성공해서 아래쪽에 모든 게시글이 출력된 것이 보인다.
' or 1=1-- - 이라고 입력한다면
where 절이 항상 참이되기 때문에 테이블의 모든 결과가 나온것이다.
SQL 인젝션이 가능하다는 것을 알았으니
UNION 을 이용해봤다.
' union select 1,2-- - 라고 입력해주면
UNION 연산으로 1,2가 기존 테이블에 붙어서 같이 출력되는것을 볼 수 있다.
UNION 을 사용할때는 컬럼 갯수를 맞춰주는것이 중요하다.
예를들어 ' union select 1,2,3-- - 이라고 입력해
컬럼을 하나 더 추가해주면
보이는것 같이 do not have the same number 라는 에러가 나게 된다.
추가로 에러를 통헤 이 웹서버에서는 SQLite3 를 DBMS로 사용하고 있다는 정보를 얻을 수 있다.
SQLite3 를 사용할 경우,
데이터베이스의 정보를 추출하고 싶다면
' union select 1,sql from sqlite_master-- - 라고 입력해주면 된다.
그럼 users 라는 테이블에 username 과 password 라는 컬럼이 있다는것을 알 수 있다.
테이블명과 컬럼명을 알아냈으니 이제 데이터를 뽑아주면 된다.
' union select username,password from users-- - 라고 입력해주면
아래쪽에 계정명과 비밀번호가 같이 출력되는것이 보인다.
알아낸 admin 비밀번호를 이용해 로그인 하면
admin 으로 정상적으로 로그인 되는것을 확인할 수 있고,
비밀번호를 이용해 챌린지를 인증하라는 문구가 출력된다.
'워게임 > Root Me' 카테고리의 다른 글
[Root Me] XSS - Stored 2 - 웹해킹 / 크로스사이트스트립트 (52) | 2022.10.19 |
---|---|
[Root Me] SQL injection - Authentication - GBK - 웹해킹 / Burp Suite (50) | 2022.09.26 |
[Root Me] SQL injection - Authentication - 웹해킹 (52) | 2022.09.18 |
[Root Me] Logs analysis - web attack - 포렌식 / 로그분석 / Python (58) | 2022.09.15 |
[Root Me] ELF x86 - Stack buffer overflow basic 2 - 포너블 / 버퍼오버플로우 (42) | 2022.09.11 |