SQL Injection처럼 직접적인 결과를 못 얻을 때에 어떠한 명제를 주어서 AND 같은 연산을 주어서 그 명제가 참인지 거짓인지의 결과를 얻는 방법이다. 하나씩 결과를 얻어야 하는 방법이기 때문에 자동프로그램을 많이 쓰는 편이다.
1. SQL Blind Injection페이지의 Form에 SQL Injection이 통하는지 작은따옴표를 대입시켜 보지만 한정된 결과만 얻는 것을 확인할 수 있다.
2-1. 이러한 한정된 결과에서 쿼리가 변경될 수 있는지 확인이 필요한데 1' and 1=1#을 써보겠다. 1이라는 명제에 1=1의 참 값을 줘서 1의 값이 True이고 1=1의 값도 True이니 결과는 True이 돼야 한다.(1,2,3,4,5의 값은 id가 있기 때문에 True이다.) 하지만 1' and 1=2#와 같이 and뒤에 오는 값을 False를 주면 결과는 False가 돼야 한다. 결과 값이 달라지는 것을 보아 쿼리를 변조할 수 있다는 것을 알 수 있다.
2-2. 위의 AND연산 말고도 Sleep() 함수를 사용하여 응답 시간을 통해 알아 낼수도 있는데 1' sleep(5)#구문을 주면 True이면 5초 뒤에 값이 돌아오고 False면 5초 이내에 반응이 온다.(개발자 도구 -> Network탭에서 응답 시간을 확인할 수 있다.)
3. Sqlmap을 이용하여 해킹을 시도해보겠다.(Sqlmap tool) 터미널 창에 #sqlmap -u URL --cookie=COOKIE로 해당 사이트를 살펴 보겠다.
결과를 보면 boolean-based blind , time-based blind가 가능하다는 것을 알 수 있고 DBS가 MySQL로 되어있는 걸 알 수 있다.
4. #sqlmap -u URL --cookie=COOKIE --current-db로 해당 DB이름이 "dvwa"란 것을 알 수 있다.
5. #sqlmap -u URL --cookie=COOKIE -D DB_NAME --tables로 해당 DB의 테이블을 알 수 있다.
6. #sqlmap -u URL --cookie=COOKIE -D DB_NAME -T TABLE_NAME --columns로 칼럼 이름을 알수 있는데 users테이블에서 password를 알아낼 것이다.
7. #sqlmap -u URL --cookie=COOKIE -D DB_NAME -T TABLE_NAME -C COLUMN_NAME --dump로 password칼럼의 데이터를 dump 해서 해쉬 값으로 되어있는 값들을 알아 내보겠다.
10-1.XSS(DVWA - Low) (0) | 2020.02.07 |
---|---|
9-3. SQL Injection(DVWA - Medium,High) (0) | 2020.02.02 |
9-1.SQL Injection(DVWA - Low) (0) | 2020.01.31 |
8-2.CAPTCHA ATTACK(DVWA - High) (0) | 2020.01.27 |
8-1.CAPTHCA ATTACK(DVWA - Low,Medium) (0) | 2020.01.27 |
댓글 영역