반응형
webhacking.kr old 06번 문제 개요
문제에 들어가면 위와 같이 출력된다. view-source를 통해 코드를 확인하자.
코드를 보면 val_id를 base64로 20번 encode를 하고 몇 가지 문자를 바꾼 후 user와 password 쿠키에 저장한다.
문제 해결을 위해서 가장 핵심적인 부분은 if문이다. 이번 문제는 id는 admin을 password는 nimda를 인코딩해서 decode 되었을 때 값이 같아야 문제가 해결된다. 이제 스크립트를 작성해보자.
webhacking.kr old 06번 문제풀이
import base64
def replaceIt(data):
data = data.replace("1","!")
data = data.replace("2","@")
data = data.replace("3","$")
data = data.replace("4","^")
data = data.replace("5","&")
data = data.replace("6","*")
data = data.replace("7","(")
data = data.replace("8",")")
return data
if __name__ == '__main__':
ID = "admin"
PW = "nimda"
for i in range(0,20):
ID = base64.b64encode(ID.encode("UTF-8")).decode("UTF-8")
PW = base64.b64encode(PW.encode("UTF-8")).decode("UTF-8")
ID = replaceIt(ID)
PW = replaceIt(PW)
print(ID + "\n\n")
print(PW)
생각보다 간단하다. 메커니즘은 view-source에 나와있기 때문에 쉽게 만들 수 있었다. 먼저 ID에 admin을, PW에 nimda를 넣고 base64로 인코딩을 20번 해준다. 이후 문자를 replace 해주면 값이 encoding 된 값이 나온다.
스크립트를 통해 나온 값을 쿠키에 입력해주고 새로고침을 하면,
해결되었다고 나온다.
몰랐던 개념
base64를 import 해서 python 코드를 작성해보지 않아서 시행착오가 있었다. 하지만 만들어야 하는 코드가 쉬워서 빠르게 해결할 수 있었다.
728x90
'웹해킹 > webhacking.kr' 카테고리의 다른 글
webhacking.kr old 16번 문제풀이 (0) | 2022.09.17 |
---|---|
webhacking.kr old 14번 문제 풀이 (0) | 2022.09.16 |
webhacking.kr old 13번 문제풀이(Writeup) Blind SQL Injection 고난이도 문제 (2) | 2022.09.15 |
webhacking.kr old 15번 문제 해결 (0) | 2022.09.15 |
webhacking.kr old 01 문제 풀이 및 쿠키, 세션 설명 (0) | 2022.09.13 |