crypto/no_padding_no_problem
This commit is contained in:
parent
ed63e69062
commit
44cc389da9
|
@ -0,0 +1,35 @@
|
||||||
|
#!/usr/bin/env nix-shell
|
||||||
|
#!nix-shell -i python3 -p python3 python3Packages.pwntools python3Packages.pycryptodome
|
||||||
|
|
||||||
|
from pwn import *
|
||||||
|
from Crypto.Util.number import long_to_bytes
|
||||||
|
|
||||||
|
def decipher(r: tube, ciphertext: bytes) -> str:
|
||||||
|
r.recvuntil(b'Give me ciphertext to decrypt: ')
|
||||||
|
r.sendline(ciphertext)
|
||||||
|
r.recvuntil(b'Here you go: ')
|
||||||
|
return r.recvline().strip()
|
||||||
|
|
||||||
|
def main():
|
||||||
|
addr, port, *_ = "mercury.picoctf.net 33780".split(" ")
|
||||||
|
r = remote(addr, int(port))
|
||||||
|
|
||||||
|
r.recvuntil(b'Good Luck!\n\n\n')
|
||||||
|
|
||||||
|
n = int(r.recvline().split(b' ')[1].strip())
|
||||||
|
e = int(r.recvline().split(b' ')[1].strip())
|
||||||
|
enc = int(r.recvline().split(b' ')[1].strip())
|
||||||
|
print(f"{n=}")
|
||||||
|
print(f"{e=}")
|
||||||
|
print(f"{enc=}")
|
||||||
|
|
||||||
|
padding = 2
|
||||||
|
encrypted_padding = pow(padding, e, n)
|
||||||
|
|
||||||
|
payload = (enc * encrypted_padding)
|
||||||
|
output = decipher(r, str(payload).encode())
|
||||||
|
flag = long_to_bytes(int(output) // padding).decode()
|
||||||
|
print(flag)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Loading…
Reference in New Issue