문제
What kind of this Database? you have to find correlation between user name and database.
사용자 이름과 데이터베이스간 상관관계를 통해 DB종류를 확인하는 문제
풀이
상단 그림은 문제 진입 시 초기 페이지 이며 USER 입력란을 통해 내용을 입력하면 하단 그림의 사이트로 접속된다. 입력폼에 내용을 입력하면 하단에 출력되는 식의 게시판이다.
개발자 도구(F12) -> Elements 를 통해 javascript의 내용을 확인해보니 admin 값은 입력될 수 없도록 막혀있는걸 확인할 수 있다.
SQL Injection을 시도하기 위해서 다양한 구문을 추가하던중 ‘ or 1=1/* 을 입력시 해당 Fatal error 값이 출력됫다. 내용을 한번 분석해보자.
Fatal error: Uncaught exception 'Exception' with message 'Unable to open database: unable to open database file' in /var/www/html/db_is_really_good/sqlite3.php:7 Stack trace: #0 /var/www/html/db_is_really_good/sqlite3.php(7): SQLite3->open('./db/wkrm_' or ...') #1 /var/www/html/db_is_really_good/memo.php(14): MyDB->__construct('./db/wkrm_' or ...') #2 {main} thrown in /var/www/html/db_is_really_good/sqlite3.php on line 7 |
데이터 베이스를 열 수 없다는 에러와 그런 이유의 대한 내용이 함깨 확인된다. 내용을 분석시
1) SQLite3 DB를 사용하며 sqlite3.php 파일을 통해 동작한다.
2) ‘ or 1=1/* 은 ‘ or …’ 으로 적용.
3) 7번줄 open() 함수 와 14번줄 __construct() 함수에서 오류가 발생됫다.
4) {main} 의 내용이 7번줄에 적용된다.
예상대로라면 입력된 값이 {main} 변수로 적용되고 {main} 변수 값의 DB가 생성되며 해당 DB의 내용을 채워넣을 수 있는 페이지로 예상된다.
예상대로 /db/wkrm_a.db 를 입력시 wkrm_a.db 파일이 다운로드 됫다 SQLite 을 다운받아서
내용을 확인할 수 있다면 admin.db 또한 다운받아서 내용을 확인해 볼 수 있다.
DB Browser for SQLite : http://sqlitebrowser.org/
SQLite DB 뷰어를 통해서 admin.db 를 다운받아서 열어보니 memo column 에 flag의 대한 힌트가 제공된걸 확인할 수 있다. ./dhkdndlswmdzltng.php 또한 경로로 예상되어 http://wargame.kr:8080/db_is_really_good/dhkdndlswmdzltng.php 으로 접속 시도 해본다.
FLAG is bd48cb277ae716b38d1261d85151d05ce1f11548 |
성공적으로 Flag를 찾을 수 있었고 초기 페이지에 값을 제출하면 통과할 수 있다.
위 문제는 SQL Injection의 문제로 특수기호를 문자열 그대로 인식하는 함수 또는 일부 예외사항의 대해서는 별도 관리체계가 없어서 발생한 취약점이다, php의 경우에는 mysql_real_escape_string() 함수를 활용할 수 있고 또한 Error 발생 시 Error문을 출력하지 않도록 설정하는것도 큰 도움이 된다.
'Hacking > wargame.kr' 카테고리의 다른 글
[wargame.kr] Question 11. tmitter (0) | 2021.06.28 |
---|---|
[wargame.kr] Question 10. md5_compare (0) | 2021.06.28 |
[wargame.kr] Question 8. md5 password (0) | 2021.06.28 |
[wargame.kr] Question 7. strcmp (0) | 2021.06.24 |
[wargame.kr] Question 6. Fly me to the moon (0) | 2021.06.24 |