DamoNeer@home:~$

HSCTF 2021 - Not-really-math | Algorithm

Not-really-math

not-really-math.pdf

image


title: HSCTF 2021 - Not-really-math | Algorithm published: false —

Not-really-math

not-really-math.pdf

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}