Security/Web 문제풀기
Webhacking.kr 6번
하얀콩토리
2021. 1. 27. 02:46
webhacking.kr 6번 문제를 풀어보자
첫 화면에 들어가면 ID와 PW가 보인다.
먼저 소스를 보자
코드를 정리해보면
user 쿠키값이 없을 때 val_id 값에 guest, val_pw 값에 123qwe를 저장하고
20번 반복하면서 val_id, val_pw를 인코딩하고
항목 안에 1~9의 숫자가 있으면 해당되는 특수문자로 대체한 뒤 user 쿠키와 password 쿠키에 저장하는 코드이다.
디코딩 부분도 마찬가지로
user와 password 쿠키값을 가져와서
각 특수문자에 대칭되는 1~9의 숫자로 치환하고
20번의 디코딩을 한 후
디코딩한 id가 admin이고 pw가 nimda면 문제가 해결된다.
따라서 admin과 nimda를 20번 인코딩한 후 숫자를 해당되는 특수문자로 바꾼 뒤 그 값들을 user과 password 쿠키값으로 설정하면 될 것 같다!
나는 20번 인코딩 + 숫자 특수문자로 바꾸기는 파이썬 코드로 작성해서 돌렸다!
코드는 아래와 같다
import base64
import sys
val_id = "admin"
val_pw = "nimda"
val_id = val_id.encode('utf-8')
val_pw = val_pw.encode('utf-8')
for i in range(20):
val_id = base64.b64encode(val_id)
val_pw = base64.b64encode(val_pw)
val_id = str(val_id)
val_pw = str(val_pw)
val_id.replace("1","!")
val_id.replace("2","@")
val_id.replace("3","$")
val_id.replace("4","^")
val_id.replace("5","&")
val_id.replace("6","*")
val_id.replace("7","(")
val_id.replace("8",")")
val_pw.replace("1","!")
val_pw.replace("2","@")
val_pw.replace("3","$")
val_pw.replace("4","^")
val_pw.replace("5","&")
val_pw.replace("6","*")
val_pw.replace("7","(")
val_pw.replace("8",")")
print("id = ", val_id)
print("pw = ", val_pw)
엄청난 결과값이 나왔다. 이 값을 각각 user와 password의 쿠키값에 넣어주자!
해결!