Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
grep -vstart = 1
import os
def unzip(filename):
os.system(f"unzip {filename}")
def untar(filename):
os.system(f"tar -zvjf {filename}")
def gunzip(filename):
os.system(f"tar -zvxf {filename}")
cur = start
while True:
files = os.listdir(str(cur))
file = next(filter(lambda x: '.txt' not in x, files)) # Ignore this monstrosity
file = os.path.join(str(cur),file)
if 'kz3' in file:
unzip(file)
elif 'bz2' in file:
untar(file)
else:
gunzip(file)
file = next(filter(lambda x: '.txt' in x, files)) # Again, ignore this monstrosity
os.system(f"cat {os.path.join(str(cur),file)} >> flags.txt") # Basically puts the text file into flags.txt
os.system(f"rm -rf {cur}") # Remove at your own risk, just cleans up and makes sure not to blow up your VM
cur += 1def getindex(a):
out = []
for i in a:
if "{" in i:
out.append(0)
if "3" in i:
out.append(1)
if "4" in i:
out.append(2)
if "2" in i:
out.append(3)
if "}" in i:
out.append(4)
return out
with open("out","r") as f:
out = f.read()
f.close()
out = out.split("\n")[:-2]
out = [[x[i:i+5] for i in range(0, len(x), 5)] for x in out ]
stats = ""
for j in range(5):
for i in out:
a = getindex(i)
print(a)
stats += str((a.index(j)-j)%5)
print(stats) # 4 is common
counter = [0,0,0,0,0]
for i in stats:
counter[int(i)] += 1
print(counter)
for k in range(5):
for j in range(5):
alpha = out[0][getindex(out[0]).index(k)]
alpha2 = {}
for i in alpha:
alpha2[i] = 0
for i in out:
thing = i[getindex(i).index(k)]
thing = thing[-1]+thing[:-1] # revshift by 4
alpha2[thing[j]] += 1
for i in alpha:
print(i,alpha2[i],end=" ")
print()> python -c 'import pty; pty.spawn("/bin/bash")' >&0$ sudo -l
(root) /usr/bin/chguser$ sudo /usr/bin/chguser other-user
Password: 1234qwer$ ls -alR
./flag:
flag.txt$ cat flag/flag.txthlp = open("help.csv","r").read().split("\n")
hlp = [[int(y) for y in x.split(",")] for x in hlp]
flg = open("flag.csv","r").read().split("\n")
flg = [[int(y) for y in x.split(",")] for x in flg]
from numpy import exp, array, random, dot, set_printoptions, inf
set_printoptions(threshold=inf)
class NeuralNetwork():
def __init__(self):
self.synaptic_weights = 2 * random.random((10, 1)) - 1
def __sigmoid(self, x):
return 1 / (1 + exp(-x))
def __sigmoid_derivative(self, x):
return x * (1 - x)
def train(self, training_set_inputs, training_set_outputs, number_of_training_iterations):
for iteration in range(number_of_training_iterations):
output = self.think(training_set_inputs)
error = training_set_outputs - output
adjustment = dot(training_set_inputs.T, error * self.__sigmoid_derivative(output))
self.synaptic_weights = self.synaptic_weights + adjustment # fukin numpy being shit kek
def think(self, inputs):
return self.__sigmoid(dot(inputs, self.synaptic_weights))
neural_network = NeuralNetwork()
print("Random starting synaptic weights: ")
print(neural_network.synaptic_weights)
training_set_inputs = [[y/100 for y in x[1:]] for x in hlp]
training_set_outputs = [x[0] for x in hlp]
print(training_set_inputs[0],training_set_outputs[0])
for i,j in enumerate(training_set_inputs):
neural_network.train(array([j]), array(training_set_outputs[i]).T, 10000) # gotta train individually or numpy gets triggered
print("New synaptic weights after training: ")
print(neural_network.synaptic_weights)
b = ""
for i,j in enumerate(flg):
print("Considering new situation :",j)
a = neural_network.think(array(flg[i]))[0]
b += str(int(a))
print(int(a))
print(b)from pwn import *
r = remote("p1.tjctf.org", 8003)
out = (r.recvline())
print(out)
out = eval(out.split('is ')[2][:-2])
r.sendline(str(out))
print(r.recvline())
print(r.recvline())
This works and I don't know why
tjctf{TH3_1llum1n4ti_I5_R3aL}