[Root-me] SQL injection - Authentication
LOS를 올클하고 첫 SQL injection 문제이다 ( 하하
관리자의 password를 알아내는 문제이다
los는 전부 코드가 보여져 있어서 생각하고 풀었다면 처음으로 문제가 코드가 가려진 것이라 당황했다.
그래서 대충 될 것같은 코드를 아무거나 집어넣어봤다.
위의 문제를 토대로 username이 administrator일 것으로 예상하고 아래의 쿼리를 id값에 넣었다.
Query : administrator' or (username='administrator' && length(password)>0)--
값을 넣었더니 우연치 않게 SQLite3를 사용하는 것으 알게 되었다.
los에서 후반부 문제중에 SQLite 쿼리로 테이블 이름이랑 컬럼명을 알 수 있었던 문제가 있어서 쿼리를 같이 사용해 보았다.
Query : 1' union select sql,2 tbl_name from sqlite_master;-- -
CREATE TABLE users(username TEXT, password TEXT, Year INTEGER)
다음과 같이 테이블을 만드는 쿼리를 얻을 수 있었고
users라는 테이블 명에 username, password 와 같은 컬럼명을 얻을 수 있었다.
얻은 컬럼명을 바탕으로 쿼리를 보냈는데 자꾸 오류가 나서 혹시나 싶어서 username에다가 admin을 넣었더니
admin 계정으로 로그인 되고 information을 얻을 수 있었다.
Query : ' or (username='admin' and length(password)>0)--
password가 계속 가려져 있어서 Blind SQL injection 해야하나 싶어서 length를 집어넣었었는데
아래에 use this password를 보고 개발자 도구를 열어서 봤더니 flag가 있었다.
' or username='admin'-- 정도로만 해도 될 것 같다.
-----------------------------------------------------------------------------------------------------------------------------------
처음으로 가려진 형태의 문제를 풀어보았다
필터링이 아무것도 안되어있는 것 같아서 쉬웠는 것 같다 이런문제가 los처럼 코드로 나와있었다면 엄청 빨리 풀지 않았을까
조금은 실력이 오른 것 같아 소소하게 행복합니다 :)
'Web hacking > Root me' 카테고리의 다른 글
[Root-me] PHP - Serialization (0) | 2019.11.16 |
---|---|
[Root-me] SQL injection - Error (0) | 2019.10.07 |
[Root-me] SQL Injection - Routed (0) | 2019.10.01 |
[Root-me] SQL injection - Numeric (0) | 2019.09.27 |
[Root-me] SQL injection - String (0) | 2019.09.27 |