Memories 313 Dalintis Parašė Vasario 12, 2023 (redaguota) Prizas - €50 per žmogų (maks. 2 laimėtojai, atsiimti bus galima bet kur*); jei savaitės gale nebus antro išsprendusio, likę €50 atiteks pirmajam. Nesant dalyviams, pinigai bus atitinkamai nukreipti. Sėkmės. tlbrltr.bmp Užuominos: Visa esmė failo reprezentacijoj (i.e., nuotraukoj), ne pačiame jame. O nuotraukoj, vienintelis dalykas, galintis užkoduoti kokią nors informaciją - spalvos. Gavus tam tikrą seką, reiktų atkreipt dėmesį į vienženklių ir kitų skaičių dėsningumą. Taip pat būtų pravartu peržvelgti phenomenon sprendimą, ypatingai antro etapo. 1.9.0-base; id - <...> pavadinimas; HTTP -> WAV (200 OK). https://en.wikipedia.org/wiki/Equations_of_motion#Constant_linear_acceleration_in_any_direction, kur v0 ∝ 𝑓(β, θ). - Svarbu atkreipti dėmesį, kad visos (kiek?) naudojamos spalvos yra atvaizduotos pirmoj sekoj, o antroj šios tik kartojasi. Taip pat reiktų pastebėti, kad pirma seka nusako asociatyvų masyvą (šiuo atveju, spalva -> šios pozicija pirmoj sekoj, pradedant nuo 0), o antra į jį indeksuoja. Redaguota Vasario 21, 2023 nario memories1 2 Cituoti Link to comment Share on other sites More sharing options...
Memories 313 Autorius/-ė Dalintis Parašė Vasario 14, 2023 (redaguota) Pridėtos užuominos pirmam, antram, trečiam ir penktam etapams, jei kas vis dar sprendžia. Redaguota Vasario 21, 2023 nario memories1 Cituoti Link to comment Share on other sites More sharing options...
Memories 313 Autorius/-ė Dalintis Parašė Vasario 21, 2023 (redaguota) Užsitęsė kiek ilgiau nei planuota, bet ir užduotis buvo kiek sudėtingesnė nei numatyta. Viską galutinai išsprendė tik vienas žmogus - @271898783 (gratz), o kadangi jau praėjo daugiau nei savaitė nuo event'o pradžios, visas prize pool (€100 (+ €25 už dedikaciją)) atitenka būtent jam. Kiek teko pastebėt, tai buvo dar vienas asmuo, kuriam pavyko įveikti pirmą ir galbūt įpusėti antrą etapą, so gz with that. Sprendimas: Pirma užduotis: Neanalizuojant BMP failo formato, matom, kad vienintelė mums pateikta info. yra 42 50px x 50px spalvoti blokai. Vadinasi, kad prieiti kitą etapą, privalom šiuos 'atkoduoti'. Kad tai padaryti, reikia turėti minimalų supratimą apie vieną populiariausių spalvų modelių - RGB, kuris plačiai naudojamas kompiuterinėj grafikoj (ir ne tik) spalvų atvaizdavimui. Šiame modelyje, spalva yra nusakoma trejų skaičių (0-255): R (red - raudonos), G (green - žalios) bei B (blue - mėlynos) komponenčių (pvz. šviesiai mėlyna būtų [0 240 255]). Tai žinant, spalvų blokus galim išskaidyt į skaitines jų reprezentacijas: 3 37 21 46 5 13 57 23 11 12 0 1 116 2 56 56 4 20 10 55 30 3 27 15 16 4 11 12 12 12 0 2 23 24 1 103 5 62 13 11 14 15 3 18 12 16 2 25 32 2 33 24 4 11 16 15 10 1 50 0 0 3 26 10 10 2 54 54 0 2 58 58 1 47 3 45 26 26 4 70 10 13 14 5 56 11 11 12 12 5 49 20 17 16 11 1 56 3 40 40 40 2 100 18 0 0 2 48 51 3 17 17 12 1 112 4 53 21 15 15 5 22 22 22 22 24. (Eita buvo iš kairės į dešinę, nuo viršaus į apačią. Tai suprasti leido failo pavadinimas: tlbrltr (tl - top left; br - bottom right; ltr - left to right).) Gautai sekai galim iškart bandyt taikyt akivaizdžiausią dalyką - ASCII koduotę, tačiau nieko vertingo tai mums neduos: Kiek atidžiau pažvelgę, pastebim, kad vienaženklius skaičius seka atitinkamas kiekis dviženklių ar triženklių skaičių:3 37 21 46 5 13 57 23 11 12 0 1 116 2 56 56 4 20 10 55 30 3 27 15 16 4 11 12 12 12 0 2 23 24 1 103 5 62 13 11 14 15 3 18 12 16 2 25 32 2 33 24 4 11 16 15 10 1 50 0 0 3 26 10 10 2 54 54 0 2 58 58 1 47 3 45 26 26 4 70 10 13 14 5 56 11 11 12 12 5 49 20 17 16 11 1 56 3 40 40 40 2 100 18 0 0 2 48 51 3 17 17 12 1 112 4 53 21 15 15 5 22 22 22 22 24 Jei ir toliau remsimės ASCII koduote, mums tikriausiai reikės skaičių intervaluose [65 - A; 90 - Z] bei [97 - a; 122 - z], tačiau didžioji dalis mūsų sekoj yra < 50, vadinasi šiuos turim tarpusavy susieti. Pradedam nuo elementariausios operacijos - sudėties:3 37 21 46 = 1045 13 57 23 11 12 = 11601 1162 56 56 = 1124 20 10 55 30 = 1153 27 15 16 = 584 11 12 12 12 = 4702 23 24 = 471 1035 62 13 11 14 15 = 1153 18 12 16 = 462 25 32 = 572 33 24 = 574 11 16 15 10 = 521 50003 26 10 10 = 462 54 54 = 10802 58 58 = 1161 473 45 26 26 = 974 70 10 13 14 = 1075 56 11 11 12 12 = 1025 49 20 17 16 11 = 1131 563 40 40 40 = 1202 100 18 = 118002 48 51 = 993 17 17 12 = 461 1124 53 21 15 15 = 1045 22 22 22 22 24 = 112 Gaunam: 104 116 116 112 115 58 47 47 103 115 46 57 57 52 50 46 108 116 47 97 107 102 113 56 120 118 99 46 112 104 112. Dauguma skaičių patenka į [97; 122] intervalą, todėl vėl pabandom pritaikyti ASCII koduotę: https://gs.####.##/akfq8xvc.php. Nuėjus į nuorodą mums yra atsiunčiamas 7z archyvas, vadinasi atkoduoti spalvas pavyko. Antra užduotis: Paieškoję info. apie .amxx failo plėtinį, randam, kad tai AMX Mod X plugin'as. Einam į AMX Mod X dokumentaciją, kad sužinoti, kaip šią sistemą įsirašyti (https://wiki.alliedmods.net/Installing_AMX_Mod_X_Manually). Tai padarę, įkeliam plugin'ą bei modulius ir paleidžiam listen servą (per "New Game"). Atsispawn'inus, mūsų yra prašoma pateikti ID, konsolėje rašant: gs_id <id>. Galim spėti, kad tai yra plugin'o pavadinimas (pvz., 377415336806707768). Mus informuoja, kad "ID priimtas", vadinasi spėjimas pasiteisino. Pateikus ID, chat'e pasirodo tekstas: "[godspeed] Δ = X ms", kur X - skaičius, kurio reikšmė priklauso nuo net'o greičio (pvz., man jis pastoviai laikėsi > 1000). Pastebim, kad ši eilutė kartojasi kas ~10 sek., o "ms" greičiausiai reiškia milisekundes. Visa tai mums leidžia suprasti, kad 10 sek. intervaluose plugin'as siunčia kažkokį request'ą kažkokiam serveriui, o mums svarbi info. - serverio atsakyme. Vadinasi, reikia analizuoti network traffic. Vienas populiariausių įrankių tokiai užduočiai - Wireshark. Atsisiunčiam ir pradedam stebėti atitinkamą net interface'ą. Į paketus atkreipiam dėmesį tik tuomet, kai chat'e išprint'inamas reikiamas pranešimas. Tai leidžia mums pastebėti, kad atsakymas gaunamas per kelis protokolus, svarbiausi kurių: TCP ir HTTP. TCP atlieka duomenų transportavimo vaidmenį, o ir jo paketų pareina tūkstančiais, vadinasi visas mūsų dėmesys krypsta į HTTP. Pritaikom filtrą - http, kad matytume tik mums aktualius paketus. Gaunam kažką panašaus į Rodyklės po kaire rodo, kad 200 OK yra serverio atsakymas, vadinasi ten galimai bus mums svarbi info. Pasirinkę vieną paketą, žiūrim į tab'ą apačioj, kur randam "Data" skyrių. Ant šio paspaudę dešinį pelės mygtuką ir pasirinkę "Show Packet Bytes...", matom, kad atsakymas - RIFF/WAVE audio failas. Eksportuojam baitus į atskirą failą ir šį perklausom. Girdim skaičių seką, pvz.: [email protected]. "@", šiuo atveju, nurodo, kad toliau gilintis reiktų į patį plugin'ą, todėl pradžiai atsidarom šį per notepad'ą: Tačiau nieko įdomaus nerandam - greičiausiai reikės decompile'inti, ką ir pabandom padaryti su Lysis. Gautame decompiled_3774151336806707768.txt atkreipiam dėmesį į 10 bei 11 eilutes: Einam į https://gs.####.##/elkcly4zyg.php, kur mūsų yra prašoma nusakyti išmesto ginklo judėjimą ir pateikti galutines šio koordinates, turint pradinius kampus, poziciją bei judėjimo trukmę. Taip pat yra teigiama, kad visa reikiama info. mums taps prieinama vos tik pateiksim kažkokį raktą, konsolėje rašydami: gs_num <raktas>. Dar nepanaudojom skaičiaus prieš "@", todėl pabandom pateikti šį. Esam informuojami, kad "raktas priimtas", o HUD'e atsiranda kampai. Išmetus ginklą, HUD'e (ir konsolėj) atsiranda dar daugiau info.: Trečia užduotis: Per daug teksto, kad sutalpinti į forumo pranešimą, todėl, kam įdomu, detalų sprendimą rasit čia (PDF). Pateikę galutines koordinates (apytikriai [7608.75 -3960.08 -68675.7]), gaunam kitą užuominą: ?:12122/cHXty82epTPe3NtEATqNzgzKrL6Q8r. Dvitaškis ir klaustukas prieš jį leidžia suprasti, kad 12122 yra serverio port'as, greičiausiai to pačio, kur host'intas web'as, todėl pabandom gs.####.##:12122 su pw: cHXty82epTPe3NtEATqNzgzKrL6Q8r. Ketvirta užduotis: Sėkmingai prisijungę prie serverio, pastebim, kad neužilgo atsiranda bot'as su nick'u: "userinfo#2 [60]". Paskutinis skaičius kas sekundę mažėja, o pasiekęs 0 - reset'inasi. Pirma nick'o dalis hint'ina į (greičiausiai, bot'o) userinfo, todėl bandom kažko ieškoti ten. Išgauti kito žaidėjo userinfo yra du man žinomi būdai: analizuojant demo ir inspect'inant žaidimo atmintį; pabandysim abu, pradedant nuo demo: Kadangi demo yra automatiškai įrašinėjamas, šį sustabdom ir atsidarom per compLexity Demo Player. Einam į "Players" tab'ą ir pasirenkam bot'ą. Vidurinėj lentelėj matom dvi įdomias key-value poras: Pateikti raktą chat'e pavėlavom, todėl viską greit pakartojam reset'inus bot'o timer'iui. Galiausiai, gaunam prieigą prie bot'o valdymo: Kartojam tą patį tik šį kart tikrindami žaidimo atmintį: Kadangi serveris nėra VAC-secured, galim nesibaimindami atsidaryti Cheat Engine. Savo userinfo žinom, tad pradedam ieškoti būtent savos key-value poros, pvz. "test2" -> "test123": Randam kelis adresus. Mums aktualūs greičiausiai bus tik statiniai globalūs adresai, todėl pradedam nuo hw.dll+2F072E ir baigiam hw.dll+120446A. Spaudžiam dešinį pelės mygtuką ir renkamies "Browse this memory region". Mūsų, o kartu ir bot'o userinfo galiausiai pavyksta rasti ties adresu hw.dll+120446A. Pateikiam gs_secret reikšmę chat'e, kas mums vėl duoda bot'o kontrolę. Apėję map'ą, pastebim baltą tašką ant box'ų prie T respo (de_dust2_2x2 map'e). Kad šį pasiekti, galim pasinaudoti friendlyfire boost'u. Penkta užduotis: Galiausiai, ant ekrano pasirodo 16 skirtingų spalvų bei nuoroda. Po kurio laiko pasirodo dar viena spalvų seka, tačiau šį kart tų pačių. Aplankę nuorodą, matom, kad mūsų yra prašoma pateikti skaičių dešimtainėje sistemoje. Iš spalvų kiekio galima suprasti, kad šios sutinka su šešioliktainės sistemos simboliais (0-f). Remdamiesi šiomis įžvalgomis, skaičių atkoduojam ir konvertuojam į dešimtainę sistemą. Pateikus konvertuotą skaičių, yra atveriama event'o pabaiga. Event'ui rašytų script'ų (ir ne tik) source: godspeed.7z Dėkui visiems dalyvavusiems, nors šį kart nežinau, kiek tiksliai jūsų buvo. Tikiuosi buvo įdomu. Sėkmės. Redaguota Vasario 22, 2023 nario memories1 Cituoti Link to comment Share on other sites More sharing options...
zed 498 Dalintis Parašė Vasario 27, 2023 čia jau pasibaigė? Cituoti Link to comment Share on other sites More sharing options...
Rekomenduojami pranešimai
Prisijunk prie pokalbio
Gali rašyti dabar, o užsiregistruoti vėliau. Jei turi paskyrą, prisijunk dabar, kad galėtum paskelbti iš savo paskyros.