2024. 2. 11. 17:36ㆍwebhacking.kr
코드를 확인해 봤는데 주석 2개가 달려있습니다
하나는 시간, 하나는 admin.php의 존재를 알려주는 문구였습니다
우선 admin.php로 접속해 보겠습니다
secret password를 입력하라고 합니다
그냥 아무 값(admin)이나 입력해 보겠습니다
wrong password라는 문구가 뜨네요
이 상태로 개발자 도구를 열어서 코드를 살펴봤는데, 딱히 힌트가 될만한 부분은 없었습니다
Application으로 들어가서 쿠키라도 살펴보겠습니다
time이라는 쿠키가 하나 있네요?
첫 화면에서 봤던 시간이랑 연관이 있는 것 같은데, 이 값을 1로 바꾸고 시간을 다시 확인해 보겠습니다
2070-01-01 09:00 까지는 고정인 것 같고, 그 뒤에 사용자가 입력한 쿠키 값이 출력되는 것 같습니다
(2070-01-01 09:00:[사용자입력] 이런 식으로)
쿠키 값에 참, 거짓을 넣어서 입력이 어떻게 들어가는지 확인해 봤습니다
True를 입력했을 때는, 2070-01-01 09:00:01이었는데, False를 입력하니까 위와 같이 값이 0으로 바뀌었습니다
이를 활용하여 SQL Injection을 할 수 있을 것 같습니다
우선 DB에 대한 정보가 아무것도 없으므로, 손으로 계속 값을 넣어가며 참/거짓을 확인해야 합니다
아래의 순서대로 정보를 찾아보겠습니다
1. DB 이름 글자수 확인
2. DB 이름 찾기
3. information_schema로 테이블 조회
4. 테이블 이름 조회
5. 테이블에서 컬럼 조회
6. 컬럼에서 행 조회
찾는 과정을 하나하나 캡처해서 보여주면 사진이 너무 많아지므로, 참이 나온 명령어만 캡쳐해서 첨부했습니다
이렇게 많은 과정을 거쳐 얻어낸 비밀번호를 admin.php에 입력해 줍니다
노가다성 짙은 문제