Question 16. ip log table
문제
Blind SQLi challenge.
You can use 'Ascii' to 'Date'
풀이
문제 접근 시 접속했던 IP들이 확인되며 추가적으로 admin login 이라는 관리자 로그인 폼도 확인되고 있다, 모두 누를 수 있는 버튼으로 구성되어 있다.
상단 이미지는 IP를 눌럿을 때 출력되는 로그의 자세한 정보로 확인되며 하단 이미지는 admin login 을 누르면 확인되는 로그인 폼으로 확인된다. admin의 계정을 찾아야 하는걸로 확인된다.
Ip log가 출력되는 페이지를 통해 확인 해 보니 post_method 방식으로 데이터가 전송되고 그 결과가 출력되는걸 확인할 수 있다. 한번 해당 값에 SQL Injection 구문을 삽입해보자.
파이썬을 통해서 간단하게 구현해보니 Injection 구문이 정상적으로 적용되는걸 확인할 수 있다. 지속적인 구문 입력으로 한번 공격을 시도해본다.
우선 false 값인 99999를 입력하니 서버의 초기 시간이 출력되는 걸 예상할 수 있었다, union 구문이 적용되는지 확인하기 위해 99999 union select 60 을 입력 시 1분이 증가한걸 확인할 수 있었다.
즉 참일 경우에는 해당 시간값이 출력되는 경우를 보면되고 거짓일 경우에는 시간값이 변하지 않는 경우를 두고 Blind SQL Injection 을 진행해야 한다 파이썬으로 코드를 작성하여 적용해보자.
작성된 코드를 활용하여 payload 에 적합한 구문들을 삽입하여 결과를 출력해보자.
1 union select ord(substr((select table_name from information_schema.tables limit ' + str(i) + ',1),'+str(w)+',1))
처음 사용된 table을 구하는 구문이다. 70번 그리고 71번으로 확인된 테이블에 관련 있는 테이블 정보를 확인할 수 있었다.
1 union select ord(substr((select column_name from information_schema.columns where table_name=char(97,100,109,105,110,95,116,97,98,108,101) limit ' + str(i) + ',1),'+str(w)+',1))
이번엔 column을 구하기 위한 해당 구문을 활용하여 id 와 ps 라는 값을 얻어냈다.
1 union select ord(substr((select id from admin_table limit ' + str(i) + ',1),'+str(w)+',1))
아이디 값을 확인할 때 활용된 구문이다.
1 union select ord(substr((select ps from admin_table limit ' + str(i) + ',1),'+str(w)+',1))
비밀번호 또한 비슷한 구문으로 제작하여 확인하였다. 이제 조합하여 제출해보자.
성공적으로 로그인에 성공하였고, 이를 제출 시 해당문제도 통과할 수 있다.
'Hacking > wargame.kr' 카테고리의 다른 글
[wargame.kr] Question 18. dmbs 355 (1) | 2021.07.19 |
---|---|
[wargame.kr] Question 17. lonely guys (0) | 2021.07.19 |
[wargame.kr] Question 15. Simple Board (0) | 2021.07.19 |
[wargame.kr] Question 14. pyc decompile (0) | 2021.07.19 |
[wargame.kr] Question 13. web chatting (0) | 2021.07.19 |