반응형


SQL Injection 문제를 풀어보도록 하겠습니다. 관리자 권한을 획득하면 되는 문제인데요, GBK를 이용하라고 하네요.


그래서 일단 GBK를 찾아보았습니다.


GBK는 중국어 간체를 위한 문자 세트로, 2006년 mysql-real-escape-string을 우회하는 방법으로 소개되었습니다.

\xBF' (=URL 인코딩 시 %bf%27) 문자열을 사용하여 싱글쿼터를 우회하는 방식으로 사용됩니다.


출처 : https://pentesterlab.com/exercises/web_for_pentester_II/course



문제로 들어가보면 로그인 창과 위에 멤버 리스트를 보여주는 버튼이 하나 있어서 눌러보았습니다.



멤버 리스트를 보니 "admin"이라는 유저가 존재한다는 것을 명확히 알 수 있었습니다.



SQL Injection 공격을 시도해보았습니다.


많은 시행착오를 겪었는데요, 공격 쿼리나 공격 방법은 상단에 써진 출처를 참고하였습니다.


Query : %bf%27 or 1=1--

          %bf' or 1=1--

          %bf%27 or %bf%271%bf%27=%bf%271

          %bf%27 and 1=1-- 


등... 많은 쿼리로 테스트를 해보았는데, FLAG가 나오지 않았어요.. 구글링해도 문제가 잘못되었다는 둥 Burp로 안된다는 둥...



하지만! 문제를 해결했습니당!!!


login=admin%bf%27 or 1=1-- &password=1 << 주석과 &사이에 공백을 주고, Follow Redirection 버튼을 클릭해야 합니다.


왜 공백을 주어야 하는지는 잘 모르겠습니다만,,, 그래야 follow redirection 버튼이 나오더라고요ㅠ(알려주시면 감사하겠습니다^^)



follow redirection 버튼을 클릭하면 FLAG 값이 노출되는 곳으로 리다이렉트되어 플래그를 획득할 수 있습니다.

반응형

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

[root-me] HTML - disabled buttons  (0) 2019.04.15
[root-me] Path Truncation  (0) 2019.02.26
[root-me] Server-side Template Injection  (0) 2019.02.08
[root-me] SQL injection - string  (0) 2019.02.07
[root-me] LFI - Double Encoding  (1) 2019.01.17
반응형

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

반응형
반응형