picoCTF 2024 — Writeup [Lao]
ສະບາຍດີ~ ພວກຂ້າພະເຈົ້າແມ່ນທີມ Cyberus Academy 🇱🇦 ເຊິ່ງເປັນໜຶ່ງໃນທີມທີ່ໄດ້ເຂົ້າຮ່ວມການແຂ່ງຂັນ picoCTF 2024 ທີ່ຫາກໍຈົບໄປ, ໂດຍບົດຄວາມນີ້ຈະເປັນບົດຄວາມທີ່ລວມວິທີຜ່ານແຕ່ລະໂຈດທີ່ທີມຂອງພວກຂ້າພະເຈົ້າສາມາດແກ້ໄດ້.
ໂດຍທີມຂອງພວກເຮົາປະກອບໄປດ້ວຍສະມາຊິກ 4 ຄົນຄື:
1. Jockky | (Mr. Vilaysone CHANTHAVONG)
2. momiji- | (Mr. Anouluck MANY)
3. xb0unnn | (Mr. Bounheuang SENKHAM)
4. chimoto01 | (Mr. Sitthisack KHAMPHILAVONG)
ກ່ອນອື່ນໝົດເຮົາມາທຳຄວາມຮູ້ຈັກກັບງານນີ້ນຳກັນກ່ອນ:
picoCTF ແມ່ນ platform ຮຽນຮູ້ທາງດ້ານ Computer Security ໂດຍການລົງມືປະຕິບັດໂຕຈິງຜ່ານການແກ້ໂຈດ CTF ໃນປະເພດຕ່າງໆໄດ້ຟີ, ນອກຈາກຈະເປັນ platform ໃຫ້ຮຽນຮູ້ແລ້ວ picoCTF ຍັງມີການແຂ່ງຂັນ CTF(Capture The Flag) ແບບ Online ທີ່ຈັດຂຶ້ນປະຈຳທຸກປີທີ່ທຸກຄົນສາມາດລົງທະບຽນເຂົ້າຮ່ວມານແຂ່ງຂັນໄດ້ຟີ ໂດຍຈະເປັນການແຂ່ງໃນຮູບແບບ Jeopardy ທີ່ມີເປົ້າໝາຍໃຫ້ນັກສຶກສາລະດັບມັດທະຍົມ ແລະ ມະຫາວິທະຍາໄລ ໃຫ້ມາສະແດງທັກສະຄວາມສາມາດທາງດ້ານ Computer Security ຄວບຄູ່ໄປກັບຄວາມສາມາດໃນການແກ້ໄຂບັນຫາ
![picoCTF 2024 — Writeup [Lao] — article image 1](/media/full-medium/06331c9ce32f/1-afcdcf6bd0077e6a8f9842e3a26cfc971ca1e65ab0a6651cfa9dfc8693c564cc.png)
Category Progress:
Binary Exploitation (7/10)
Cryptography (3/5)
Forensics (8/8)
General Skills (10/10)
Reverse Engineering (4/7)
Web Exploitation (6/7)
Total Team Score: 5725/9225
Web Exploitation
- Bookmarklet (50 points)
solved by: Jockky
![picoCTF 2024 — Writeup [Lao] — article image 2](/media/full-medium/06331c9ce32f/2-5745a7381bed839c9b759e55b7ad59a495399146014f9f308da0a851c54e88b6.png)
ມາເລີ່ມໃນໂຈດເວັບຂໍ້ທຳອິດ ເຮົາມາເລີ່ມຈາກການສັງເກດຈາກໜ້າໂຈດເຊັ່ນ: ໃນ Tags ເຮົາຈະເຫັນຄຳວ່າ obfuscation ເຊິ່ງໝາຍຄວາມວ່າການເຮັດໃຫ້ code ອ່ານໄດ້ຍາກຂຶ້ນໂດຍວິທີບາງຢ່າງ ແລະ ໃນ description ບອກໃຫ້ເຮົາ print flag
ເມື່ອເຂົ້າມາໜ້າເວັບໂຈດເຮົາຈະເຫັນ code javascript ທີ່ພາຍໃນ code ຈະມີ text ແປກໆທີ່ອາດຈະຜ່ານການເຂົ້າລະຫັດທີ່ເຮົາບໍ່ສາມາດອ່ານເຂົ້າໃຈໄດ້ໃນ function encryptedFlag ແຕ່ຖ້າເຮົາອ່ານ code ຕໍ່ເຮົາຈະຮູ້ໄດ້ວ່າມັນເປັນ code ທີ່ໃຊ້ຖອດລະຫັດ text ດັ່ງກ່າວ, ເຊິ່ງສັນນິຖານວ່າຄວາມວ່າເຮົາສາມາດນຳເອົາ code ໄປ run ເພື່ອຖອດລະຫັດໄດ້
![picoCTF 2024 — Writeup [Lao] — article image 3](/media/full-medium/06331c9ce32f/3-dc0a5fb13d729a43023a014d765d2f9964649e884db42b553c7f9c9359282505.png)
ໃຫ້ເອົາ code ທີ່ໄດ້ໄປ run ເຊິ່ງເຮົາສາມາດ run ໄດ້ຜ່ານເຄື່ອງເຮົາເອງ ຫຼື ຜ່ານ Console ໃນ browser ຕາມພາບດ້ານລຸ່ມ ແລະ ເຮົາກໍຈະໄດ້ flag ມາ.
![picoCTF 2024 — Writeup [Lao] — article image 4](/media/full-medium/06331c9ce32f/4-52d861d95667e4dbcf7233d82de6da498374a7deda6235cc3078774bad2423c9.png)
- WebDecode (50 points)
solved by: Jockky
![picoCTF 2024 — Writeup [Lao] — article image 5](/media/full-medium/06331c9ce32f/5-6220cdbc2f9779ee8b7111b8bcf4682ecc867d0d7c40abe2fa7f433d5c823a5a.png)
ໃນຂໍ້ນີ້ description ບອກໃຫ້ເຮົາໃຊ້ web inspector ໃນການຫາ flag
![picoCTF 2024 — Writeup [Lao] — article image 6](/media/full-medium/06331c9ce32f/6-c3fc223cc7ccd18317614db5602bdb165fa6d40633c772ea354fd4b4ad432fb3.png)
ຫຼັງຈາກເຂົ້າເວັບໂຈດມາແລ້ວໃຫ້ເຮົາ Inspect ຫຼື view-source ແຕ່ລະໜ້າເຊິ່ງເຮົາສາມາດເຫັນໃນ html code ວ່ານອກຈາກ index.html page ທີ່ເຮົາຢູ່ປັດຈຸບັນແລ້ວຍັງມີ about.html ແລະ contact.html
![picoCTF 2024 — Writeup [Lao] — article image 7](/media/full-medium/06331c9ce32f/7-5e0817710e5b7f8fbeb844666decaab84ddc1872fa8e89d397da12be9c335601.png)
ໃນໜ້າ view-source about.html ເຮົາຈະເຫັນ base64 encoded
![picoCTF 2024 — Writeup [Lao] — article image 8](/media/full-medium/06331c9ce32f/8-ecc451e76922f5d42f1eb48741f1476a5f60bf1ba5b9379ebc3a67eacea45616.png)
ນຳໄປ decode ແລ້ວເຮົາກໍຈະໄດ້ flag
![picoCTF 2024 — Writeup [Lao] — article image 9](/media/full-medium/06331c9ce32f/9-3a6fa30401e5574f4cf2ff38265a2f73dee5e2a2dfb75134f6525b2053f55225.png)
- IntroToBurp (100 points)
solved by: Jockky
![picoCTF 2024 — Writeup [Lao] — article image 10](/media/full-medium/06331c9ce32f/10-0f67c83ae41582e8f627a441d8a49ecf49c7bc9170608f18e7764f757e06f790.png)
ເຂົ້າເວັບເປົ້າໝາຍມາເຮົາຈະເຫັນ Registration form ເປົ່າໆ
![picoCTF 2024 — Writeup [Lao] — article image 11](/media/full-medium/06331c9ce32f/11-ca28bcf1cddfbf6ba7c3e4032a07af1d03b1df511bdd682aabcb4bc59be73ac5.png)
ໃຫ້ລອງປ້ອນຄ່າແລ້ວກົດ Register
![picoCTF 2024 — Writeup [Lao] — article image 12](/media/full-medium/06331c9ce32f/12-0c2d37b7f89ef2c36690d3b1926c41eb0f103346dc0e3cb3a566555ae8628e7b.png)
ຫຼັງຈາກ Register ແລ້ວເຮົາຈະຖືກ redirect ໄປໜ້າ /dashboard ທີ່ບອກໃຫ້ເຮົາຢືນຢັນຕົວຕົນຜ່ານ 2fa authentication ເຊິ່ງເຮົາບໍ່ຮູ້ລະຫັດດັ່ງກ່າວ
![picoCTF 2024 — Writeup [Lao] — article image 13](/media/full-medium/06331c9ce32f/13-8bd482d2b3f95d1585f665d34f9bc07ec799ed5c2ddbb46ea2110153279fb37f.png)
ກັບມາໃນໜ້າໂຈດຈະມີຄຳໃບ້ໃຫ້ເຮົາລອງ mangling the request
![picoCTF 2024 — Writeup [Lao] — article image 14](/media/full-medium/06331c9ce32f/14-38ca7ee6be3f9204a0e1b308727e737d20a7ee2537f32c774d79c6ef968945df.png)
ລອງໄປ research ຫາຂໍ້ມູນ
![picoCTF 2024 — Writeup [Lao] — article image 15](/media/full-medium/06331c9ce32f/15-a659ac28849e4df168217b126d72ef1677561997dcb02c7313a8654108b8f4d9.png)
![picoCTF 2024 — Writeup [Lao] — article image 16](/media/full-medium/06331c9ce32f/16-b82c97ac697bd2c95eae81f11eb5dc6d7d6b9c5ea5fa5b28710047c58a4f91d4.png)
https://portswigger.net/research/http-desync-attacks-request-smuggling-reborn
ຫຼັງຈາກ research ເຮົາຈະຮູ້ໄດ້ວ່າ http request smuggling ເປັນເທັກນິກໜຶ່ງທີ່ໃຊ້ເພື່ອຫຼອກ ຫຼື security bypass ຂອງເວັບເປົ້າໝາຍໂດຍການໃຊ້ເທັກນິກໃນການລັກລອບສົ່ງ request ທີ່ບໍ່ເພິ່ງປະສົງຕິດໄປນຳ request ປົກກະຕິ ເຊິ່ງຜົນລັບອາດຈະເຮັດໃຫ້ສາມາດເຂົ້າເຖິງຂໍ້ມູນທີ່ລະອຽດອ່ອນໃນລະບົບເປົ້າໝາຍໄດ້ໂດຍບໍ່ໄດ້ຮັບອະນຸຍາດເປັນຕົ້ນ.
ລອງໃຊ້ເທັກນິກ http request smuggling ໃນການແກ້ໂຈດ ໂດຍການເພີ່ມ:
POST /dashboard HTTP1.1
Host: titan.picoctf.net:50872
otp=test
ເຂົ້າໄປໃນສ່ວນຂອງ http body ໃນ request, ເຊິ່ງໃນນີ້ໃຊ້ BurpSuite ໃນການດັກ ຫຼື intercept request ປົກກະຕິອອກມາແລ້ວແກ້ໄຂເພື່ອສົ່ງ request ກັບໄປແບບປົກກະຕິອີກເທື່ອໜຶ່ງ ແລະ ເຮົາກໍຈະໄດ້ flag ມາ
![picoCTF 2024 — Writeup [Lao] — article image 17](/media/full-medium/06331c9ce32f/17-34440b0ee0b4f7654c44065b6fae459cc26c7002e09683849e54081e3e044dc3.png)
- Unminify (100 points)
solved by: Jockky
![picoCTF 2024 — Writeup [Lao] — article image 18](/media/full-medium/06331c9ce32f/18-d2f14de22762f8434a8b44c898b949db2f61c0f0cca53523b70fae9c6628f2af.png)
ຫຼັງຈາກເຂົ້າເວັບໂຈດມາເຮົາຈະເຫັນເປັນໜ້າເວັບເປົ່າໆທີ່ບໍ່ມີຫຍັງ
![picoCTF 2024 — Writeup [Lao] — article image 19](/media/full-medium/06331c9ce32f/19-e86a47dc90fae8a422d8b1e0585fc586a6e3f074cc8a4950bc9e9c67ef6113fa.png)
ແຕ່ຫຼັງຈາກ inspect ຫຼື view-source ເບິ່ງເຮົາຈະເຫັນ code ແຖວດຽວແຕ່ໂຄດຍາວເຊິ່ງຖຶກ obfuscation ເຮັດໃຫ້ອ່ານຍາກ
![picoCTF 2024 — Writeup [Lao] — article image 20](/media/full-medium/06331c9ce32f/20-4a3ef12eb606343220ae033e823f62a48684764b5044068310cdcb14c14bcf16.png)
ໃຫ້ copy code ທັງໝົດອອກມາໃສ່ Visual Studio Code ແລ້ວ Format Document ເພື່ອຈັດລຽງເຮັດໃຫ້ code ສາມາດອ່ານໄດ້ງ່າຍຂຶ້ນ
![picoCTF 2024 — Writeup [Lao] — article image 21](/media/full-medium/06331c9ce32f/21-d757ceea0129edb6a49c17eca3527d8688713537f106ad017eccbde875f148af.png)
ແລ້ວເຮົາກໍຈະໄດ້ flag ມາ
![picoCTF 2024 — Writeup [Lao] — article image 22](/media/full-medium/06331c9ce32f/22-bb7b0e860b4867f40d3c5747665fd1b714588ab6e0dba45e14559b15fec1bdf8.png)
- No Sql Injection (200 points)
solved by: xb0unnn
![picoCTF 2024 — Writeup [Lao] — article image 23](/media/full-medium/06331c9ce32f/23-6a7eb78ef9deb04256997874b0766e55ead04a05195f6f1d129f508d58c25b82.png)
ຫຼັງຈາກກົດເຂົ້າເວັບແລ້ວກໍຈະເຫັນໜ້າ form ໃຫ້ເຮົາ login
![picoCTF 2024 — Writeup [Lao] — article image 24](/media/full-medium/06331c9ce32f/24-5369afb05b57d6219f2a00de76e03ef6b3d236afc722e626d0191cb536ddb11a.png)
ເຮົາມາເບິ່ງກັນກ່ອນວ່າ ການສົ່ງ request ຂອງໂຕເວັບນີ້ມັນເຮັດໃນຮູບແບບໃດ
![picoCTF 2024 — Writeup [Lao] — article image 25](/media/full-medium/06331c9ce32f/25-f2ca88ab0cdfe33a0af8d542149af6ad0e47b66c0a968dce919915fc43bcf680.png)
ສັງເກດເຫັນວ່າ ມີການ request ໄປທີ່ route
/api/login
ໂດຍມີ request body ແມ່ນ
{
"email": "asd",
"password": "asd"
}
ຈາກຊື່ໂຈດທີ່ບອກຢູ່ວ່າເປັນ “No Sql Injection” ແລະ ເມື່ອກົດເບິ່ງ Hints ກໍຈະບອກວ່າ “Not only SQL injection exist but also NoSQL injection exists” ຈະເປັນຫຍັງໄປບໍ່ໄດ້ ນອກຈາກ NoSql Injection.
ຫຼັງຈາກທີ່ໄດ້ໄປສຶກສາມາ ກໍພົບກັບວິທີໜຶ່ງທີ່ໜ້າສົນໃຈ ນັ້ນກໍຄື “NoSQL operator injection” ໂດຍຕົວທີ່ເຮົາຈະນຳໃຊ້ກໍຈະເປັນ “$ne” ທີ່ໝາຍເຖິງ “ບໍ່ເທົ່າກັບ(not equal)”
ໂດຍ payload ທີ່ໄດ້ກໍຈະເປັນແບບນີ້
{"$ne": 1}
ນຳເອົາ payload ນີ້ໄປໃຊ້ ໃນໜ້າ login ໂດຍຈະໃສ່ທັງ email ແລະ password ແລ້ວກົດ sign in ຜົນລັບທີ່ໄດ້ກໍຈະເປັນແບບນີ້
![picoCTF 2024 — Writeup [Lao] — article image 26](/media/full-medium/06331c9ce32f/26-1415daf804214ffca8c797526ec38ea49084802dd7c2312b9947dde39a336e2c.png)
Login success!!! ວ່າແຕ່ flag ຢູ່ໃສລະບາດນີ້…
ຈາກ Hints “Make sure you look at everything the server is sending back” ເຮົາກໍກັບໄປອ່ານເບິ່ງ source code ຂອງ project ກໍພົບວ່າ ໃນ model ໄດ້ທຳການນຳ flag ມາເປັນຄ່າ default ໃຫ້ແກ່ token
const UserSchema: Schema = new Schema({
email: { type: String, required: true, unique: true },
firstName: { type: String, required: true },
lastName: { type: String, required: true },
password: { type: String, required: true },
token: { type: String, required: false ,default: "{{Flag}}"},
});
ເຊິ່ງຈາກ response ທີ່ເຮົາ login ສຳເລັດຈະມີ token ແນບມານຳ ໝາຍຄວາມວ່າ token ທີ່ສົ່ງມານັ້ນແລະຄື flag ທີ່ເຮົາຕາມຫາຢູ່ ແລະ ໜ້າຈະຖືກເຂົ້າລະຫັດໄວ້
ເຮົາພຽງແຕ່ນຳໄປຖອດລະຫັດ ກໍຈະໄດ້ flag ມາ
![picoCTF 2024 — Writeup [Lao] — article image 27](/media/full-medium/06331c9ce32f/27-03c28c4530d90f0c0ca6f10316c5b16f83f1663cd42718a909bb6bf3166c0d1a.jpg)
- Trickster (300 points)
solved by: xb0unnn
![picoCTF 2024 — Writeup [Lao] — article image 28](/media/full-medium/06331c9ce32f/28-9ee0b0e7a94a0bddb222b12f657b1fa4b78d646cfbd01539c58795b0e3c88f42.png)
- elements (500 points)
Cryptography
- interencdec (50 points)
solved by: Jockky
![picoCTF 2024 — Writeup [Lao] — article image 29](/media/full-medium/06331c9ce32f/29-fb40bff7908509da06f50da126b104e9a0a6c96750eb1390c3f2d34b99b688a4.png)
ໂຫລດ file ໂຈດມາເປີດອ່ານເນື້ອຫາເຮົາຈະເຫັນ base64 encoded
ນຳໄປ decode ແລ້ວເຮົາຈະໄດ້ base64 encoded ມາອີກໂຕໜຶ່ງໃຫ້ decode ອີກຮອບໜຶ່ງຈະໄດ້ text ທີ່ຖືກເຂົ້າລະຫັດຊຸດໜຶ່ງມາ
![picoCTF 2024 — Writeup [Lao] — article image 30](/media/full-medium/06331c9ce32f/30-f3cf9665bf0e4c35c48075a4e8f043c100cdc0475e1215cc5c9a2813f3ba85a6.png)
ນຳໄປ decode ROT ແລ້ວເຮົາກໍຈະໄດ້ flag ມາໃນຕຳແໜ່ງ ROT ທີ່ 19
![picoCTF 2024 — Writeup [Lao] — article image 31](/media/full-medium/06331c9ce32f/31-f04fd9a170aa942a6060e54ea952f4162b78690f609cfdba8e6527e4e36dfffd.png)
- Custom encryption (100 points)
solved by: xb0unnn
![picoCTF 2024 — Writeup [Lao] — article image 32](/media/full-medium/06331c9ce32f/32-ad520d81364295bf7295033cad087946ea8896c90dd6becb23952bd13c9bc529.png)
- C3 (200 points)
solved by: xb0unnn
![picoCTF 2024 — Writeup [Lao] — article image 33](/media/full-medium/06331c9ce32f/33-2aebdea12a35aeac341a0832bbb127cf40f440b9bdd8c5f1b6492cd3e0b3437d.png)
Reverse Engineering
- WinAntiDbg0x100 (100 points)
solved by: Jockky
![picoCTF 2024 — Writeup [Lao] — article image 34](/media/full-medium/06331c9ce32f/34-f78978e05f18523f25cf1628541a5ab6c6b9ca2c575e54016304701513869bbf.png)
ໂຫລດ file ໂຈດມາແລ້ວນຳເອົາໄປເປີດໃນໂປຣແກຣມ x32dbg ເພື່ອ debug, ໃຫ້ທຳການ run ແລ້ວກົດ Step Over ຈົນກວ່າຈະເຈີ function IsDebuggerPresent ແລະ ແປງຄ່າ ret ຈາກ 00000001 ໃຫ້ເປັນ 00000000
![picoCTF 2024 — Writeup [Lao] — article image 35](/media/full-medium/06331c9ce32f/35-b9736eebaae33ffc6b9bae52408a97a7c71902d95ed1c3d44750764e9b9e7b1b.png)
ໃຫ້ກົດ step over ຕໍ່ແລ້ວເຮົາກໍຈະໄດ້ flag ມາ
![picoCTF 2024 — Writeup [Lao] — article image 36](/media/full-medium/06331c9ce32f/36-8ebe7673c89ec4c87d57a3a69f2efca42613d2bb1526486f5d45c7dc7139caee.png)
- weirdSnake (300 points)
solved by: Jockky
![picoCTF 2024 — Writeup [Lao] — article image 37](/media/full-medium/06331c9ce32f/37-6d240820bb522a3bb19aa09fc252cd47f3d7ca52dffa4ea8d498baee0cc9d355.png)
ຫຼັງຈາກໂຫລດ file ມາແລ້ວອ່ານເບິ່ງເນື້ອຫາເຮົາຈະເຫັນເປັນ code ແປກໆເຊິ່ງໂຈດບອກເຮົາວ່ານີ້ແມ່ນ python bytecode ເຊິ່ງທາງຝັ່ງເບື້ອງຂວາຈະມີໂຕເລກບາງຢ່າງທີ່ເປັນ decimal
![picoCTF 2024 — Writeup [Lao] — article image 38](/media/full-medium/06331c9ce32f/38-e9976b784c6c2579b9ecc583d0a3c772eb4c68e4ff97a645344f45603a78014f.png)
ລອງເອົາມາແປງເປັນ text ໂດຍໃຊ້ cyberchef ເຮົາຈະໄດ້ text ທີ່ບໍ່ສາມາດອ່ານໄດ້ມາ, ແຕ່ໃນເນື້ອຫາຂອງ file ແຖວທ້າຍໆເຮົາຈະເຫັນຄຳວ່າ XOR
![picoCTF 2024 — Writeup [Lao] — article image 39](/media/full-medium/06331c9ce32f/39-dcafca317a061a318b57e8551b9451c8a98dc00c4dd03860f9404b60e254608a.png)
ລອງນຳໄປ XOR ໂດຍໃຊ້ key: picoCTF ຕາມຊື່ການແຂ່ງເຮົາຈະເຫັນວ່າມີໂຕອັກສອນສ່ວນໜຶ່ງທີ່ປ່ຽນໄປ
![picoCTF 2024 — Writeup [Lao] — article image 40](/media/full-medium/06331c9ce32f/40-a636ec5b7cfad8ea616c562c20843ce6ad6d419809c832a228d8b79e67428edb.png)
ລອງນຳໂຕອັກສອນທີ່ໄດ້ມາໃສ່ເປັນ key ແທນ ແລະ ເຮົາກໍຈະໄດ້ flag ມາ
![picoCTF 2024 — Writeup [Lao] — article image 41](/media/full-medium/06331c9ce32f/41-d206f4f7885831c2f6ca843a1269e7063b8aa1c2bbcc0eaf0f05891325b0ecb1.png)
Forensics
- Scan Surprise (50 points)
solved by: chimoto01
![picoCTF 2024 — Writeup [Lao] — article image 42](/media/full-medium/06331c9ce32f/42-d2bd5551d019e5093e86b03c2e6b4cd27f31f8efd293fb0acb6459cf20932cda.png)
ເປີດມາຂໍ້ແລກ pico ແຈກຄະແນນກ່ອນເລີຍ, ຂໍ້ນີ້ບໍ່ມີຫຍັງຫຼາຍ ຫຼັງຈາກດາວໂຫລດໄຟລ໌ມາແລ້ວ , Unzip ໄຟລ໌ ແລ້ວເຂົ້າໄປສະແກນໄຟລ໌ໄດ້ເລີຍ ມັນເປັນ QR Code ສະແກນ.
“C:\challenge\home\ctf-player\drop-in\flag.png”
ສາມາດສະແກນຜ່ານ website ໄດ້ https://scanqr.org/
![picoCTF 2024 — Writeup [Lao] — article image 43](/media/full-medium/06331c9ce32f/43-5500eedc502aaddedee735ae15fcfcea1206ba63b2da062a811b25090cb4bbed.png)
- Verify (50 points)
solved by: Jockky
![picoCTF 2024 — Writeup [Lao] — article image 44](/media/full-medium/06331c9ce32f/44-e4631587105449d24fe66f63f706f17ae1f5169223d4914ab1252563769ec097.png)
login ເຂົ້າ server ໂຈດເຮົາຈະເຫັນ 2 files: checksum.txt, decrypt.sh ແລະ directory /files. ໃນ checksum.txt ເປັນ hash ຊຸດໜຶ່ງເຊິ່ງເປັນປະເພດ sha256, ໃນ decrypt.sh ເປັນ script ໃນການຖອດລະຫັດ
![picoCTF 2024 — Writeup [Lao] — article image 45](/media/full-medium/06331c9ce32f/45-2e176f58c0fb12ee28cba074ac7197df816ca463cc22993425d30ee35e100fc8.png)
ໃນ directory /files ຈະມີ files ຊື່ແປກໆເຕັມເຊິ່ງຫຼັງຈາກລອງອ່ານເບິ່ງເຮົາຈະເຫັນເປັນ text ທີ່ຖືກເຂົ້າລະຫັດ
![picoCTF 2024 — Writeup [Lao] — article image 46](/media/full-medium/06331c9ce32f/46-00d7c0b2c8a66b79df7382f7932fd07425ebd8387b40fb620a425a3e6b250eb7.png)
ຈາກຂໍ້ມູນທັງໝົດທີ່ເຮົາມີສັນນິຖານວ່າເຮົາຕ້ອງໃຊ້ decrypt.sh ຖອດລະຫັດໃຫ້ຖືກ file ເຊິ່ງເຮົາສາມາດຫາໄດ້ຈາກການ checksum ໂດຍໃຊ້ hash sha256 ທີ່ເຮົາມີຕາມພາບດ້ານລຸ່ມ ແລະ ສຸດທ້າຍເຮົາກໍຈະໄດ້ flag ມາ
![picoCTF 2024 — Writeup [Lao] — article image 47](/media/full-medium/06331c9ce32f/47-66acc4d01dd5613137786457d57a2fd077aa428c79bb1f5a211b83d5ddde12d8.png)
- CanYouSee (100 points)
solved by: Jockky
![picoCTF 2024 — Writeup [Lao] — article image 48](/media/full-medium/06331c9ce32f/48-e99a904888ff8f93406049783fbe0aac4e768c016ac163d5feeac14603cdf8af.png)
ຫຼັງຈາກໂຫລດຮູບທີ່ເປັນໂຈດມາໃນຄຳໃບ້ບອກໃຫ້ເຮົາ view ເບິ່ງ information ຂອງຮູບ, ເຊິ່ງໃນນີ້ໃຊ້ເວັບ aperisolve ໃນການເບິ່ງ, ໃນຂໍ້ມູນ Strings ເຮົາຈະເຫັນ base64 encoded
![picoCTF 2024 — Writeup [Lao] — article image 49](/media/full-medium/06331c9ce32f/49-656aa3dc17f6a22c1832d2f38fd3f02f41f7c2d10ab3580647a0afc3fbc6a44a.png)
ນຳໄປ decode ແລະ ເຮົາກໍຈະໄດ້ flag ມາ.
![picoCTF 2024 — Writeup [Lao] — article image 50](/media/full-medium/06331c9ce32f/50-16d2149b3ed30c6bc095d636dcecdc61b19eda7d7109148bc0dfce73a631e48f.png)
- Secret of the Polyglot (100 points)
solved by: chimoto01
![picoCTF 2024 — Writeup [Lao] — article image 51](/media/full-medium/06331c9ce32f/51-cbc6fe3332d216a3938be1bdc33c947e6c384d34f120d1d8cc4b5a4dc3fb920d.png)
Description:
ສູນກາງປະຕິບັດການທາງດ້ານເຄື່ອຂ່າຍ NOC ຂອງສະຖາບັນໃນພື້ນທີ່ຂອງເຈົ້າໄດ້ກວດພົບໄຟລ໌ທີ່ໜ້າສົງໃສ, ພວກເຂົາໄດ້ຮັບຂໍ້ມູນທີ່ມັນຂັດແຍ່ງກັນ ວ່າມັນເປັນໄຟລ໌ປະເພດໃດແທ້? ພວກເຂົານໍາເຈົ້າມາເປັນຜູ້ສ່ຽວຊານພາຍນອກເພື່ອກວດສອບໄຟລ໌.
ເຈົ້າສາມາດດຶງຂໍ້ມູນທັງໝົດຈາກໄຟລ໌ແປກໆນີ້ອອກມາໄດ້ບໍ່?
Hints: ບັນຫານີ້ສາມາດແກ້ໄຂໄດ້ ພຽງແຕ່ເປີດໄຟລ໌ດ້ວຍວິທີຕ່າງໆ.
Let Go:
ຈາກຄໍາອະທິບາຍ ແລະ ຄໍາໄບທີ່ໃຫ້ມາກໍພໍຈະຮູ້ແລ້ວວ່າຄວນເຮັດແນວໃດ ~~~~~
ຫຼັງຈາກດາວໂຫລດໄຟລ໌ມາເຮົາກໍ່ເປີດເລີຍ:
![picoCTF 2024 — Writeup [Lao] — article image 52](/media/full-medium/06331c9ce32f/52-2015c1f7389573ecddba3229e0190427bbac7ddf91e41e5241cc762469e59d40.png)
ສັງເກດວ່າຈະໄດ້ Flag ພຽງແຕ່ເຄີ່ງດຽວ, ອີກເຄິ່ງໜຶ່ງເດ ຈະຫາໄດ້ຢູ່ໃສ?
ຊື່ໄຟລ໌ທີ່ເຮົາໄດ້ມາແມ່ນ flag2of2-final.pdf
ແຕ່ເມື່ອເຮົາໃຊ້ຄໍາສັ່ງເພື່ອກວດເບີ່ງ ມັນຈະເປັນໄຟລ໌ຮູບ PNG . (ເປັນໄປໄດ້ວ່າ ອາດຈະມີໄຟລ໌ສອງໄຟລ໌ທີ່ທັບກັນຢູ່)
file flag2of2-final.pdf
![picoCTF 2024 — Writeup [Lao] — article image 53](/media/full-medium/06331c9ce32f/53-e060ea9c01a48628696160ae93e4de0e1755108770b0eaafceafca53b1842cb3.png)
ລອງໃຊ້ຄໍາສັ່ງ Copy ໄຟລ໌ ຈາກ pdf ປ່ຽນເປັນ png ແລ້ວລອງເປີດໄຟລ໌ເບີ່ງ.
cp flag2of2-final.pdf flag.png
![picoCTF 2024 — Writeup [Lao] — article image 54](/media/full-medium/06331c9ce32f/54-ccecb8bbb6b840b5ca90e3b99a9871a83b22ce12e89f2825af33f9654d3c593a.png)
ໃນທີ່ສຸດ ທ່ານກໍ່ໄດ້ສ່ວນທີ່ຫາຍໄປ ໝາຍເຖິງ “flag” ເດີ້ ບໍ່ແມ່ນແຟນ🤣.
![picoCTF 2024 — Writeup [Lao] — article image 55](/media/full-medium/06331c9ce32f/55-54e360be18c5f4a90dc4fba1bb31d6cb5a2da1a6b36b1a61f0ba01be49978e3a.png)
- Mob psycho (200 points)
solved by: chimoto01
![picoCTF 2024 — Writeup [Lao] — article image 56](/media/full-medium/06331c9ce32f/56-533b1dc37c047824a4526f9f0f9daefc0ec9e8b195193a9b4a99e1943531cd78.png)
Description
ເຈົ້າສາມາດຈັດການໄຟລ໌ APKs ໄດ້ບໍ່?
Hints:
ເຈົ້າຮູ້ວິທີແຕກໄຟລ໌ APK ບໍ່? (unzip apk file)
ຕອນນີ້ເຈົ້າມີເຄື່ອງມືຫຼາຍເຄື່ອງມືສໍາຫຼັບການຄົ້ນຫາໄຟລ໌ເຫຼົ່ານີ້. (Now you have the whole host of shell tools for searching these files)
ມາເລີ່ມກັນເລີຍ:
ຫຼັງຈາກດາວໂຫລດໄຟລ໌ມາແລ້ວ ນໍາໃຊ້ຄໍາສັ່ງ file ເພື່ອກວດສອບເບີ່ງວ່າເປັນໄຟລ໌ປະເພດໃດ
file mobpsycho.apk
![picoCTF 2024 — Writeup [Lao] — article image 57](/media/full-medium/06331c9ce32f/57-79c01fb965f8f68ec0615a2f6272a4fc84ef0f3188447e157e56fbe325914071.png)
ເປັນແບບດຽວກັບຂໍ້ກ່ອນໜ້ານີ້ເລີຍ ເມື່ອເຮົາຮູ້ວ່າມັນເປັນໄຟລ໌ zip ເຮົາກໍ່ໃຊ້ຄໍາສັ່ງ cp ເພື່ອປ່ຽນມັນ ແລ້ວກໍນໍາໃຊ້ຄໍາສັ່ງ unzip.
cp mobpsycho.apk find.zip
unzip find.zip
ຫຼັງຈາກແຕກໄຟລ໌ແລ້ວ ນໍາໃຊ້ຄໍາສັ່ງ ls ເພື່ອເບີ່ງໄຟລ໌ທັງໝົດ.
![picoCTF 2024 — Writeup [Lao] — article image 58](/media/full-medium/06331c9ce32f/58-de16a504c20574df03ce087c441eba4c5340482fe1cdbe5f4af4660f090537ea.png)
ນໍາໃຊ້ຄໍາສັງ tree ເພື່ອກວດເບີ່ງ list ໄຟລ໌ທັງໝົດ, ຈະເຫັນວ່າມີ ໄຟລ໌ ແລະ Folders ຈໍານວນຫຼາຍ.
ຕໍ່ໄປເຮົາຈະໃຊ້ຄໍາສັ່ງ tree ບວກກັບ keyword ຄໍາວ່າ “flag” ເພື່ອຫາຄໍາຕອບ.
tree | grep flag
![picoCTF 2024 — Writeup [Lao] — article image 59](/media/full-medium/06331c9ce32f/59-4a4c704a36b67a6d9441504ca1f5851603c4ea89cc905b7fa0015494eb3eb605.png)
ແລ້ວກໍ່ພົບໄຟລ໌ flag (ຫາທີ່ຢູ່ຂອງໄຟລ໌ຈາກຄໍາສັ່ງ tree ແລ້ວອ່ານໄຟລ໌ດ້ວຍຄໍາສັ່ງ cat)
cat ./res/color/flag.txt
ຄ່າທີ່ໄດ້ແມ່ນ hex
![picoCTF 2024 — Writeup [Lao] — article image 60](/media/full-medium/06331c9ce32f/60-c7d00d7b3a6648dfad08acc4138c3ace23e2afcf62d73a6ef735cf7da960683c.png)
ນໍາຄ່າ hex ທັງໝົດໄປ decode ດ້ວຍຄໍາສັ່ງ echo + xxd :
echo "7069636f4354467b6178386d433052553676655f4e5838356c346178386d436c5f37343664666133397d" | xxd -r -p
flag ທີ່ໄດ້.
![picoCTF 2024 — Writeup [Lao] — article image 61](/media/full-medium/06331c9ce32f/61-22ae1288c5de3b92b5502043e440cd27e94454d36da073e1b5fd992aaf67c220.png)
- endianness-v2 (300 points)
solved by: chimoto01
![picoCTF 2024 — Writeup [Lao] — article image 62](/media/full-medium/06331c9ce32f/62-24c17e229b4c1fc19d9576fc4c270802a8a27b9c97d5e88e48db2571a197396b.png)
Description
ນີ້ຄືໄຟລ໌ທີ່ຖືກກູ້ຄືນຈາກລະບົບ 32 ບິດ ທີ່ມີການຈັດລຽງ bytes ທີ່ແປກປະຫຼາດ, ເຮົາບໍ່ແນ່ໃຈເລີຍວ່າມັນແມ່ນໄຟລ໌ປະເພດໃດ?
ໄຟລ໌ຂອງຂໍ້ນີ້ແມ່ນ: challengefile
ຂັ້ນແລກ ເຮົາມາລອງກວດສອບໄຟລ໌ດ້ວຍຄໍາສັ່ງ file challengefile ພົບວ່າບໍ່ສາມາດລະບຸໄດ້ ວ່າມັນແມ່ນໄຟລ໌ປະເພດໃດການແທ້ ມັນບອກແຕ່ວ່າເປັນ data.
ຕໍ່ມາເຮົາໃຊ້ຄໍາສັ່ງ xxd ເພື່ອເບີ່ງຄ່າ hex ແລະ ຄ່າ ascii ແລ້ວວິເຄາະວ່າມັນແມ່ນໄຟລ໌ປະເພດກັນແທ້.
xxd challengefile
![picoCTF 2024 — Writeup [Lao] — article image 63](/media/full-medium/06331c9ce32f/63-f8351963bf8ed9badf08d9678827e3ee032ebeae11aa7410cad4a19f946c0188.png)
ຈາກທີ່ເບີ່ງແລ້ວມັນໜ້າຈະເປັນໄຟລ໌ຮູບ jpg , ໂດຍເຮົາສາມາດເອົາຄ່າ hex ຈາກໄຟລ໌ challengefile ໄປທຽບກັບຄ່າHex ຂອງໄຟລ໌ jpg ຮູບໃດກໍ່ໄດ້.
![picoCTF 2024 — Writeup [Lao] — article image 64](/media/full-medium/06331c9ce32f/64-f8351963bf8ed9badf08d9678827e3ee032ebeae11aa7410cad4a19f946c0188.png)
![picoCTF 2024 — Writeup [Lao] — article image 65](/media/full-medium/06331c9ce32f/65-a13291fb3a2043cf5c9657f8761853d536489ba8ca2d8b642b5c9fb0521e8702.png)
ເມື່ອທຽບກັບໄຟລ໌ອື່ນເຫັນໄດ້ເລີຍວ່າມີການສະຫຼັບຄ່າຂອງ hex ໝົດທັງໄຟລ໌ເລີຍ.
- ສະຫຼັບເປັນຄູ່ “e0ff” ສະຫຼັບກັບ “d8ff” ເມື່ອສະຫຼັບກັບມາຈະໄດ້ d8ff e0ff
- ສະຫຼັບຮອບສອງ “d8ff e0ff” ເມື່ອສະຫຼັບກັບມາຈະໄດ້ ff d8 ffe0.
Next ~~ ນໍາຄ່າ hex ທັງໝົດອອກມາກ່ອນແລ້ວ Copy ໄວ້.
xxd -ps challengefile | sed ':a;N;$!ba;s/\n//g'
![picoCTF 2024 — Writeup [Lao] — article image 66](/media/full-medium/06331c9ce32f/66-e22a5d6419378795334e6240c02fabbf9fef34da48dd17a4e5aa56e00e88d07f.png)
ເມື່ອເຮົາຮູ້ວ່າມັນສະຫຼັບຄ່າຂອງຮູບແນວໃດແລ້ວ ເຮົາມາຂຽນໂປຣແກຣມແກ້ກັນ. ດ້ວຍພາສາ ງູ~~~
def switch_pairs(input_str1):
pairs = [input_str1[i:i+2] for i in range(0, len(input_str1), 2)]
switched_pairs1 = [pairs[i+2] + pairs[i+3] + pairs[i] + pairs[i+1] for i in range(0, len(pairs)-2, 4)]
output_str1 = ''.join(switched_pairs1)
return output_str1
def switch_pairs2(input_str2):
pairs = [input_str2[i:i+2] for i in range(0, len(input_str2), 2)]
switched_pairs2 = [pairs[i+1] + pairs[i] for i in range(0, len(pairs), 2)]
output_str2 = ''.join(switched_pairs2)
return output_str2
input_str1 = "hexinput"
output_str1 = switch_pairs(input_str1)
input_str2 = output_str1
output_str2 = switch_pairs2(input_str2)
print("Output:", output_str2)
ເມື່ອ run ໂປຣແກຣມແແລ້ວໄດ້ຄ່າ hex ຕາມນີ້ ແລະ ເຫັນວ່າມັນແກ້ໄດ້ຖືກ.
![picoCTF 2024 — Writeup [Lao] — article image 67](/media/full-medium/06331c9ce32f/67-318099dbb5e3f58ce34639e9bee999e98092e68ffaca52e6f4fdb6a9cab4fa72.png)
Copy hex ທັງໝົດແລ້ວເອົາຄ່າ hex ໄປ render ເປັນຮູບຢູ່ CyberChef ຕາມລິ້ງ https://gchq.github.io/CyberChef/
Flag ທີ່ໄດ້ ~~~~
![picoCTF 2024 — Writeup [Lao] — article image 68](/media/full-medium/06331c9ce32f/68-636b28598707955416cacaa5e6dbeac96fb6bb64ad8bd72acb1248eb9db32b7c.png)
- Blast from the past (300 points)
solved by: chimoto01
![picoCTF 2024 — Writeup [Lao] — article image 69](/media/full-medium/06331c9ce32f/69-d61bbe6d310fece69e38257f1566817ed91c4f021da21a862958aec5aafc0abc.png)
ໂຈດຂໍ້ນີ້ມັນໃຫ້ແກ້ໄຂເວລາໃຫ້ເປັນ 1970:01:01 00:00:00.001+00:00 , ແກ້ໄຂສ່ວນໃດນັ້ນ ເຮົາສາມາດນໍາໃຊ້ exiftool ກວດສອບໄດ້.
exiftool original.jpg
![picoCTF 2024 — Writeup [Lao] — article image 70](/media/full-medium/06331c9ce32f/70-9af793b2e29da0c7b199b90946434cd04188f715f3da22f18c06e83fe75a56a2.png)
ຈະເຫັນວ່າມີເວລາຢູ່ 7 ຂໍ້ມູນໃຫ້ເຮົາແກ້ໄຂ , ຂໍ້ມູນຕົວໃດຄືກັນເຮົາສາມາດແກ້ໄຂເວລາທັງໝົດໄດ້ດ້ວຍຄ່າ Hex ໄດ້ບາດດຽວພ້ອມກັນໄດ້ເລີຍ ດ້ວຍກັນໃຊ້ໂປຣແກຣມ https://hexed.it/ ຫຼື Hxd.
copy ໄຟລ໌ original.jpg ໄວ້ແລ້ວປ່ຽນຊື່ເປັນ original_modified.jpg ຫຼັງຈາກນັ້ນ ການແກ້ໄຂຂໍ້ມູນຕ່າງໆໃນໄຟລ໌ແມ່ນ ຈະແກ້ໄຂແຕ່ໄຟລ໌ original_modified.jpg ຢ່າງດຽວເລີຍ.
cp original.jpg original_modified.jpg
2023:11:20 15:46:23 = 323032333a31313a32302031353a34363a32330a0a
1970:01:01 00:00:00 = 313937303a30313a30312030303a30303a3030
ປ່ຽນຄ່າ “323032333a31313a32302031353a34363a32330a0a” ທັງໝົດເປັນ “313937303a30313a30312030303a30303a3030”
![picoCTF 2024 — Writeup [Lao] — article image 71](/media/full-medium/06331c9ce32f/71-373b5304b9d34b98aa2b47c0ef9c89184ec2dc4a81768d9a9feedf2a19a8e62a.png)
ແກ້ໄຂດ້ວຍການ Search ແລະ Replace ເຫັນວ່າແກ້ໄຂໄດ້ແຕ່ບາງສ່ວນເທົ່ານັ້ນ, ຕໍ່ໄປເຮົາກໍນໍາແກ້ສ່ວນທີ່ເຫຼືອ~~~
![picoCTF 2024 — Writeup [Lao] — article image 72](/media/full-medium/06331c9ce32f/72-e41113d6dc3187dfed24b91c93c14b54d514d9a8680141e021bfb993d90eed6d.png)
ປ່ຽນ 703 ໃຫ້ເປັນ 001 ດ້ວຍຄ່າ Hex ໃຊ້ວິທີ່ເກົ່າເລີຍມີແຕ່ປ່ຽນຄ່າ =>
![picoCTF 2024 — Writeup [Lao] — article image 73](/media/full-medium/06331c9ce32f/73-76d27ffc7834fe925638a38e9956eb67ebae896bd3a8194e7fa45147b7c69f28.png)
![picoCTF 2024 — Writeup [Lao] — article image 74](/media/full-medium/06331c9ce32f/74-a4aa86158ca9d0e2d5853d689072ae6f0f95f6c07ad201ed89ad5ab4bfb96f34.png)
ຫຼັງຈາກແກ້ໄຂແລ້ວ, ເຮົາຍັງເຫຼືອ Time Stamp ທີ່ຍັງບໍ່ທັນແກ້ໄຂ.
![picoCTF 2024 — Writeup [Lao] — article image 75](/media/full-medium/06331c9ce32f/75-55969e9ad68e5c22e26bc18760510a5af5271c6b550aad8e1d2f7057f398ea59.png)
ເນື່ອງຈາກມັນເປັນ Time Stamp ຂໍ້ມູນເວລາຂອງມັນຈະເປັນວິນາທີ ໃນການຄົ້ນກາເຮົາກໍຄວນຫາເປັນວິນາທີ ດ້ວຍຄ່າ Hex.
![picoCTF 2024 — Writeup [Lao] — article image 76](/media/full-medium/06331c9ce32f/76-cbde23ba3f374eeeff3ab7de2ecced9705160745ceecb3d4d5255c30f7d91373.png)
ເມື່ອເຮົາຂອງເອົາ 1700513181420 ໄປປ່ຽນເປັນວັນເວລາ ຜ່ານເວັບ https://gchq.github.io/CyberChef/ ຈະເຫັນວ່າມັນມີຄ່າຕົງກັນເລີຍກັບເວລາທີ່ເຮົາຍັງບໍ່ທັນແກ້ “2023:11:20 20:46:21.420” .
![picoCTF 2024 — Writeup [Lao] — article image 77](/media/full-medium/06331c9ce32f/77-422ab4420bd5bd1d04cf89a9746970357c7534bba1b29d86985f3173a74a9e6c.png)
ສ່ວນວັນເວລາ 1970:01:01 ມີຄ່າ Time Stamp ເທົ່າກັບ 0 ວິນາທີ
![picoCTF 2024 — Writeup [Lao] — article image 78](/media/full-medium/06331c9ce32f/78-b5a40d4782c9510e3ff8ef1f945839912733d21bc11d25f317f1d96e55822261.png)
ເຊີ່ງເຮົາໄດ້ລອງແກ້ດ້ວຍຄ່າ Hex ໃຫ້ເປັນ 0 ແລ້ວ ແຕ່ກໍ່ຍັງບໍ່ໄດ້, ແລ້ວໄດ້ລອງແກ້ໃຫ້ເປັນ 0 ຕາມຈໍານວນຄ່າ Time Stamp ເກົ່າ ຄືມັນມີ 13 ຕົວ, ແຕ່ວ່າ ເວລາມັນເປັນ 0000:00:00 00:00:00:000
hmm, ສຸດທ້າຍເຮົາໄດ້ລອງປ່ຽນ 0 ຕົວສຸດທ້າຍໃຫ້ເປັນ 1 ແລ້ວຄ່າ Time Stamp ທີ່ໄດ້ກໍ່ຈະເປັນແບບນີ້ 0000000000001 ແລ້ວເວລາມັນຈະເປັນ 1970:01:01 00:00:00.001
![picoCTF 2024 — Writeup [Lao] — article image 79](/media/full-medium/06331c9ce32f/79-84307be14ff7d90f074cb06cec03328161106d4a673a31cf7c7b52b92a24c398.png)
ໃນທີ່ສຸດເຮົາກໍ່ແກ້ເວລາໄດ້ຄົບ =>
![picoCTF 2024 — Writeup [Lao] — article image 80](/media/full-medium/06331c9ce32f/80-a77e52f493d836f16d49b6d4980de86f7c0a2bbdddc25531cc5c63809f61ba07.png)
ຕໍ່ໄປແມ່ນເອົາໄຟລ໌ທີ່ເຮົາແກ້ໄປ submit ໄດ້ເລີຍ.
nc -w 2 mimas.picoctf.net 56676 < original_modified.jpg
ກວດສອບຂໍ້ມູນທີ່ເຮົາແກ້ ເພື່ອເອົາ Flag ໄດ້ເລີຍ ຖ້າເຮົາແກ້ໄຂໄດ້ຄົບໝົດແລ້ວ.
nc mimas.picoctf.net 62322
Flaggg ~~~~~~~~
![picoCTF 2024 — Writeup [Lao] — article image 81](/media/full-medium/06331c9ce32f/81-34501f0dd0edcbf44352ba3f6f3708df24b4d751ac511a7d67890288d147d5ef.png)
- Dear Dairy (400 points)
solved by: chimoto01
![picoCTF 2024 — Writeup [Lao] — article image 82](/media/full-medium/06331c9ce32f/82-df4333d1225a39df66ed0801c424cad2c99f92a09c39d727ab5be1ec7eefbbe6.png)
General Skills
- Super SSH (25 points)
solved by: Jockky
![picoCTF 2024 — Writeup [Lao] — article image 83](/media/full-medium/06331c9ce32f/83-c08c2558f671e951670d127a3f9387052da46889b93d2f55cb6acc295ca927fa.png)
login ເຂົ້າສູ່ລະບົບໂດຍໃຊ້ ssh ຕາມທີ່ໂຈດໃຫ້ມາ ແລະ ເຮົາກໍຈະໄດ້ flag ມາ
![picoCTF 2024 — Writeup [Lao] — article image 84](/media/full-medium/06331c9ce32f/84-3f5e3f8e4aeb69c6f0f9a6f2f7dffd42db069a68346fa07586cc514496b21d2e.png)
- Commitment Issues (50 points)
solved by: Jockky
![picoCTF 2024 — Writeup [Lao] — article image 85](/media/full-medium/06331c9ce32f/85-0e7b041933ca135b630c57c59477ca2264ff9054178e17c24104b59b932b4196.png)
ໂຫລດ challenge.zip ຂອງໂຈດມາຫຼັງຈາກ unzip ເຮົາຈະເຫັນ directory .git ມາ
![picoCTF 2024 — Writeup [Lao] — article image 86](/media/full-medium/06331c9ce32f/86-106744e55f54595e12d8c54ecd01716f368d74fc34a6e41a4f22e7ab78808051.png)
ໃນຄຳໃບ້ບອກໃຫ້ເຮົາໃຊ້ Version control ໃນການກູ້ຄືນ files ເຊິ່ງແນ່ນອນວ່າຕ້ອງແມ່ນ git
ໃຊ້ git log ເພື່ອເບິ່ງ log ຂອງ git ໃນ directory ນີ້
![picoCTF 2024 — Writeup [Lao] — article image 87](/media/full-medium/06331c9ce32f/87-96f1d56d84d912bbeb3f0fcc30a0a8c4d64236084a5e83f56d6db20ed387e95a.png)
ໃຊ້ git show [commit hash] ເພື່ອເບິ່ງລາຍລະອຽດຂອງ git log ໂຕນັ້ນ ແລະ ເຮົາກໍຈະໄດ້ flag ຂອງຂໍ້ນີ້ມາ
![picoCTF 2024 — Writeup [Lao] — article image 88](/media/full-medium/06331c9ce32f/88-e7a7e943058f5249078d7e1874002dc5227050b1e964eae22dd1bb406826e09c.png)
- Time Machine (50 points)
solved by: Jockky
![picoCTF 2024 — Writeup [Lao] — article image 89](/media/full-medium/06331c9ce32f/89-382a52441d8b92b4c14944f50a75a1f0bfd5c688750e5409888f2f2d81a15e3c.png)
ເຮັດຄືຂໍ້ກ່ອນໜ້າໂຫລດ challenge.zip ຂອງໂຈດມາ unzip ແລ້ວເຂົ້າໄປໃຊ້ຄຳສັ່ງ git log ແລ້ວເຮົາກໍຈະໄດ້ flag ມາ
![picoCTF 2024 — Writeup [Lao] — article image 90](/media/full-medium/06331c9ce32f/90-ef211bc123fe7adadb9dd7d3a4d1c8d6fc972358d7402bd48c4c74fe685db4ff.png)
- Blame Game (75 points)
solved by: Jockky
![picoCTF 2024 — Writeup [Lao] — article image 91](/media/full-medium/06331c9ce32f/91-ef9373ea5c09ef607d09f30b2665d6f8ce66db4db17fc6d4b733b67a9c0f58b4.png)
ເຮັດຄືຂໍ້ກ່ອນໜ້າໂຫລດ challenge.zip ຂອງໂຈດມາ unzip, ແຕ່ພໍໃຊ້ຄຳສັ່ງ git log ຮອບນີ້ຈະມີຫຼາຍ log ຖືກ show ອອກມາ
![picoCTF 2024 — Writeup [Lao] — article image 92](/media/full-medium/06331c9ce32f/92-524e4e713c5a543f4d96bfde777c4b2e1a577d2c19ebcaf86eda7068faab57eb.png)
ເຮົາສາມາດໃຊ້ git show [commit_hash] ເພື່ອນຳເບິ່ງປະຫວັດເທື່ອລະໂຕເພື່ອຫາ flag ກໍໄດ້, ແຕ່ເນື່ອງຈາກວ່າເຮົາຮູ້ flag format ຫຼື ກໍຄື picoCTF{.*} ໃນນີ້ໂຕຂ້າພະເຈົ້າເລີຍເລືອກໃຊ້ git log ຄູ່ກັບ grep ເພື່ອຫາ flag ຕາມພາບດ້ານລຸ່ມ
![picoCTF 2024 — Writeup [Lao] — article image 93](/media/full-medium/06331c9ce32f/93-8015e06d0dcef61a26f62613926f29f4225cd209f7f04f3ab8f21d1118347736.png)
- Collaborative Development (75 points)
solved by: Jockky
![picoCTF 2024 — Writeup [Lao] — article image 94](/media/full-medium/06331c9ce32f/94-5cce26c03d7570c9aef764db67412c342f2f9f6fa761d730bc5a0e6ea6e6cb9b.png)
![picoCTF 2024 — Writeup [Lao] — article image 95](/media/full-medium/06331c9ce32f/95-fea23123409fb3c87bd1d36ecea5565d9c8d3b08dccc77c286e5add5e19346ec.png)
ເຮັດຄືຂໍ້ກ່ອນໜ້າໂຫລດ challenge.zip ຂອງໂຈດມາ unzip ແຕ່ຮອບນີ້ໃນ git log ບໍ່ມີຂໍ້ມູນຫຍັງໃຫ້ເຮົາແຕ່ໃນຄຳໃບ້ບອກໃຫ້ເຮົາໃຊ້ git branch -a ເຮົາຈະເຫັນວ່າມີນອກຈາກ main ແລ້ວມີ 3 branchs ແຍກອອກມາ
![picoCTF 2024 — Writeup [Lao] — article image 96](/media/full-medium/06331c9ce32f/96-2754014682d3eba365750b0dec94e75f457c5704b71daf0a56d7854c94293359.png)
ໃຊ້ຄຳສັ່ງ git show [branch_name] ເພື່ອສະແດງລາຍລະອຽດຂອງແຕ່ລະ branch, ເຊິ່ງ flag ຈະຖືກແຍກຢູ່ໃນທັງ 3 branchs ໃຫ້ເຮົານຳ flag ທີ່ໄດ້ທັງ 3 ສ່ວນມາລວມກັນ ແລະ ເຮົາກໍຈະໄດ້ flag ຂອງຂໍ້ນີ້ມາ ຕາມໂຕເອງພາບດ້ານລຸ່ມ
![picoCTF 2024 — Writeup [Lao] — article image 97](/media/full-medium/06331c9ce32f/97-4e4d617d948e9d60d3723f0f828e1759b56425181a7811afce5a8227cc7b391e.png)
![picoCTF 2024 — Writeup [Lao] — article image 98](/media/full-medium/06331c9ce32f/98-f49ee9155f340c79b831ddbd6c13b437549f654b629a952d1a1b92c52ea3dca6.png)
- binhexa (100 points)
solved by: Jockky
![picoCTF 2024 — Writeup [Lao] — article image 99](/media/full-medium/06331c9ce32f/99-53da8699327aa74f8aa54ce7d199bde5408fc5126e4bf4ce095fead12ae4dec8.png)
ຂໍ້ນີ້ໂຈດບອກໃຫ້ເຮົາແກ້ຄິດໄລ່ binary ໂດຍໃຊ້ operations ເຊິ່ງໃນນີ້ໃຊ້ RapidTables ອອນລາຍໃນການແກ້ໂດຍການນຳເອົາຄ່າ binary number 1 ແລະ binary number 2 ໄປໃສ່ແລ້ວເລືອກ operation ຕາມທີ່ໂຈດຕ້ອງການແລ້ວກົດ Calculate ເພື່ອຄິດໄລ່
![picoCTF 2024 — Writeup [Lao] — article image 100](/media/full-medium/06331c9ce32f/100-487e2cca58a165d467a77c7321201d2211a291019bc2ec652dc03e5c8a25ea9a.png)
ມາຮອດ Question ທີ່ 4 ແລະ 5 ປະກົດວ່າເຮົາບໍ່ສາມາດໃຊ້ຄືກັນກັບເວັບກ່ອນໜ້າໃນການຄິດໄລ່ໂດຍໃຊ້ Operation >> ແລະ << ໄດ້, ພໍລອງ research ຫາວິທີໃໝ່ປະກົດວ່າເຮົາສາມາດໃຊ້ໂປຣແກຣມ Calculator ທີ່ມີຕິດມານຳ Windows ໃນການຄິດໄລ່ໄດ້
![picoCTF 2024 — Writeup [Lao] — article image 101](/media/full-medium/06331c9ce32f/101-b42e44a77837fdf677daf8f0672bf5471604a9acf157b10178fd8f2e4fded7db.png)
ສຳຫຼັບ Question ທີ່ 6 ກັບມາໃຊ້ເວັບໃນການຄິດໄລ່ຄື Question 1–4, ເຊິ່ງປົກກະຕິເຮົາຈະຕ້ອງຕອບເປັນຄ່າ binary ແຕ່ສຸດທ້າຍລະບົບຈະໃຫ້ເຮົາຕອບຄ່າ Hexadecimal ເຊິ່ງໃນເວັບທີ່ເຮົາໃຊ້ແປງໃຫ້ເຮົາຢູ່ແລ້ວ, ໃຫ້ນຳມາຕອບ ແລະ ເຮົາກໍຈະໄດ້ flag ມາ
![picoCTF 2024 — Writeup [Lao] — article image 102](/media/full-medium/06331c9ce32f/102-ff23d5b60685758f494f2f31181105fce8ee83b2233d881f69efca92679d7868.png)
- Binary Search (100 points)
solved by: Jockky
![picoCTF 2024 — Writeup [Lao] — article image 103](/media/full-medium/06331c9ce32f/103-ec8953f62f35360f7b069d1952c4a3b698c5fead0bb56e55c177ea5b3c39fbea.png)
ຫຼັງຈາກ login ເຂົ້າ server ລະບົບຈະໃຫ້ເຮົາກອກໂຕເອງ 1–1000 ໂດຍໃນນີ້ຂ້ອຍເລີ່ມກອກຈາກ 500 ລະບົບ return ກັບມາວ່າ Lower!, ແຕ່ກອກ 300 ລະບົບພັດ return ກັບມາວ່າ Higher! ເຊິ່ງນັ້ນໝາຍຄວາມວ່າໃຫ້ເຮົາຫຍັບໂຕເລກເຂົ້າມາເລື້ອຍໆເພື່ອຫາຄ່າໂຕເລກທີ່ເປັນຄຳຕອບໃນ 300 ຫາ 500 ເທື່ອລະໜ້ອຍຕາມໂຕຢ່າງພາບດ້ານລຸ່ມ
ສຸດທ້າຍເຮົາກໍຈະໄດ້ຄຳຕອບມານັ້ນກໍຄື 334 ແລະ ເຮົາກໍຈະໄດ້ flag ມານັ້ນເອງ.
![picoCTF 2024 — Writeup [Lao] — article image 104](/media/full-medium/06331c9ce32f/104-de8766e39b77e1b9701207e59d4660342af06553245256a3f7512c043a37b0ac.png)
- endianness (200 points)
solved by: Jockky
![picoCTF 2024 — Writeup [Lao] — article image 105](/media/full-medium/06331c9ce32f/105-d6a3d7d8e798c4177b9f8aef5f233ca15349f5e3db9f203ec86f64bc8b054e63.png)
connect ເຂົ້າ server ເປົ້າໝາຍເຮົາຈະໄດ້ word ແປກໆມາໂດຍໂຈດໃຫ້ເຮົາແປງ word ທີ່ໄດ້ໄປເປັນ little endian ແລະ big endian
![picoCTF 2024 — Writeup [Lao] — article image 106](/media/full-medium/06331c9ce32f/106-b0e9ce5ee5505b3d3c0d0cda4c858f9450b31072cb79eedc45ef23607d15a2e4.png)
ໃນຄຳໃບ້ຂອງໂຈດຈະບອກໃຫ້ເຮົາຫາບາງຢ່າງເຊັ່ນຄ່າ hexadecimal ກ່ອນຄ່ອຍຫາ endian
![picoCTF 2024 — Writeup [Lao] — article image 107](/media/full-medium/06331c9ce32f/107-62353b28237423770541020f078076442576e856d3b093945b7ea3e413c611ca.png)
ລອງເອົາ word ທີ່ໄດ້ມາແປງເປັນ hexcadecimal ໂດຍໃຊ້ cyberchef
ຫຼັງຈາກ research(ສາມາດອ່ານເພີ່ມເຕີມກ່ຽວກັບ Endianness ໄດ້ທີ່ about how endianness) ຢູ່ໜ້ອຍໜຶ່ງເຮົາຈະຮູ້ໄດ້ວ່າ little endian ແມ່ນຈະເອົາ word ມາ reverse ກ່ອນຈັ່ງນຳເອົາໄປແປງເປັນ Hex, ສ່ວນ big endian ແມ່ນຈະເອົາ word ໄປແປງເປັນ Hex ເລີຍ:
Little Endian:
![picoCTF 2024 — Writeup [Lao] — article image 108](/media/full-medium/06331c9ce32f/108-fbd72faa9610e3fcbad92f0a55b15147b6bc260df2f01ed3b9585ac5229483e2.png)
Big Endian:
![picoCTF 2024 — Writeup [Lao] — article image 109](/media/full-medium/06331c9ce32f/109-c9dba87efbc2172c3da042a91e2528b69449aeab00c3ec44ece812f5f82c0040.png)
ຫຼັງຈາກໄດ້ຄ່າ Hex ຂອງທັງ little endian ແລະ big endian ມາແລ້ວໃຫ້ລົບ space ອອກແລ້ວນຳໄປຕອບ ແລະ ເຮົາກໍຈະໄດ້ flag ມາ
![picoCTF 2024 — Writeup [Lao] — article image 110](/media/full-medium/06331c9ce32f/110-a9428630b62f522e0313942137a0867db63bef13727d19248a038d67965dd833.png)
- dont-you-love-banners (300 points)
solved by: Jockky
![picoCTF 2024 — Writeup [Lao] — article image 111](/media/full-medium/06331c9ce32f/111-6d10ce56479c7a3e3a8b377a40a1402dd371fc9d1107391a637f56dfa73d45a8.png)
ຫຼັງຈາກກົດ Launch Instance ເຮົາຈະໄດ້ server ເປົ້າໝາຍມາ 2 server ໃຫ້ connect
![picoCTF 2024 — Writeup [Lao] — article image 112](/media/full-medium/06331c9ce32f/112-b88d1cf568726905c4856a98a7ef44468af8a796f738ffab1a72d91b525653b6.png)
connect ເຂົ້າ server ທີ່ 1 ເຮົາຈະໄດ້ password ມາ
![picoCTF 2024 — Writeup [Lao] — article image 113](/media/full-medium/06331c9ce32f/113-697ec9c07187f1eabede7a39e901ff4bddeed4d0c5e27cdaee2b62d33bf7699c.png)
connect ເຂົ້າ server ທີ່ 2 ເຮົາຈະໄດ້ໃຊ້ password ທີ່ໄດ້ຈາກ server ທີ່ 1 ຫຼັງຈາກໃສ່ແລ້ວລະບົບຈະໃຫ້ເຮົາຕອບຄຳຖາມ ເຊິ່ງເຮົາສາມາດນຳເອົາຄຳຖາມໄປ search ຫາຄຳຕອບໃນ google ແບບປົກກະຕິໄດ້ ແລະ ສຸດທ້າຍເຮົາກໍຈະໄດ້ຄຳຕອບມາຕອບຕາມພາບດ້ານລຸ່ມ:
![picoCTF 2024 — Writeup [Lao] — article image 114](/media/full-medium/06331c9ce32f/114-4e9ecf2fee60b49e5002a75dba96949463047f2211a2531761408fa346b289b0.png)
ຫຼັງຈາກຕອບຄຳຖາມຖືກເຮົາກໍຈະສາມາດເຂົ້າສູ່ລະບົບໄດ້ແຕ່ຫຼັງຈາກລອງຄົ້ນຫາ ແລະ ອ່ານ flag ປະກົດວ່າຕິດ Permission denied, ຍ້ອນວ່າ User ປັດຈຸບັນຂອງເຮົາບໍ່ມີສິດໃນການອ່ານ file ໃນ /root directroy
![picoCTF 2024 — Writeup [Lao] — article image 115](/media/full-medium/06331c9ce32f/115-80f11634bbf4cf43fa4083d90f8f244240532356236b6e23636a12af47c839ab.png)
ຕັດມາໃນຄຳໃບ້ບອກໃຫ້ເຮົາເດົາ ຫຼື ຖອດລະຫັດ
![picoCTF 2024 — Writeup [Lao] — article image 116](/media/full-medium/06331c9ce32f/116-b63e5646c9b2a46cafb034d8027a9c56f5953ea639048d61a83a54445b31f19e.png)
ເຊິ່ງໃນ Linux ໂດຍທົ່ວໄປຖ້າເວົ້າເຖິງ password ແນ່ນອນວ່າເຮົາຕ້ອງນຶກຫາ file /etc/shadow ທີ່ເປັນບ່ອນເກັບ hash password ຂອງ user ໃນລະບົບ ແຕ່ປົກກະຕິເຮົາຈະບໍ່ສາມາດອ່ານໄດ້ດ້ວຍສິດ user ທົ່ວໄປແຕ່ກໍມີບາງກໍລະນີທີ່ຜູ້ດູແລລະບົບອາດຈະຫຼົງ config ບາງຢ່າງເຮັດໃຫ້ user ທົ່ວໄປສາມາດອ່ານໄດ້
![picoCTF 2024 — Writeup [Lao] — article image 117](/media/full-medium/06331c9ce32f/117-4fdd84eb54834d6911e7f0249c247e560646e5e87b730fd092a6d533d60c763b.png)
ນຳເອົາ hash password ທີ່ໄດ້ໄປ crack
![picoCTF 2024 — Writeup [Lao] — article image 118](/media/full-medium/06331c9ce32f/118-4dd370685a6afeca087610a38b7f1c0b872d6d06c49a94bf5f054b09a9aa9860.png)
ນຳ password ທີ່ໄດ້ໄປ login ເປັນ root ແລ້ວເຮົາກໍຈະສາມາດເຂົ້າເຖິງ /root directory ແລະ ເຮົາກໍຈະໄດ້ flag ມາ
![picoCTF 2024 — Writeup [Lao] — article image 119](/media/full-medium/06331c9ce32f/119-e1f74f8636fca495c99103325db5075e95c2c811f424399b8bb27179af40149a.png)
- SansAlpha (400 points)
solved by: Jockky
![picoCTF 2024 — Writeup [Lao] — article image 120](/media/full-medium/06331c9ce32f/120-941a2172d08144ff964ea7ce9caa1bf000d848f64ee4e17283571b48f57739c5.png)
ໃນ description ໂຈດບອກໃຫ້ເຮົາ shell escape ແລ້ວໄປອ່ານ flag ໃຫ້ໄດ້ໂດຍໃຊ້ໄດ້ສະເພາະ symbols ບາງໂຕ ແລະ ໂຕເລກເທົ່ານັ້ນ
login ເຂົ້າ server ເປົ້າໝາຍເຮົາຈະຮູ້ໄດ້ວ່າເຮົາບໍ່ສາມາດໃຊ້ຄຳສັ່ງຫຍັງຜ່ານການພິມ character ໄດ້ເລີຍ ແລະ ຈະໃຊ້ໄດ້ສະເພາະ symbols ບາງໂຕ ແລະ ໂຕເລກຕາມທີ່ໂຈດບອກເທົ່ານັ້ນ
ຫຼັງຈາກ research ເຮົາຈະຮູ້ວ່າມັນກ່ຽວຂ້ອງກັບ Linux Bash Wildcard(ອ່ານເພີ່ມເຕີມໄດ້ທີ່ Bash Wildcard) ເຊິ່ງຫຼັງຈາກລອງໃຊ້ສະຫຼຸບວ່າຖ້າໃຊ້ * ລະບົບຈະເອີ້ນ directory ທຳອິດທີ່ຖືກ list ມາໃຫ້ເຮົາເຊິ່ງນັ້ນກໍຄື /bin directory ໃນ directory root ແລະ ເຮົາຈະເຫັນ /blargh directory ທີ່ມີ flag.txt ຢູ່ພາຍໃນຢູ່ໃນ current directory ປັດຈຸບັນທີ່ເຮົາຢູ່
![picoCTF 2024 — Writeup [Lao] — article image 121](/media/full-medium/06331c9ce32f/121-7e75d941d9cec7750edb845a6f300618c1a2d875935d53732f0898d19c72d557.png)
ນອກຈາກ * ແລ້ວເຮົາຍັງສາມາດໃຊ້ ? ເພື່ອແທນໂຕອັກສອນຕາມຈຳນວນເຄື່ອງໝາຍ ?ທີ່ໃຊ້ ຫຼືຊີ້ໄປຍັງ directory ຫຼື ຄຳສັ່ງທີ່ເຮົາຕ້ອງການ. ຕົວຢ່າງ /??? ຈະໝາຍເຖິງ /bin ແລະ ./?????? ຈະໝາຍເຖິງ ./blargh ແລະ ./*/????.??? ຈະໝາຍເຖິງ /blargh/flag.txt ເຖິງເຮົາຈະຮູ້ flag location ແລ້ວແຕ່ເຮົາຈະບໍ່ສາມາດອ່ານໄດ້ເພາະ ./ ໝາຍເຖິງການ execute file ບໍ່ແມ່ນການ read file
![picoCTF 2024 — Writeup [Lao] — article image 122](/media/full-medium/06331c9ce32f/122-6c37310d7a134c884d2f9f54618b9461deaefa8cd1defc6c59a89b02af40bb84.png)
ຈາກຂໍ້ມູນທີ່ເຮົາໄດ້ມາທັງໝົດສັນນິຖານວ່າເຮົາຕ້ອງຫາວິທີໃຊ້ຄຳສັ່ງໃນ /bin directory ເພື່ອອ່ານ flag, ລອງງົມໃນລະບົບຕໍ່ເພື່ອຫາວິທີໃຊ້ຄຳສັ່ງ ເຮົາຈະເຫັນຄຳສັ່ງ awk ເຊິ່ງແທນດ້ວຍເຄື່ອງໝາຍ /*/??? ແຕ່ຫຼັງຈາກລອງໃຊ້ຢູ່ຫຼາຍວິທີປະກົດວ່າເຮົາບໍ່ສາມາດໃຊ້ຄຳສັ່ງນີ້ໄດ້ອາດຈະເພາະຖືກຕັ້ງຄ່າມາໃຫ້ບໍ່ສາມາດໃຊ້ງານໄດ້
![picoCTF 2024 — Writeup [Lao] — article image 123](/media/full-medium/06331c9ce32f/123-92596a1fdbc40067abe32abb819191fd512f875a9fa0776e8434db88a0350142.png)
ລອງງົມຕໍ່ເຮົາຈະເຫັນວ່າມີຄຳສັ່ງ base64
![picoCTF 2024 — Writeup [Lao] — article image 124](/media/full-medium/06331c9ce32f/124-839e670ee4d499ecc7300178c9620f62e92db35b0da1aebd9348a424a6269654.png)
ລອງໃຊ້ /bin/base64 ເຊິ່ງແທນດ້ວຍ /*/????64 ເພື່ອອ່ານ flag ປະກົດວ່າມັນໄປ execute ອີກຄຳສັ່ງໜຶ່ງແທນ ຫຼື ກໍຄື /bin/x86_64 ທີ່ລົງທ້າຍດ້ວຍ 64 ຄືກັນກັບ base64…
![picoCTF 2024 — Writeup [Lao] — article image 125](/media/full-medium/06331c9ce32f/125-ae34f604f5ca4a6a190b69c91ff2ff06a719009548fc74f14bdff2b89edd76d9.png)
ຫາວິທີ bypass ຫຼື ປະຕິເສດຄຳສັ່ງນັ້ນເພື່ອໃຫ້ລະບົບຫັນມາໃຊ້ /bin/base64 ຕາມທີ່ເຮົາຕ້ອງການ
ແລະ ສຸດທ້າຍເຮົາກໍໄດ້ຄຳສັ່ງທີ່ work:
/???/???[!_]64 ~/*/????.???
ເຊິ່ງ [!_] ໝາຍຄວາມວ່າປະຕິເສດເຄື່ອງໝາຍ _ ຫຼື ກໍຄືລະບົບຈະບໍ່ສັ່ງເຮັດວຽກຄຳສັ່ງທີ່ມີເຄື່ອງໝາຍນີ້ນັ້ນເອງ
![picoCTF 2024 — Writeup [Lao] — article image 126](/media/full-medium/06331c9ce32f/126-5ebccd927a56920bc0bc6a1b83fca740520fd75b79b130bffa31708390897c45.png)
ນຳເອົາ base64 ທີ່ໄດ້ໄປ decode ແລະ ເຮົາກໍຈະໄດ້ flag ມາ
![picoCTF 2024 — Writeup [Lao] — article image 127](/media/full-medium/06331c9ce32f/127-06a9a33c8fa66edaffcb3082a3a9011b1aca2e39d23fa23c2e36c1686f14a5fd.png)
Binary Exploitation
- format string 0 (50 points)
solved by: momiji-
![picoCTF 2024 — Writeup [Lao] — article image 128](/media/full-medium/06331c9ce32f/128-c6e886744df711d615ec9819314589ac6439146fc98f9e705fa3d26699586f63.png)
- heap 0 (50 points)
solved by: Jockky
![picoCTF 2024 — Writeup [Lao] — article image 129](/media/full-medium/06331c9ce32f/129-9934cc67cf9995df4782f4d077dc125d393ea16db84d69193c07b388f341eb98.png)
![picoCTF 2024 — Writeup [Lao] — article image 130](/media/full-medium/06331c9ce32f/130-1d7a1494c392b19b184c2198b123eaba90a9c3cc93eb12e6dfb42d20a6a4f1ca.png)
- format string 1 (100 points)
solved by: momiji-
![picoCTF 2024 — Writeup [Lao] — article image 131](/media/full-medium/06331c9ce32f/131-c3041fd740f0f02b5ff71c8d96a7a033bf3b40ff723dcb4257bf0f3793fed414.png)
- heap 1 (100 points)
solved by: Jockky
![picoCTF 2024 — Writeup [Lao] — article image 132](/media/full-medium/06331c9ce32f/132-757505bfed7f7a8b8042195636d3a0a16fb2811d629da685da75d3bd044a7f71.png)
