챌린지2는 위와 같은 페이지를 보여줍니다.

소스보기를 통해 어떤 구조인지 확인!

소스보기를 통해 확인한 결과 날짜,시간, 그리고 if you블라블라 해서 admin.php 라는 단서가 보입니다.

그래서 admin.php를 검색해 보았습니다.

패스워드를 입력하는 input창이 보입니다.

프록시 툴도 이용해보고 injection 코드도 넣어봤으나 소용이 없었어요...

구글링을 통해 힌트를 얻어 쿠키값을 변조해보았습니다.

먼저 변조전 소스보기를 통해 코드의 변화를 살펴보겠습니다.

여기서 주목해야 할 것은 날짜!

"2020-03-03 01:08:44"

이제 변조 후의 소스코드 변화를 살표보면

쿠키 and 1=1 을 했을 경우 소스코드상의 날짜가 "2070-01-01 09:00:01로 변한 것을 확인 할 수 있습니다.

그럼 거짓을 경우는??

거짓일 경우는 "2070-01-01 09:00:00"으로 변한 것을 확인 할 수 있었습니다.

참과 거짓으로 페이지의 변화가 일어나기 때문에 Blind Injection을 시행할 수 있습니다.

하나하나 모든 쿼리를 다 대입해볼 수 없기 때문에 파이썬을 이용하여 Blind SQL Injection 소스코드를 만들었습니다.

mysql 기준으로 쿼리를 간단히 살펴보면 아래와 같습니다.

[현재 위치한 DB의 테이블 수 검색]

select count(table_name) from information_schema.tables where table_schema=database()

[첫번째 테이블 명의 길이 검색]

select length(table_name) from information_schema.tables where table_schema=database() limit 0, 1

[첫번재 테이블 명의 한글자를 검색]

select ascii(substring(table_name,1,1 )) from information_schema.tables where table_schema=database() limit 0, 1

[해당테이블의 컬럼 개수 검색]

select count(column_name) from information_schema.columns where table_name="테이블명"

[해당 테이블의 컬럼 글자수 검색]

select length(column_name) from information_schema.columns where table_name="테이블명"

[해당 테이블의 컬럼명의 첫번째 한글자 검색]

select ascii(substring(column_name,1,1)) from information_schema.columns where table_name="테이블명"

[해당 테이블의 있는 컬럼 길이 검색]

select length(컬럼)from 테이블명

[해당 테이블의 컬럼에 해당하는 값 검색]

select ascii(substring(컬럼,1,1)) from 테이블명

제가 짠 파이썬코드는 엄청난 노가다로 만들었습니다... ㅋㅋㅋ

이 부분은 내용이 너무 길기 때문에 파일로 첨부하겠습니다.

결과는??

마지막 줄을 살펴보면 "kudos_to_beistlab" 이라는 글자가 있는데 이 부분이 pw에 해당!

이를 admin.php에 대입해보면!

위와 같은 알림창을 볼 수 있습니다.

이제 2번부터 엄청 노가다였네요 ㅠㅠ

남은 문제도 천천히 하나씩 풀어가보겠습니다~

BlindSQL.py
0.01MB

'WAR GAME > Webhacking.kr' 카테고리의 다른 글

[webhacking.kr] Level6 (old)  (2) 2020.04.27
[webhacking.kr] Level5 (old)  (2) 2020.04.27
[webhacking.kr] Level4 (old)  (312) 2020.04.27
[webhacking.kr] Level3 (old)  (313) 2020.04.27
[webhacking.kr] Level1 (old)  (324) 2020.04.27

+ Recent posts