old-02 풀이

2024. 2. 11. 17:36webhacking.kr

728x90

메인 페이지
F12 / 페이지 코드

코드를 확인해 봤는데 주석 2개가 달려있습니다

하나는 시간, 하나는 admin.php의 존재를 알려주는 문구였습니다

우선 admin.php로 접속해 보겠습니다

 

admin.php

secret password를 입력하라고 합니다

그냥 아무 값(admin)이나 입력해 보겠습니다

 

admin 입력 후

wrong password라는 문구가 뜨네요

이 상태로 개발자 도구를 열어서 코드를 살펴봤는데, 딱히 힌트가 될만한 부분은 없었습니다

Application으로 들어가서 쿠키라도 살펴보겠습니다

 

Cookie

time이라는 쿠키가 하나 있네요?

첫 화면에서 봤던 시간이랑 연관이 있는 것 같은데, 이 값을 1로 바꾸고 시간을 다시 확인해 보겠습니다

 

시간이 변했다

2070-01-01 09:00 까지는 고정인 것 같고, 그 뒤에 사용자가 입력한 쿠키 값이 출력되는 것 같습니다

(2070-01-01 09:00:[사용자입력] 이런 식으로)

쿠키 값에 참, 거짓을 넣어서 입력이 어떻게 들어가는지 확인해 봤습니다

 

False 입력
시간 변경

True를 입력했을 때는, 2070-01-01 09:00:01이었는데, False를 입력하니까 위와 같이 값이 0으로 바뀌었습니다

이를 활용하여 SQL Injection을 할 수 있을 것 같습니다

우선 DB에 대한 정보가 아무것도 없으므로, 손으로 계속 값을 넣어가며 참/거짓을 확인해야 합니다

아래의 순서대로 정보를 찾아보겠습니다

1. DB 이름 글자수 확인
2. DB 이름 찾기
3. information_schema로 테이블 조회
4. 테이블 이름 조회
5. 테이블에서 컬럼 조회
6. 컬럼에서 행 조회

찾는 과정을 하나하나 캡처해서 보여주면 사진이 너무 많아지므로, 참이 나온 명령어만 캡쳐해서 첨부했습니다

 

1. DB 이름의 글자수는 6
2. DB 이름 찾기 (DB 이름은 chall2)
3. 테이블의 갯수는 2개
4. 첫 번째 테이블 이름 찾기 (admin_area_pw)
4. 두 번째 테이블 이름 찾기 (log)
5. admin_area_pw의 컬럼 조회 (컬럼은 총 1개)
5. admin_area_pw의 컬럼 이름 길이 조회 (2글자, pw)
6. pw 컬럼에는 1개의 행 존재
6. pw 컬럼에 있는 행의 길이는 17자
admin.php

이렇게 많은 과정을 거쳐 얻어낸 비밀번호를 admin.php에 입력해 줍니다

 

문제 풀이 성공

노가다성 짙은 문제

728x90

'webhacking.kr' 카테고리의 다른 글

old-59 풀이  (0) 2024.02.15
old-48 풀이  (0) 2024.02.12
old-49 풀이  (0) 2024.02.10
old-21 풀이  (0) 2024.02.09
old-46 풀이  (0) 2024.02.09