반응형

SQL injection string형 문제를 풀어보았습니다. 역시 관리자의 패스워드를 알아내야 합니다.


문제에 들어가시면 홈/검색/로그인 탭이 있습니다.

이 메뉴들 중에서 SQL Injection이 가능한 포인트를 찾는 것이 관건이었습니다.

news_id 파라미터, 로그인 메뉴의 login, password 파라미터 등 여러 곳에서 SQL Injection을 시도해보았으나,

유일하게 SQL Injection이 가능한 포인트는 검색 메뉴의 recherche 파라미터 였습니다.


검색어에 a를 삽입하면 정상 값으로 5개의 결과 값을 출력하였고요,

a'를 삽입하니 syntax Error가 출력되어서 a%'를 삽입 해보았습니다.


no such column 이라는 에러가 떠서 저는 이곳이 SQL Injection에 취약한 포인트라 판단하였습니다.


이번에는 필드 갯수를 구하기 위해 order by 구문을 삽입했는데요, 아래 구문을 순차적으로 삽입하여 필드 갯수 가 2개인 것을 파악하였습니다.

a%' order by 1--

a%' order by 2--

a%' order by 3-- << 에러 출력 


sql 쿼리문을 삽입하여 스키마 정보를 파악해보았습니다.

a%' union select 1, sql from sqlite_master-- 구문을 삽입하여 news 테이블과, users 테이블이 존재하고 있음을 알 수 있습니다.


마지막으로, 관리자 패스워드가 존재할 것 같은 users 테이블에서 username과 password 값을 출력하면 됩니다.

a%' union select username, password from users-- 해당 구문을 삽입하면, 관리자의 패스워드를 획득할 수 있습니다.

반응형

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

[root-me] SQL Injection - GBK  (0) 2019.02.21
[root-me] Server-side Template Injection  (0) 2019.02.08
[root-me] LFI - Double Encoding  (1) 2019.01.17
[root-me] PHP filters  (0) 2019.01.16
root-me >> SQL injection - blind  (0) 2018.06.08

+ Recent posts

반응형
반응형