HSCTF 2021 - Not-really-math | Algorithm
Not-really-math
title: HSCTF 2021 - Not-really-math | Algorithm published: false —
Not-really-math
Solution
Summary: The program will give us a math expresssion with variables “m” and “a” and we need to perform calculation where addition (a) takes precedance over multiplication (m).
I have created a script that will convert the variables into their respective signs, split the string based on the multiplication sign, evaluate each element in the string to make sure that the addition is performed, then multiply each element in the string.
``` import socket import re from Crypto.Cipher import DES3 import time from time import time from random import randint from secrets import token_hex
class Netcat: “”” Python ‘netcat like’ module “””
def __init__(self, ip, port):
self.buff = ""
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.connect((ip, port))
def read(self, length=1024):
""" Read 1024 bytes off the socket """
return self.socket.recv(length)
def read_until(self, data):
""" Read data into the buffer until we have data """
while not data in self.buff:
self.buff += self.socket.recv(1024)
pos = self.buff.find(data)
rval = self.buff[:pos + len(data)]
self.buff = self.buff[pos + len(data):]
return rval
def write(self, data):
self.socket.send(data)
def close(self):
self.socket.close()
if name == ‘main’: nc = Netcat( ‘not-really-math.hsc.tf’, 1337)
nc.buff = b''
string = nc.read()
while True:
string = nc.read_until(b'\n') # Overwrites the first line
string = string.decode("utf-8")
print(string)
string = string.replace("m", "*") # Changes m into * sign
string = string.replace("a", "+") # Changes a into + sign
string = string.strip("\n") # Takes away the new line character
string = string.strip(": ") # Takes away the colon character
string = string.split('*') # Splits at every * sign
product = 1
for element in string:
element = eval(element) # Do math (addition) on each element
product = product * element # Find the product of all elements after addition
product = product % (2**32-1) # Take the mod 2**32 - 1
product = str(product)
product += "\n"
out = str.encode(str(product))
nc.write(out)
’’’
I was prompted about ten questions I think and the one below was just an example of one of the questions.
6733a3030a3477a948a9644a6843a4669m9802a3211m6562m363m1300a6508m7997m6479a6355a2693a7903a3936m2604a6671a3612m4937m1280a8127a1659a9862a1456m9969a4455m5953m6093m7474m8219a2011a6822m8247a7334a6404m23a3864a7146m1825m3101a6863m8438m9708a8683m9250a6296m11a5454m7128a2179m5420m713m8376a4770m695a9813a6370a6209a5522a3764a6326a3709m8830m530a4022a5547a6736a6793m317a7780m794a9380m7478m2013m4460m2153a2785a7312m3826a8809a989m1214a7766m6837m5069m9944m340a7177m2158m4474a1846m7059a8500m3033m4715a565a7804m8522m670a6498m6217m7923a4373a9078a5149a5453m2956m564m6629m5973m6385a5891a5463a1257a9206m2720a5216m1737a8219m2840a3121a7978a5080a1321m6988m7226m9725a9862a9244a6824m8750a2205m912a102a4574m4907m7266m6076a4484a8111a5737a2341a2362m9400m7474m5270a4332m6606m6930a6980m9711a4579a886a209a9064m4708a5641m2923m9267a1578a5385a1087a6749m8605a6931a8319m8413a4873a3662m9671m686m5401a7933m6012a4327m9951a8363a4136m6390a7852a4570a602a9667m4168m78m7237m1171m811m6317m5728m9745m5950a7258m216a107m5118a5472a691a9194m4073a2607a800m5075a8105m7635a6673m7179m490m8153m1735a6083a867a2162m9831a4310a4072m7609m6896m433a3467m2535m8905a1223a3370a6049a8468a7056a1717m9420m6357a5445m5026m2767m8091a8076a733m8297a7298a6275m4131m8610m2347m9860m3613a567a4280a5234a3626m7609a7989m4250m3170m3347a7966m7156a5916m2501a1703a2940m2148m5249a8198m5521a5707m9423a5695m8866m5065m4219m3386m697a3299a4103a5371a6995m4914a2330m5352m4969a4320m1620a4921a3724a8067m9020m632m5651a4816m223m2461a7768a9961a427m6586m2343m1319m9051m7143m521a7541m7752a4670a5462m4696a6823m4130m4627m1588a123a5463a1346a709a7207a6437m6233m5096a512a6905m2592a8855m2671m5045a9008a1037a2566a6531a3735a1494a9710a8623m3249a3276a8193m5387a9598m7523m23a8951a2650m2612m4322a5570m2723m6272m5277a4138a5226a8333m1899a6610a6363a2913a769a9786m284m5632m7118m5428a9668m5781a4260m6754a131m6680m4267m7798a7848a1242a2780a2159m8271m7970a3652a6055a4331a1303m1515a8367m1004a3442a8270m1665a2745a7886m9843a3018m3012a7611a969m2110m2472m819m1154m2298a3123m9958a2493a410m1868m9034a979m7249m317a2901m2224m3774m6063m6621a259a9932a9739m5005m2845m2018m4013a6601m5934a9234a2204a2101a6879m8393m3860a3267a8658a9169a7344m7091m3140a5364a8161a7214a2845a677a348m9386m4697m2110a771a5373a7080m694m6309a923m1104m9189a7866m3360a2279a9621m7879m9673m5426m8318a5198a7779a2726m752a2209a9933a8655a2793m2298a5311m2239a8930m1860m5753a8115m9102m188a7484m883a18a4158m7129m4380a51m5610a7434m2037a3827m222m5046a5113a6764m5524m9623m5808m1335m5999m500m9943m9044m3055m9289a3488m6183a8810a2317m3433m406m6895a9352a6051m8787a8509a9566m6136m2455m5770m7035m8605m6531a1601a7039a8720m7132a4081m3019m8420a3283m1419m9052a200a3413m8557m6153a6544a6532a2398a8627a9421a1749a3075m6816a6730a8917a1503m3944m6096m2011m5346a3913m6894a5045a1097a6942m1625a8228m5427m2876a5584m3723a6032a8422a4585m8143m9774a7847m913a1466m7861a3514a8268a4145a664a2816a9191a42a1815a3542m6253a5218a2114m3354a5648a8206a8521m7441m1305a5337m9457m8153m6487a375a8443m1406m8377m9765a7181m674m7937m9540a7766a5067m9463m9956a435a4293a8985m1916m4820a4241m1172a4670a5371a6708m4800a1697a1864a8583a3469m3343a9405a1186a4593a2130m6843a3246m2554a8557m7714a7383m5881m3725m8380m8075m2m1797a995m7924m5508m6985a2568m2809m9953m9901a1479m6898a2500m591a1896a8356a1399a2166a6886a3570m6938m7026m3392m5049m1577a9474a8586m3749a6676m9976a4254a8751a2684m4553m1737m7510m7343a5600m7257a6221m6025m1620m995a4963m917m675m746m7363a7790a4119a5713a3121a2161m8746a1615m3767m8067a7905a9565a4476m1251a5756a704m4064m8458m6789a4327m5412a4096m5789m8142m9112a7661m3493m7756m9192a6776a4953m6355m4147a5035a5893m6989m7671a4460m185m3122m7319m3881a862m7492a8569a9703m3279m977m7566a5801m8406a1731m1773m5373m6390a6712a2897a7624a1213m9692m2806a7176m5930a5435m1227m3296m9493m9748a803a4168a1285a759a4955a9684a9818m823m1502a193m579a1670m1674a899a2005a2492m9261m7713m1495m5850m6571m8759a3918m9752a513m5685m1352a8672a9792m797a8964a4386a4780a272m400m1355m8739a7019a6401a5686a765m7138m8503a4165m9598m4919m1476m226a589m3473a7315m3871a5279m5984m8261m9016m102a5103a9796m8072a787a5754a7139a2694m1953a2339m5041a2006a7959m1859a2425m1516a3467a4080a6957m7882m396a9271m9690m4009m8010m674a3842m9351m9490a2239m822a7619a449m6778a9632a5451m2627a8540m5355m8280a2289a429a5765m9646m2233m930a4322a3964a3944m3264a2213m387m7435a1906m7391a2079m9334a2506a4165a8830m2431m5348a9039a8052m8731a6989m7995m420a1688m5422m3998a342a4806a6047m5927a305a5827a2906a7255a5314a4277a8869a2459m296a3804a1550a1136a4291m2091m5874m7272a2205m6839a8015a5129m2867m8351a6259m8025m4900a4099m5067a6339m30m1499a6979m5051m9105a7909m5729a5373m5271a5658a604a2650a4071m7249a5105m8900m5290a8485a7332a5869m6092m6200m2184m987a9045a6098m8428m2379a4612a4459a1888m9921m4417a6842m1897a6308m2499m780a7772a4576m8539m1041m2521m9501a5516a9157a419a7792m8492m129m9333m108m353a8751a5800a5461m9180m2604m2441a8033m2028a4168m8073m6818a2009a7416a6086a2782a9068a2106a7276m7411m3803a2167a7669a539m9678m4807m4546a242a4149a5122a2484a5272a7021m2620a9866m431m609a9951a1112a6384m7845m2248m3610a2701a5956m3727a4896a5712a1537m4495a4341a485m2485a6802m9987a7868a5564a2479m4483m584m4977m2053a1390a9687a5863a7512a5468a2558m5813a6285m917m982a5593m7412a2620m7178a5587m70m3553m7210m331a8339m6613m4773a694m7031a6719m2652a9791m4767a4866m5177m6913a1060a868a3607a4682a3971a8657a666m2095m6596m9909a9484m7122m1214m866m8282m868a4641m1851m1430a7411a554m6311m2478a9020m3319m5438a9618a8220m6690a5440a7819a372m4613a5566a8549m9319m8305a233a8448m3442a536m265a6674a7710a8245m4086m4582m7077a5256m7628a1143a6506m8950a1773a3862a7031m4318a9535m6094m9467a364m7734a4757a1806a2253a1666a1541a7665a628a1127m4498a3791a6913m9691m2551a5034m8091m6790m926m1847m5715a7838a5600m4089a8058m4285m2902m762a2585m7068a3553a8035m343m1532m2239a8582a895m1454m34m6356a5882m2267m3191a2698m8850m6872m5180a7388a9498a8358a275m9390a3369a6988m1115a7141m8082m6280a4541a5559m3658a5135m5437m8828m2723m9496a2487m6584a6601a3910a5593m3806m5073a3206a266m6092m5537m1062m6893a2198a1404a9317m3110a2196a3232m3372m4731m2159a1819a2528m921a3078a6650m5119a2448a9929m5484a2780a1968a4988m8731m4594a722a152a5189m7646a3984a4831a5618m9517a1078m4991m2149a7044m6851a8237a5887m6995m7826m7305m243a8472a3238m8139m5078m2018m6564a7836m1359m3583a3779a1793m7302m1836a412m1519a4237a8867a9945a5711a9960a2593a7691a7318m8972a5035m8305a377m1494a8069a4178m9987m5310m4531m8436a5055m9468a2140a8696m3047a5318a3336a2192a2321m9606m8309a8403a8207a3027m2393m6552m9083a7017m8227m5784m2561m510a8616m8312m9126m3601a4435a2869a2714a1728a3576m162a9222a284a1122m1316a5076a4408m7656a4416m8652m2399a794m5150a2285a7273m1362m4096m9242m5950m7350m6800m8063m8575a2943m9008m4722a4608m9282m7018a2567a7665m1549a8287a4716a3814m9560m4918a2468a5140m88m1238a6023m8160a9502a9110m2834m753m2347m4021m4297m1578m8141m5015a6585a6538m1744a3898m1845m1166a8130a2058m2360m4509m9748m832a8310a9990a4124m3117m8857m5750a6570m1453m8987m7759a403m8771a5839m9931a1707m3797m686m7963a3294a7042m7110m9629m8761m4130a5374m4991m3184m882a1531a1457m3495a3506a3074a2305m4797a168a915m727m1219a4971m9924m8138m6756a7038a3070m9789a2733m4388m4432a2158a5156m2995m3276m1008m6130m7811a5395m7012a3222a3310a7699a3981a2282m6815m6019m3958a4371a3373m5604a2452a847m8383m1582m3459m3871a6132a1651a9181m3319m5945m8778m3846m3569m2479a7361a8109a6029a9974m3596m5520a8934m6105m7050m232m8883a6161a3622a181m3910m7922m8765a9966m9939a8384a3320a5694m6075m3042a6243a4632m5148m7016m7888a4856a9503m2885a6882a2600a4420a2125m6980m3202a8030m4653a167m7251m5272a2195a580a8367a6488a8341m4636a6715m834m9077a7095a9941m7745a7354a2161a2634m8661a6457a1031m6309m4871m2201a9850m4610m9534a1426a62a5631a515a199a1724a3473m8937a146m4371m4426a6942m4596m1356m4498a2481a4260m8270a6820a4953m4547a2401m2675m7659a9002m9772m7739m345m9548m5096a5831m2208m2359a7490a1587a59m785a2791a2234a3100a874m5014a459m7346a4323m9384a5266m1609a7984m2788a7226m490a2208m1307a52m5737m6904a8739a749m2619m9139m8798a2847a6647a4995m6884a7773a8561m5149m2818m7342a8037a9430m1298a4669a1416a4817m5629a476a503m8076a9498m9461m452m8230m6417a3512m5948m7053m957m6085a4494m6520a8903a7421m7599a9455m2113m6691a5241a3573m7341a1099m4787m2560m1234a8582a5652a7286m3684a7230m679a11m2983m9461m4028m5564m137a1762a6180a8799a2143m1448a4840m8974m5368a3804m1354m2762a4312m232m7538a773a8165a6765a9384m6059a7153a4564m8010a8581a6012m8041m5396m9760m4450a8091m4004a5329a7657a9216a1415a9295m912m8567a2841a874a964m8251a1304m9431m6643a2576a9456a2516a7661a6936a167m8468a8042a9270m2647m3811a587m3733a2215a7420a4449a3422m302a9515m9309a4149m2911m416m5270m3232m2466a8744m5880m5124m4457a3453a5125m8442m2409a86m7947m1569a6370a3061a5938m1299a3789a3362m764a6886a7777m9726m8732a8345a3485a9223a1324a2601a1659a7145a7119m2753a1619a3909m3742a5208m8719m4260a4125a6045m603m3798m9324m793a8321m2066m6142m8868m4404a8610m7364m3102a9209m4803m9794m1068m4510m7453a2563a9454m2277a1568a1688a2982m3136a3884m8837a7836a6678m2653a5576a2623a3646m8177a534a9174m6131m8594m5165m6631m6920a760m7947m6278a269m7504a1418m3047m8816m6697m7247a3652m8164m149a6621a7544a5974a5627m945m5797m1804a4732a3774a1319m8544m1499a8738m1077m7420m3619m5382m9962m2884m4836m795a4386a9662a1942a5105m3071m573a2007m4299m1030m7775a8988m1168m951m3488a4799a5201a2007a6236a7913a6322a4270a9280a8835a7286a52m7082m9566a91a4901m4882a1040a9486m1439m4432m1718m7301a1387a7220a4002m8349a5501m6204m323a45475a3217m6203a5498a3424m5092m8564m3668m1394m4062m3852a1251m9470a4444a1062a1290a4861m8303m7911m8726m2223a709m9255a9080a7602a396a9116a62a569a727a4520a5725m4833a9533a2266a2221a8532m792a5843a2333m3826a8703a4392a2414m8489m7115a3781m4097a3882a3492m1721a7988a796m6895a2579m6906a6207m782m9768a5320a9612a6092m7536m4562m3042a9743a1615a7562a7044a5837a4282a8970a5907a1578a8701a3214a9800m9888a4422a7987m46m6614m9919a7004m6644a5963m9751m2325a2293m4976m5417a5267m1315a5771a5648a6699m2170m3554a1634m8652m6392a1675a2688m7779m7m224m9380m107a1870a4663m8858m641a9418a7559a7430m7357m3317a5680a7689a6586m8997a1545a7504m8558m9983a4920a1485a8996a7153a9545m986m5127a4632m4208m5838m9040m9920a349m635a6456a248m2264m4140a950a7397m5280a7146a6349m9632m4207a5135a3956m5981m4336m7029a2581a9356m4248a7712m2810
After answering all of the questions correctly, I got the flag.
flag{yknow_wh4t_3ls3_is_n0t_real1y_math?_c00l_m4th_games.com}