본문 바로가기

웹해킹/webhacking.kr

webhacking.kr old 06번 문제풀이

반응형

webhacking.kr old 06번 문제 개요

webhacking.kr old 06번 문제개요 1

문제에 들어가면 위와 같이 출력된다. view-source를 통해 코드를 확인하자.

 

 

webhacking.kr old 06번 문제개요 2

코드를 보면 val_id를 base64로 20번 encode를 하고 몇 가지 문자를 바꾼 후 user와 password 쿠키에 저장한다.

 

 

webhacking.kr old 06번 문제개요 3

문제 해결을 위해서 가장 핵심적인 부분은 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 된 값이 나온다. 

 

 

webhacking.kr old 06번 문제풀이 1

스크립트를 통해 나온 값을 쿠키에 입력해주고 새로고침을 하면,

 

webhacking.kr old 06번 문제풀이 2

해결되었다고 나온다.

 

 

 

 


몰랐던 개념

base64를 import 해서 python 코드를 작성해보지 않아서 시행착오가 있었다. 하지만 만들어야 하는 코드가 쉬워서 빠르게 해결할 수 있었다. 

 

 

 

728x90