├── session.json ├── src ├── i-saw-a-little-elf │ ├── hook.c │ ├── makefile │ └── solve.js ├── ask-your-grandpa │ ├── data │ │ ├── card.jpg │ │ └── reference.jpg │ ├── readme.md │ ├── util │ │ ├── map.html │ │ └── visualize.js │ ├── solve.html │ └── render.js ├── read-me-if-you-can │ ├── get-training-data.sh │ ├── data │ │ ├── captcha-05727d4b-0f68-4852-ba7a-9acffd6c80fa.png │ │ ├── captcha-05b6bff0-839d-47f3-a1f6-cef804a29b9c.png │ │ ├── captcha-069a0b8c-cef9-4259-ac51-9e15f58e89f7.png │ │ ├── captcha-06a85a5a-cb4f-4c1d-9a49-8434f2d07224.png │ │ ├── captcha-06e621c0-306b-4cdf-9a4e-be1719b98702.png │ │ ├── captcha-093579d6-ca04-4291-8d17-fcc9b93e606b.png │ │ ├── captcha-0e88106a-3302-45ab-9e43-192054d07c5d.png │ │ ├── captcha-0f46758f-00a1-4bc5-bbfb-91d3610b7c08.png │ │ ├── captcha-0f4fb3a0-96f1-4be3-93d0-a9fb428f853c.png │ │ ├── captcha-0f62d835-1df0-49bb-91ac-6d9868573f7e.png │ │ ├── captcha-1163787e-9777-458e-949a-c4a2eb799eb5.png │ │ ├── captcha-11cd8b3d-4827-4586-a022-b04c4f4b21c1.png │ │ ├── captcha-124cac56-dcb2-4af5-9405-caaec83567e8.png │ │ ├── captcha-12c581ca-6698-4b7c-9619-5b64d95a6ce3.png │ │ ├── captcha-14c7b309-6257-4e9a-a568-791ee0f1a1fe.png │ │ ├── captcha-14ca9618-ce10-44f8-8714-4bf8824ad91e.png │ │ ├── captcha-172dad8a-047b-41e3-959a-6fb348c6a9b1.png │ │ ├── captcha-18617ed0-76d7-42d7-939c-76de18016d38.png │ │ ├── captcha-18bbac5a-c262-4758-b26b-6c2b3011d184.png │ │ ├── captcha-19c0e564-6e51-4f73-923f-84f03bf26776.png │ │ ├── captcha-19c94ccc-4736-4aab-b607-d19f33102a2b.png │ │ ├── captcha-19ef1467-7b8d-4073-af74-788bc9211fdb.png │ │ ├── captcha-1b691352-d241-4876-9170-9e5095df9a21.png │ │ ├── captcha-1d9c43e5-c531-4eec-a376-ecd4b2130782.png │ │ ├── captcha-20b030f2-dda5-4665-8cd8-dfc37b072306.png │ │ ├── captcha-217918eb-15a5-46f1-b3ab-fe0b629d9d82.png │ │ ├── captcha-240940a3-ddcd-4f62-9244-a978a3027e0d.png │ │ ├── captcha-25db0e78-cb4e-488f-8fbe-688844a96749.png │ │ ├── captcha-25ea7737-a555-4112-bdbd-732bc9ef3531.png │ │ ├── captcha-26c54e9d-5e91-4c2c-9d3b-f7444daeeb68.png │ │ ├── captcha-271d2f99-a77f-48c6-a896-ea87b32b3b12.png │ │ ├── captcha-272a6147-2ac5-402d-a7c4-ab991cf4bd6a.png │ │ ├── captcha-27cc71a2-3736-40d3-8c2c-704fd2484d30.png │ │ ├── captcha-289738bb-5373-4f29-8e99-ea24cddd5500.png │ │ ├── captcha-28d1c1b0-6356-4bdd-943b-41970b8bf467.png │ │ ├── captcha-2b6d14af-e427-486e-8c9c-fb52a1465c32.png │ │ ├── captcha-2b8f65ac-71b3-4f3e-baed-5b7183db56ad.png │ │ ├── captcha-305b2ee1-1210-4dbd-9f8e-56ecaebdae6a.png │ │ ├── captcha-3193cca8-d874-4684-a575-aa4b4715e78d.png │ │ ├── captcha-32b3580f-2da5-425d-ba10-5137b5a47d38.png │ │ ├── captcha-33497a67-02f6-44b8-a89b-1de776dd2631.png │ │ ├── captcha-37559c87-dc3c-4fce-a53c-1cb487ea3987.png │ │ ├── captcha-37b90df2-ac24-4945-8b7d-f82dea684318.png │ │ ├── captcha-3914fe47-d497-46b6-88d4-3f0f80dfb0d9.png │ │ ├── captcha-3a35039b-62cf-4237-9e7f-786804116c7e.png │ │ ├── captcha-3bae75b1-91f3-445c-a9c6-2a2ab891581a.png │ │ ├── captcha-3cbfac80-5ae6-4b18-abe7-79c43f177754.png │ │ ├── captcha-3d6fc3e0-4dbc-4a11-a39d-3d5fee012f4b.png │ │ ├── captcha-3df7c5e8-7385-452e-aec3-a557617e7ce9.png │ │ ├── captcha-3f80419c-c76c-4236-868d-7925f9f81e88.png │ │ ├── captcha-3feb18fe-eade-4a90-8e73-ce1e6c0707a1.png │ │ ├── captcha-422fd1b9-85b1-475b-a15c-22d6bfab8bcb.png │ │ ├── captcha-432682f6-a483-4bdb-9e62-dd08e3326a3e.png │ │ ├── captcha-43b9d935-ab32-4906-9579-351f6ba561aa.png │ │ ├── captcha-444870c4-5132-47ea-9c12-c116bf928aaf.png │ │ ├── captcha-4a659ea1-448b-4c02-824c-503ba7356e09.png │ │ ├── captcha-4d7dea3b-8e44-4f49-9191-aa3b088380bd.png │ │ ├── captcha-4dd26d5b-f01a-4a52-bef5-0f90380977d0.png │ │ ├── captcha-4dd7829b-0afb-43fb-ac92-dc3b2938f067.png │ │ ├── captcha-4e22c9c0-5b18-4155-b774-1d75e98a0370.png │ │ ├── captcha-4e349882-8919-4ba9-b11e-edac103bb0a2.png │ │ ├── captcha-4ecb6664-3361-4ec1-a97c-9511a42dc013.png │ │ ├── captcha-50cf8fbe-4477-4bd0-8e0d-28e98007f29a.png │ │ ├── captcha-51bfdef8-e370-4695-93a2-c3a0a548beb8.png │ │ ├── captcha-53b4974d-7894-47e4-a947-964bfb959247.png │ │ ├── captcha-54decd4a-4d2c-4d25-ba67-e26b502e96bd.png │ │ ├── captcha-562e6e1d-ba5b-49f8-82d5-e9e7c5a7e46c.png │ │ ├── captcha-572622c3-4799-4173-9db5-4411e3468601.png │ │ ├── captcha-585e44b2-a18d-45e0-ad11-257458c05285.png │ │ ├── captcha-58fcd7c6-c495-4ed2-a782-6d110b2ebb52.png │ │ ├── captcha-5c3e7515-b10a-4cd8-abc0-e7617b5964d6.png │ │ ├── captcha-5c5344b8-7925-4044-940d-12c15341af09.png │ │ ├── captcha-5d5a45e8-32b5-4985-9d7f-b36b56bf5e13.png │ │ ├── captcha-5e88c30c-b28c-4ee7-b65d-28ee5fd86547.png │ │ ├── captcha-5eba127c-aad0-47b6-b12e-e70d46dfaa37.png │ │ ├── captcha-6179817d-d455-4b6f-b32b-914309ec20cb.png │ │ ├── captcha-63f5ec14-f0aa-4662-a1e2-f325761ef708.png │ │ ├── captcha-6766df57-6c80-4d14-9a5b-4c9522d12c0f.png │ │ ├── captcha-67983044-b8f3-4fe4-96ec-1a43a7dd89cb.png │ │ ├── captcha-6900762d-4e79-44ea-8072-4f6dd06db099.png │ │ ├── captcha-69574a5f-09a0-4f67-9d62-367777366392.png │ │ ├── captcha-70005f11-5bd4-46f0-a87c-8b33ac72a81e.png │ │ ├── captcha-7098d821-e7d5-46d2-8472-35b02b86b498.png │ │ ├── captcha-7191254d-d699-4f7b-9338-520d2e8c0bb8.png │ │ ├── captcha-7d4d18a0-d1d7-4095-b283-060a0fad2e6a.png │ │ ├── captcha-7d524b93-8509-4d91-aa84-70191d996784.png │ │ ├── captcha-800457d2-c03f-4c82-9b79-afedf6826102.png │ │ ├── captcha-80320b6f-f29c-47cb-936c-4669963561e6.png │ │ ├── captcha-824c8236-46c1-498a-8e79-e94b21458b04.png │ │ ├── captcha-841153a0-7f1a-487e-befe-f818deaa90b2.png │ │ ├── captcha-85e0ca15-18cf-4bc2-b0e7-d89debde7ab8.png │ │ ├── captcha-86bbeb28-c1d3-4f73-958e-050702306a2f.png │ │ ├── captcha-8829cdc8-73b8-474a-9868-d7ac65b3bb08.png │ │ ├── captcha-945150d4-ad83-41cf-a409-b402ea8efb5c.png │ │ ├── captcha-94c8cff3-71fe-4b97-81fd-1b81c47a579e.png │ │ ├── captcha-958e4ceb-37df-4f37-b8e5-32db5c984259.png │ │ ├── captcha-97682d1a-9679-4a32-86e0-7f92e8140bb5.png │ │ ├── captcha-97b114cc-7b15-42de-9918-6afa34de8841.png │ │ ├── captcha-97b69dd6-496c-45c1-b796-58e932bf4f24.png │ │ ├── captcha-9975db55-ce78-435c-b9e5-01bbfc3a00f9.png │ │ ├── captcha-99891669-a7ea-4e39-b6af-6b203fc382e7.png │ │ ├── captcha-99b3316d-64e0-47a3-9358-761096cc1bb5.png │ │ ├── captcha-99dcdfce-6ebe-4c8e-bf49-fad5c91f39d5.png │ │ ├── captcha-9b0c2251-fd9f-4a89-a71b-508172cf0c46.png │ │ ├── captcha-9b45a5ad-dc40-40db-870d-88ea8b2a5e69.png │ │ ├── captcha-9b45d2c6-2d52-4f79-aef3-cc69d28391b7.png │ │ ├── captcha-9cbb6569-37fa-4273-be78-9fd40fd17ced.png │ │ ├── captcha-9cc2eab1-30ff-416c-992f-45d2735fb5ca.png │ │ ├── captcha-9dbd7c98-b331-4678-a372-f5937d439792.png │ │ ├── captcha-a3e15ce6-396b-47e7-bbc0-72f9f44ee556.png │ │ ├── captcha-a4620acb-a96e-4a43-b439-5d157c5b3174.png │ │ ├── captcha-a513a629-0e0d-4bfe-ab18-bcfd3e7be570.png │ │ ├── captcha-a91d6b56-e7d9-4f1f-8cfb-8e30a8adfc27.png │ │ ├── captcha-aa45ad6e-ead9-4baf-9ad6-e17a0676f169.png │ │ ├── captcha-aae73d69-db4e-4d0d-8e41-b5330049d09f.png │ │ ├── captcha-abc236c2-bb75-4c5c-b561-22b72120cfd3.png │ │ ├── captcha-ad597323-d9de-4b8f-8e61-ecf36c2d39da.png │ │ ├── captcha-ae2dcab7-3410-4390-8c8d-4d2dfeabda07.png │ │ ├── captcha-ae81454f-2d59-4019-9258-a18febd11061.png │ │ ├── captcha-aed717d3-ce0a-4ab1-a1c2-01d25ede5523.png │ │ ├── captcha-afa974f6-2988-4c70-9cc4-7c5620883ad2.png │ │ ├── captcha-afd6978d-f8e3-4243-bc3a-44d9847030d3.png │ │ ├── captcha-b09514a6-67f8-467b-b79c-bad1361566fc.png │ │ ├── captcha-b1002d99-9486-4589-b0f0-640da671d250.png │ │ ├── captcha-b17c5916-05bf-4433-8316-e56f75d35313.png │ │ ├── captcha-b19a66bc-dee1-422f-b3b0-07b8f5702267.png │ │ ├── captcha-b1a0778f-b387-4073-b6e0-250c4d2ef429.png │ │ ├── captcha-b3e5a455-e1f6-4c68-a0e5-14225759cbdb.png │ │ ├── captcha-b418dbd0-91c9-40b7-b2f2-87a39683720c.png │ │ ├── captcha-b6fd077d-9ed8-43bf-92ba-a41763d6d7cc.png │ │ ├── captcha-b9e5cfe5-b4ce-4c27-8726-491bfe37c027.png │ │ ├── captcha-b9fbae0f-16d1-4af5-863c-adfcaad82dcd.png │ │ ├── captcha-bbeb3b91-2d33-43bf-b8f8-a91592fefd96.png │ │ ├── captcha-bbf062ab-dd27-426c-aaec-52aff5abbe29.png │ │ ├── captcha-bc243933-fbd7-4aee-90f0-cf27a54e0c18.png │ │ ├── captcha-bcdda921-d7c0-456c-8154-a4842da34c99.png │ │ ├── captcha-bdc5fae6-95e4-4456-8c08-dfbb1128aab3.png │ │ ├── captcha-c261842e-7acd-49c6-b4b3-16ea59fc7ec3.png │ │ ├── captcha-c39348af-f5a0-499e-9d95-606d10de28b5.png │ │ ├── captcha-c4c969ef-5cb8-4257-97e0-238342124204.png │ │ ├── captcha-c5122008-449b-4f42-b6b7-77e4175adc09.png │ │ ├── captcha-c553dabe-dee8-48d6-a6ca-43b534536912.png │ │ ├── captcha-c63a3f32-ea31-47a3-be85-eb79c560cdf2.png │ │ ├── captcha-c84e0b5c-0ea6-4e49-9347-85741f7c9ad3.png │ │ ├── captcha-c8815063-90e4-4ed8-a40b-5f7f132e6a38.png │ │ ├── captcha-c97a89c9-cfcb-43f8-a53f-bba5e8f0a4da.png │ │ ├── captcha-ca75a46b-45aa-4c1e-b973-a3a0e2b8a1f7.png │ │ ├── captcha-cc29a17f-b4a9-49a6-b10e-036208784fee.png │ │ ├── captcha-cd1091a7-4406-4cec-be5d-aead4e492d39.png │ │ ├── captcha-ceb815ec-c5d2-499d-abaa-f07c5043cc42.png │ │ ├── captcha-d2930cde-7b9a-496a-997e-5fa8d1a5c592.png │ │ ├── captcha-d2df4b9e-2507-4309-9743-e80f6fd405da.png │ │ ├── captcha-d33856ae-931d-4513-b37e-665a1d8c80d8.png │ │ ├── captcha-d3ced05f-53d3-446b-b0ee-65f2725141c5.png │ │ ├── captcha-d50120a2-1b33-45a0-a466-bddb076ed57d.png │ │ ├── captcha-d5b0bf8b-51a1-4a92-b48e-cba35778f096.png │ │ ├── captcha-d7ef65c0-bd3e-4d3b-a675-887840fdf685.png │ │ ├── captcha-db8f9347-4ce1-4e32-8e5c-31782b3c9c88.png │ │ ├── captcha-dc026a0e-bf9d-4f6f-912a-413c43221c2a.png │ │ ├── captcha-dd5b942d-0697-42c9-88fd-c54be62270af.png │ │ ├── captcha-ddff5812-71ab-41e7-821e-2f6a5f3cd3fa.png │ │ ├── captcha-de100ee6-b85c-46f5-9464-91d6ace8642e.png │ │ ├── captcha-dee36b1e-7b86-4a39-b7d9-b17b0d57903f.png │ │ ├── captcha-df4912f2-348a-43d5-9ec8-09e5d2cfb723.png │ │ ├── captcha-df9a8fd9-968b-4e98-8049-14521907bc08.png │ │ ├── captcha-e0afb8f5-e753-4916-8575-8d74d5b5e2ba.png │ │ ├── captcha-e35ef70f-fa12-427e-802f-3bc1ea8a8f8a.png │ │ ├── captcha-e41f16b1-a8ca-4631-88f6-405b5c10c3c0.png │ │ ├── captcha-e4819ee3-0f02-4556-9be2-c4f350619139.png │ │ ├── captcha-e4e2f24e-1741-4485-bd19-df2387bfff1c.png │ │ ├── captcha-e51d17ec-f63f-4fab-bdd2-bbb59feb20c8.png │ │ ├── captcha-e53788fd-a34d-4f90-86e5-b2d16c553fa2.png │ │ ├── captcha-e5b8843b-e152-4908-8506-3113818f8234.png │ │ ├── captcha-e81828ac-d9e3-4c8c-8917-6acaaeb67dd2.png │ │ ├── captcha-ed26d6d9-3e57-43ee-a999-dc2811a517b5.png │ │ ├── captcha-edf92c47-4a03-4f04-ad24-e860647d5ea5.png │ │ ├── captcha-edfc17f6-efb0-4e2f-b1e7-816ba2957f52.png │ │ ├── captcha-ee2bffc5-03cb-443c-afd1-dd1e4fe664db.png │ │ ├── captcha-ef1a8f2b-2d39-4a71-8cd2-5114b97e693b.png │ │ ├── captcha-ef255014-fc67-471f-803f-4990dfb2ec47.png │ │ ├── captcha-f0593f1c-cc11-457e-a595-11550f131849.png │ │ ├── captcha-f3da0c58-0a63-4881-92b5-ff27f06b7eae.png │ │ ├── captcha-f575b25d-0ea2-4e1d-b0e7-9bbdc22df788.png │ │ ├── captcha-f617d21c-2bbb-4b7d-b2b1-f6f8d9688c3b.png │ │ ├── captcha-f64167b4-390c-420b-a40c-4deb78bf9c1d.png │ │ ├── captcha-f6b0b6e8-b97a-4acf-bee6-81bee156c5fe.png │ │ ├── captcha-f85a772a-f4ee-4889-82d4-d22a6d2c96e4.png │ │ ├── captcha-f905697b-b3f6-44d0-862c-74b783d4fb16.png │ │ ├── captcha-fbed03b3-0920-4ebb-8858-4d5021f391e4.png │ │ ├── captcha-fdca5d30-f48a-4516-835e-138414850e73.png │ │ ├── captcha-fe075adf-e04c-46e8-9781-bd9bdc4ea923.png │ │ ├── captcha-ff347175-861c-4d17-9db2-f3f33d13ea69.png │ │ ├── captcha-05727d4b-0f68-4852-ba7a-9acffd6c80fa.txt │ │ ├── captcha-05b6bff0-839d-47f3-a1f6-cef804a29b9c.txt │ │ ├── captcha-069a0b8c-cef9-4259-ac51-9e15f58e89f7.txt │ │ ├── captcha-06a85a5a-cb4f-4c1d-9a49-8434f2d07224.txt │ │ ├── captcha-06e621c0-306b-4cdf-9a4e-be1719b98702.txt │ │ ├── captcha-093579d6-ca04-4291-8d17-fcc9b93e606b.txt │ │ ├── captcha-0e88106a-3302-45ab-9e43-192054d07c5d.txt │ │ └── captcha-0f46758f-00a1-4bc5-bbfb-91d3610b7c08.txt │ ├── config.json │ ├── lib │ │ ├── get-captcha.js │ │ ├── to-ascii.js │ │ └── segment.js │ ├── solve.js │ ├── get-training-data.js │ ├── classify.js │ └── symbols.json ├── ask-your-grandpa-again │ ├── data │ │ ├── card-a.jpg │ │ ├── card-b.jpg │ │ ├── card-c.jpg │ │ ├── card-d.jpg │ │ ├── card-e.jpg │ │ ├── card-f.jpg │ │ └── reference.jpg │ ├── makefile │ ├── notes.md │ ├── decode.html │ ├── readme.md │ ├── util │ │ ├── map.html │ │ └── visualize.js │ ├── solve.f │ └── render.js ├── classic-sudoku │ ├── config.json │ ├── solve.js │ └── readme.md ├── hash-breaker-reloaded-again │ ├── make-buckets.sh │ ├── readme.md │ ├── solve.js │ └── make-buckets.py ├── number-game │ ├── config.json │ ├── readme.md │ └── solve.js ├── execute-me-if-you-can │ ├── makefile │ ├── solve.js │ ├── exec.c │ └── readme.md ├── execute-me-if-you-can-again │ ├── makefile │ ├── exec.c │ ├── solve.js │ ├── readme.md │ └── notes.md ├── hash-me-please │ ├── solve.js │ └── readme.md ├── hash-breaker │ ├── readme.md │ └── solve.js ├── i-hate-mathematics │ ├── readme.md │ └── solve.js ├── find-the-right-word │ ├── readme.md │ ├── make-dictionary.js │ └── solve.js ├── hash-breaker-reloaded │ ├── readme.md │ └── solve.js ├── hash-me-reloaded │ ├── solve.js │ └── readme.md ├── ascii-art │ ├── digits.json │ ├── readme.md │ └── solve.js └── xor-me-if-you-can │ ├── readme.md │ └── solve.js ├── .gitignore ├── package.json ├── lib └── solve.js └── readme.md /session.json: -------------------------------------------------------------------------------- 1 | "PHPSESSID=" 2 | -------------------------------------------------------------------------------- /src/i-saw-a-little-elf/hook.c: -------------------------------------------------------------------------------- 1 | unsigned sleep(unsigned n) {return 0;} 2 | -------------------------------------------------------------------------------- /src/ask-your-grandpa/data/card.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/ask-your-grandpa/data/card.jpg -------------------------------------------------------------------------------- /src/read-me-if-you-can/get-training-data.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | [ -d data ] || mkdir data 4 | node ./get-training-data.js ${1:-192} 5 | -------------------------------------------------------------------------------- /src/ask-your-grandpa/data/reference.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/ask-your-grandpa/data/reference.jpg -------------------------------------------------------------------------------- /src/ask-your-grandpa-again/data/card-a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/ask-your-grandpa-again/data/card-a.jpg -------------------------------------------------------------------------------- /src/ask-your-grandpa-again/data/card-b.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/ask-your-grandpa-again/data/card-b.jpg -------------------------------------------------------------------------------- /src/ask-your-grandpa-again/data/card-c.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/ask-your-grandpa-again/data/card-c.jpg -------------------------------------------------------------------------------- /src/ask-your-grandpa-again/data/card-d.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/ask-your-grandpa-again/data/card-d.jpg -------------------------------------------------------------------------------- /src/ask-your-grandpa-again/data/card-e.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/ask-your-grandpa-again/data/card-e.jpg -------------------------------------------------------------------------------- /src/ask-your-grandpa-again/data/card-f.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/ask-your-grandpa-again/data/card-f.jpg -------------------------------------------------------------------------------- /src/ask-your-grandpa-again/data/reference.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/ask-your-grandpa-again/data/reference.jpg -------------------------------------------------------------------------------- /src/i-saw-a-little-elf/makefile: -------------------------------------------------------------------------------- 1 | TARGET = hook 2 | 3 | all: 4 | gcc -shared -fPIC $(TARGET).c -o $(TARGET).so 5 | 6 | clean: 7 | $(RM) $(TARGET).so 8 | -------------------------------------------------------------------------------- /src/classic-sudoku/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "host": "ringzer0team.com", 3 | "port": 12643, 4 | 5 | "username": "sudoku", 6 | "password": "dg43zz6R0E" 7 | } 8 | -------------------------------------------------------------------------------- /src/hash-breaker-reloaded-again/make-buckets.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | [ -d buckets ] || mkdir buckets 4 | sudo sh -c "ulimit -n 99999 && python ./make-buckets.py" 5 | -------------------------------------------------------------------------------- /src/number-game/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "host": "ringzer0team.com", 3 | "port": 12643, 4 | 5 | "username": "number", 6 | "password": "Z7IwIMRC2dc764L" 7 | } 8 | -------------------------------------------------------------------------------- /src/ask-your-grandpa-again/makefile: -------------------------------------------------------------------------------- 1 | TARGET = solve 2 | 3 | all: 4 | gfortran -std=legacy $(TARGET).f -o $(TARGET).out 5 | 6 | clean: 7 | $(RM) $(TARGET).out 8 | -------------------------------------------------------------------------------- /src/execute-me-if-you-can/makefile: -------------------------------------------------------------------------------- 1 | TARGET = exec 2 | 3 | all: 4 | gcc -std=c99 -Wall -Wextra -z execstack $(TARGET).c -o $(TARGET).out 5 | 6 | clean: 7 | $(RM) $(TARGET).out 8 | -------------------------------------------------------------------------------- /src/execute-me-if-you-can-again/makefile: -------------------------------------------------------------------------------- 1 | TARGET = exec 2 | 3 | all: 4 | gcc -std=c99 -Wall -Wextra -z execstack $(TARGET).c -o $(TARGET).out 5 | 6 | clean: 7 | $(RM) $(TARGET).out 8 | -------------------------------------------------------------------------------- /src/ask-your-grandpa/readme.md: -------------------------------------------------------------------------------- 1 | Ask Your Grandpa 2 | ---------------- 3 | 4 | A static image of a punch card with no description is provided in challenge 172. 5 | 6 | ![Punch Card](./data/card.jpg) 7 | -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-05727d4b-0f68-4852-ba7a-9acffd6c80fa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-05727d4b-0f68-4852-ba7a-9acffd6c80fa.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-05b6bff0-839d-47f3-a1f6-cef804a29b9c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-05b6bff0-839d-47f3-a1f6-cef804a29b9c.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-069a0b8c-cef9-4259-ac51-9e15f58e89f7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-069a0b8c-cef9-4259-ac51-9e15f58e89f7.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-06a85a5a-cb4f-4c1d-9a49-8434f2d07224.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-06a85a5a-cb4f-4c1d-9a49-8434f2d07224.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-06e621c0-306b-4cdf-9a4e-be1719b98702.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-06e621c0-306b-4cdf-9a4e-be1719b98702.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-093579d6-ca04-4291-8d17-fcc9b93e606b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-093579d6-ca04-4291-8d17-fcc9b93e606b.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-0e88106a-3302-45ab-9e43-192054d07c5d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-0e88106a-3302-45ab-9e43-192054d07c5d.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-0f46758f-00a1-4bc5-bbfb-91d3610b7c08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-0f46758f-00a1-4bc5-bbfb-91d3610b7c08.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-0f4fb3a0-96f1-4be3-93d0-a9fb428f853c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-0f4fb3a0-96f1-4be3-93d0-a9fb428f853c.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-0f62d835-1df0-49bb-91ac-6d9868573f7e.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-0f62d835-1df0-49bb-91ac-6d9868573f7e.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-1163787e-9777-458e-949a-c4a2eb799eb5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-1163787e-9777-458e-949a-c4a2eb799eb5.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-11cd8b3d-4827-4586-a022-b04c4f4b21c1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-11cd8b3d-4827-4586-a022-b04c4f4b21c1.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-124cac56-dcb2-4af5-9405-caaec83567e8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-124cac56-dcb2-4af5-9405-caaec83567e8.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-12c581ca-6698-4b7c-9619-5b64d95a6ce3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-12c581ca-6698-4b7c-9619-5b64d95a6ce3.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-14c7b309-6257-4e9a-a568-791ee0f1a1fe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-14c7b309-6257-4e9a-a568-791ee0f1a1fe.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-14ca9618-ce10-44f8-8714-4bf8824ad91e.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-14ca9618-ce10-44f8-8714-4bf8824ad91e.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-172dad8a-047b-41e3-959a-6fb348c6a9b1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-172dad8a-047b-41e3-959a-6fb348c6a9b1.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-18617ed0-76d7-42d7-939c-76de18016d38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-18617ed0-76d7-42d7-939c-76de18016d38.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-18bbac5a-c262-4758-b26b-6c2b3011d184.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-18bbac5a-c262-4758-b26b-6c2b3011d184.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-19c0e564-6e51-4f73-923f-84f03bf26776.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-19c0e564-6e51-4f73-923f-84f03bf26776.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-19c94ccc-4736-4aab-b607-d19f33102a2b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-19c94ccc-4736-4aab-b607-d19f33102a2b.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-19ef1467-7b8d-4073-af74-788bc9211fdb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-19ef1467-7b8d-4073-af74-788bc9211fdb.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-1b691352-d241-4876-9170-9e5095df9a21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-1b691352-d241-4876-9170-9e5095df9a21.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-1d9c43e5-c531-4eec-a376-ecd4b2130782.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-1d9c43e5-c531-4eec-a376-ecd4b2130782.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-20b030f2-dda5-4665-8cd8-dfc37b072306.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-20b030f2-dda5-4665-8cd8-dfc37b072306.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-217918eb-15a5-46f1-b3ab-fe0b629d9d82.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-217918eb-15a5-46f1-b3ab-fe0b629d9d82.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-240940a3-ddcd-4f62-9244-a978a3027e0d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-240940a3-ddcd-4f62-9244-a978a3027e0d.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-25db0e78-cb4e-488f-8fbe-688844a96749.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-25db0e78-cb4e-488f-8fbe-688844a96749.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-25ea7737-a555-4112-bdbd-732bc9ef3531.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-25ea7737-a555-4112-bdbd-732bc9ef3531.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-26c54e9d-5e91-4c2c-9d3b-f7444daeeb68.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-26c54e9d-5e91-4c2c-9d3b-f7444daeeb68.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-271d2f99-a77f-48c6-a896-ea87b32b3b12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-271d2f99-a77f-48c6-a896-ea87b32b3b12.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-272a6147-2ac5-402d-a7c4-ab991cf4bd6a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-272a6147-2ac5-402d-a7c4-ab991cf4bd6a.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-27cc71a2-3736-40d3-8c2c-704fd2484d30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-27cc71a2-3736-40d3-8c2c-704fd2484d30.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-289738bb-5373-4f29-8e99-ea24cddd5500.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-289738bb-5373-4f29-8e99-ea24cddd5500.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-28d1c1b0-6356-4bdd-943b-41970b8bf467.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-28d1c1b0-6356-4bdd-943b-41970b8bf467.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-2b6d14af-e427-486e-8c9c-fb52a1465c32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-2b6d14af-e427-486e-8c9c-fb52a1465c32.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-2b8f65ac-71b3-4f3e-baed-5b7183db56ad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-2b8f65ac-71b3-4f3e-baed-5b7183db56ad.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-305b2ee1-1210-4dbd-9f8e-56ecaebdae6a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-305b2ee1-1210-4dbd-9f8e-56ecaebdae6a.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-3193cca8-d874-4684-a575-aa4b4715e78d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-3193cca8-d874-4684-a575-aa4b4715e78d.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-32b3580f-2da5-425d-ba10-5137b5a47d38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-32b3580f-2da5-425d-ba10-5137b5a47d38.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-33497a67-02f6-44b8-a89b-1de776dd2631.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-33497a67-02f6-44b8-a89b-1de776dd2631.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-37559c87-dc3c-4fce-a53c-1cb487ea3987.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-37559c87-dc3c-4fce-a53c-1cb487ea3987.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-37b90df2-ac24-4945-8b7d-f82dea684318.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-37b90df2-ac24-4945-8b7d-f82dea684318.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-3914fe47-d497-46b6-88d4-3f0f80dfb0d9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-3914fe47-d497-46b6-88d4-3f0f80dfb0d9.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-3a35039b-62cf-4237-9e7f-786804116c7e.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-3a35039b-62cf-4237-9e7f-786804116c7e.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-3bae75b1-91f3-445c-a9c6-2a2ab891581a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-3bae75b1-91f3-445c-a9c6-2a2ab891581a.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-3cbfac80-5ae6-4b18-abe7-79c43f177754.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-3cbfac80-5ae6-4b18-abe7-79c43f177754.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-3d6fc3e0-4dbc-4a11-a39d-3d5fee012f4b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-3d6fc3e0-4dbc-4a11-a39d-3d5fee012f4b.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-3df7c5e8-7385-452e-aec3-a557617e7ce9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-3df7c5e8-7385-452e-aec3-a557617e7ce9.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-3f80419c-c76c-4236-868d-7925f9f81e88.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-3f80419c-c76c-4236-868d-7925f9f81e88.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-3feb18fe-eade-4a90-8e73-ce1e6c0707a1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-3feb18fe-eade-4a90-8e73-ce1e6c0707a1.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-422fd1b9-85b1-475b-a15c-22d6bfab8bcb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-422fd1b9-85b1-475b-a15c-22d6bfab8bcb.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-432682f6-a483-4bdb-9e62-dd08e3326a3e.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-432682f6-a483-4bdb-9e62-dd08e3326a3e.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-43b9d935-ab32-4906-9579-351f6ba561aa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-43b9d935-ab32-4906-9579-351f6ba561aa.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-444870c4-5132-47ea-9c12-c116bf928aaf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-444870c4-5132-47ea-9c12-c116bf928aaf.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-4a659ea1-448b-4c02-824c-503ba7356e09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-4a659ea1-448b-4c02-824c-503ba7356e09.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-4d7dea3b-8e44-4f49-9191-aa3b088380bd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-4d7dea3b-8e44-4f49-9191-aa3b088380bd.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-4dd26d5b-f01a-4a52-bef5-0f90380977d0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-4dd26d5b-f01a-4a52-bef5-0f90380977d0.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-4dd7829b-0afb-43fb-ac92-dc3b2938f067.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-4dd7829b-0afb-43fb-ac92-dc3b2938f067.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-4e22c9c0-5b18-4155-b774-1d75e98a0370.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-4e22c9c0-5b18-4155-b774-1d75e98a0370.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-4e349882-8919-4ba9-b11e-edac103bb0a2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-4e349882-8919-4ba9-b11e-edac103bb0a2.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-4ecb6664-3361-4ec1-a97c-9511a42dc013.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-4ecb6664-3361-4ec1-a97c-9511a42dc013.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-50cf8fbe-4477-4bd0-8e0d-28e98007f29a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-50cf8fbe-4477-4bd0-8e0d-28e98007f29a.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-51bfdef8-e370-4695-93a2-c3a0a548beb8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-51bfdef8-e370-4695-93a2-c3a0a548beb8.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-53b4974d-7894-47e4-a947-964bfb959247.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-53b4974d-7894-47e4-a947-964bfb959247.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-54decd4a-4d2c-4d25-ba67-e26b502e96bd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-54decd4a-4d2c-4d25-ba67-e26b502e96bd.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-562e6e1d-ba5b-49f8-82d5-e9e7c5a7e46c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-562e6e1d-ba5b-49f8-82d5-e9e7c5a7e46c.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-572622c3-4799-4173-9db5-4411e3468601.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-572622c3-4799-4173-9db5-4411e3468601.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-585e44b2-a18d-45e0-ad11-257458c05285.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-585e44b2-a18d-45e0-ad11-257458c05285.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-58fcd7c6-c495-4ed2-a782-6d110b2ebb52.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-58fcd7c6-c495-4ed2-a782-6d110b2ebb52.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-5c3e7515-b10a-4cd8-abc0-e7617b5964d6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-5c3e7515-b10a-4cd8-abc0-e7617b5964d6.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-5c5344b8-7925-4044-940d-12c15341af09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-5c5344b8-7925-4044-940d-12c15341af09.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-5d5a45e8-32b5-4985-9d7f-b36b56bf5e13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-5d5a45e8-32b5-4985-9d7f-b36b56bf5e13.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-5e88c30c-b28c-4ee7-b65d-28ee5fd86547.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-5e88c30c-b28c-4ee7-b65d-28ee5fd86547.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-5eba127c-aad0-47b6-b12e-e70d46dfaa37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-5eba127c-aad0-47b6-b12e-e70d46dfaa37.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-6179817d-d455-4b6f-b32b-914309ec20cb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-6179817d-d455-4b6f-b32b-914309ec20cb.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-63f5ec14-f0aa-4662-a1e2-f325761ef708.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-63f5ec14-f0aa-4662-a1e2-f325761ef708.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-6766df57-6c80-4d14-9a5b-4c9522d12c0f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-6766df57-6c80-4d14-9a5b-4c9522d12c0f.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-67983044-b8f3-4fe4-96ec-1a43a7dd89cb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-67983044-b8f3-4fe4-96ec-1a43a7dd89cb.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-6900762d-4e79-44ea-8072-4f6dd06db099.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-6900762d-4e79-44ea-8072-4f6dd06db099.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-69574a5f-09a0-4f67-9d62-367777366392.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-69574a5f-09a0-4f67-9d62-367777366392.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-70005f11-5bd4-46f0-a87c-8b33ac72a81e.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-70005f11-5bd4-46f0-a87c-8b33ac72a81e.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-7098d821-e7d5-46d2-8472-35b02b86b498.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-7098d821-e7d5-46d2-8472-35b02b86b498.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-7191254d-d699-4f7b-9338-520d2e8c0bb8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-7191254d-d699-4f7b-9338-520d2e8c0bb8.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-7d4d18a0-d1d7-4095-b283-060a0fad2e6a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-7d4d18a0-d1d7-4095-b283-060a0fad2e6a.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-7d524b93-8509-4d91-aa84-70191d996784.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-7d524b93-8509-4d91-aa84-70191d996784.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-800457d2-c03f-4c82-9b79-afedf6826102.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-800457d2-c03f-4c82-9b79-afedf6826102.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-80320b6f-f29c-47cb-936c-4669963561e6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-80320b6f-f29c-47cb-936c-4669963561e6.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-824c8236-46c1-498a-8e79-e94b21458b04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-824c8236-46c1-498a-8e79-e94b21458b04.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-841153a0-7f1a-487e-befe-f818deaa90b2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-841153a0-7f1a-487e-befe-f818deaa90b2.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-85e0ca15-18cf-4bc2-b0e7-d89debde7ab8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-85e0ca15-18cf-4bc2-b0e7-d89debde7ab8.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-86bbeb28-c1d3-4f73-958e-050702306a2f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-86bbeb28-c1d3-4f73-958e-050702306a2f.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-8829cdc8-73b8-474a-9868-d7ac65b3bb08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-8829cdc8-73b8-474a-9868-d7ac65b3bb08.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-945150d4-ad83-41cf-a409-b402ea8efb5c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-945150d4-ad83-41cf-a409-b402ea8efb5c.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-94c8cff3-71fe-4b97-81fd-1b81c47a579e.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-94c8cff3-71fe-4b97-81fd-1b81c47a579e.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-958e4ceb-37df-4f37-b8e5-32db5c984259.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-958e4ceb-37df-4f37-b8e5-32db5c984259.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-97682d1a-9679-4a32-86e0-7f92e8140bb5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-97682d1a-9679-4a32-86e0-7f92e8140bb5.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-97b114cc-7b15-42de-9918-6afa34de8841.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-97b114cc-7b15-42de-9918-6afa34de8841.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-97b69dd6-496c-45c1-b796-58e932bf4f24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-97b69dd6-496c-45c1-b796-58e932bf4f24.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-9975db55-ce78-435c-b9e5-01bbfc3a00f9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-9975db55-ce78-435c-b9e5-01bbfc3a00f9.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-99891669-a7ea-4e39-b6af-6b203fc382e7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-99891669-a7ea-4e39-b6af-6b203fc382e7.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-99b3316d-64e0-47a3-9358-761096cc1bb5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-99b3316d-64e0-47a3-9358-761096cc1bb5.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-99dcdfce-6ebe-4c8e-bf49-fad5c91f39d5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-99dcdfce-6ebe-4c8e-bf49-fad5c91f39d5.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-9b0c2251-fd9f-4a89-a71b-508172cf0c46.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-9b0c2251-fd9f-4a89-a71b-508172cf0c46.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-9b45a5ad-dc40-40db-870d-88ea8b2a5e69.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-9b45a5ad-dc40-40db-870d-88ea8b2a5e69.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-9b45d2c6-2d52-4f79-aef3-cc69d28391b7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-9b45d2c6-2d52-4f79-aef3-cc69d28391b7.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-9cbb6569-37fa-4273-be78-9fd40fd17ced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-9cbb6569-37fa-4273-be78-9fd40fd17ced.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-9cc2eab1-30ff-416c-992f-45d2735fb5ca.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-9cc2eab1-30ff-416c-992f-45d2735fb5ca.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-9dbd7c98-b331-4678-a372-f5937d439792.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-9dbd7c98-b331-4678-a372-f5937d439792.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-a3e15ce6-396b-47e7-bbc0-72f9f44ee556.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-a3e15ce6-396b-47e7-bbc0-72f9f44ee556.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-a4620acb-a96e-4a43-b439-5d157c5b3174.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-a4620acb-a96e-4a43-b439-5d157c5b3174.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-a513a629-0e0d-4bfe-ab18-bcfd3e7be570.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-a513a629-0e0d-4bfe-ab18-bcfd3e7be570.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-a91d6b56-e7d9-4f1f-8cfb-8e30a8adfc27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-a91d6b56-e7d9-4f1f-8cfb-8e30a8adfc27.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-aa45ad6e-ead9-4baf-9ad6-e17a0676f169.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-aa45ad6e-ead9-4baf-9ad6-e17a0676f169.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-aae73d69-db4e-4d0d-8e41-b5330049d09f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-aae73d69-db4e-4d0d-8e41-b5330049d09f.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-abc236c2-bb75-4c5c-b561-22b72120cfd3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-abc236c2-bb75-4c5c-b561-22b72120cfd3.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-ad597323-d9de-4b8f-8e61-ecf36c2d39da.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-ad597323-d9de-4b8f-8e61-ecf36c2d39da.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-ae2dcab7-3410-4390-8c8d-4d2dfeabda07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-ae2dcab7-3410-4390-8c8d-4d2dfeabda07.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-ae81454f-2d59-4019-9258-a18febd11061.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-ae81454f-2d59-4019-9258-a18febd11061.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-aed717d3-ce0a-4ab1-a1c2-01d25ede5523.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-aed717d3-ce0a-4ab1-a1c2-01d25ede5523.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-afa974f6-2988-4c70-9cc4-7c5620883ad2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-afa974f6-2988-4c70-9cc4-7c5620883ad2.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-afd6978d-f8e3-4243-bc3a-44d9847030d3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-afd6978d-f8e3-4243-bc3a-44d9847030d3.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-b09514a6-67f8-467b-b79c-bad1361566fc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-b09514a6-67f8-467b-b79c-bad1361566fc.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-b1002d99-9486-4589-b0f0-640da671d250.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-b1002d99-9486-4589-b0f0-640da671d250.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-b17c5916-05bf-4433-8316-e56f75d35313.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-b17c5916-05bf-4433-8316-e56f75d35313.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-b19a66bc-dee1-422f-b3b0-07b8f5702267.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-b19a66bc-dee1-422f-b3b0-07b8f5702267.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-b1a0778f-b387-4073-b6e0-250c4d2ef429.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-b1a0778f-b387-4073-b6e0-250c4d2ef429.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-b3e5a455-e1f6-4c68-a0e5-14225759cbdb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-b3e5a455-e1f6-4c68-a0e5-14225759cbdb.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-b418dbd0-91c9-40b7-b2f2-87a39683720c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-b418dbd0-91c9-40b7-b2f2-87a39683720c.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-b6fd077d-9ed8-43bf-92ba-a41763d6d7cc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-b6fd077d-9ed8-43bf-92ba-a41763d6d7cc.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-b9e5cfe5-b4ce-4c27-8726-491bfe37c027.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-b9e5cfe5-b4ce-4c27-8726-491bfe37c027.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-b9fbae0f-16d1-4af5-863c-adfcaad82dcd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-b9fbae0f-16d1-4af5-863c-adfcaad82dcd.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-bbeb3b91-2d33-43bf-b8f8-a91592fefd96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-bbeb3b91-2d33-43bf-b8f8-a91592fefd96.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-bbf062ab-dd27-426c-aaec-52aff5abbe29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-bbf062ab-dd27-426c-aaec-52aff5abbe29.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-bc243933-fbd7-4aee-90f0-cf27a54e0c18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-bc243933-fbd7-4aee-90f0-cf27a54e0c18.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-bcdda921-d7c0-456c-8154-a4842da34c99.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-bcdda921-d7c0-456c-8154-a4842da34c99.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-bdc5fae6-95e4-4456-8c08-dfbb1128aab3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-bdc5fae6-95e4-4456-8c08-dfbb1128aab3.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-c261842e-7acd-49c6-b4b3-16ea59fc7ec3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-c261842e-7acd-49c6-b4b3-16ea59fc7ec3.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-c39348af-f5a0-499e-9d95-606d10de28b5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-c39348af-f5a0-499e-9d95-606d10de28b5.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-c4c969ef-5cb8-4257-97e0-238342124204.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-c4c969ef-5cb8-4257-97e0-238342124204.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-c5122008-449b-4f42-b6b7-77e4175adc09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-c5122008-449b-4f42-b6b7-77e4175adc09.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-c553dabe-dee8-48d6-a6ca-43b534536912.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-c553dabe-dee8-48d6-a6ca-43b534536912.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-c63a3f32-ea31-47a3-be85-eb79c560cdf2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-c63a3f32-ea31-47a3-be85-eb79c560cdf2.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-c84e0b5c-0ea6-4e49-9347-85741f7c9ad3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-c84e0b5c-0ea6-4e49-9347-85741f7c9ad3.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-c8815063-90e4-4ed8-a40b-5f7f132e6a38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-c8815063-90e4-4ed8-a40b-5f7f132e6a38.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-c97a89c9-cfcb-43f8-a53f-bba5e8f0a4da.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-c97a89c9-cfcb-43f8-a53f-bba5e8f0a4da.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-ca75a46b-45aa-4c1e-b973-a3a0e2b8a1f7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-ca75a46b-45aa-4c1e-b973-a3a0e2b8a1f7.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-cc29a17f-b4a9-49a6-b10e-036208784fee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-cc29a17f-b4a9-49a6-b10e-036208784fee.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-cd1091a7-4406-4cec-be5d-aead4e492d39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-cd1091a7-4406-4cec-be5d-aead4e492d39.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-ceb815ec-c5d2-499d-abaa-f07c5043cc42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-ceb815ec-c5d2-499d-abaa-f07c5043cc42.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-d2930cde-7b9a-496a-997e-5fa8d1a5c592.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-d2930cde-7b9a-496a-997e-5fa8d1a5c592.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-d2df4b9e-2507-4309-9743-e80f6fd405da.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-d2df4b9e-2507-4309-9743-e80f6fd405da.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-d33856ae-931d-4513-b37e-665a1d8c80d8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-d33856ae-931d-4513-b37e-665a1d8c80d8.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-d3ced05f-53d3-446b-b0ee-65f2725141c5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-d3ced05f-53d3-446b-b0ee-65f2725141c5.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-d50120a2-1b33-45a0-a466-bddb076ed57d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-d50120a2-1b33-45a0-a466-bddb076ed57d.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-d5b0bf8b-51a1-4a92-b48e-cba35778f096.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-d5b0bf8b-51a1-4a92-b48e-cba35778f096.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-d7ef65c0-bd3e-4d3b-a675-887840fdf685.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-d7ef65c0-bd3e-4d3b-a675-887840fdf685.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-db8f9347-4ce1-4e32-8e5c-31782b3c9c88.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-db8f9347-4ce1-4e32-8e5c-31782b3c9c88.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-dc026a0e-bf9d-4f6f-912a-413c43221c2a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-dc026a0e-bf9d-4f6f-912a-413c43221c2a.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-dd5b942d-0697-42c9-88fd-c54be62270af.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-dd5b942d-0697-42c9-88fd-c54be62270af.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-ddff5812-71ab-41e7-821e-2f6a5f3cd3fa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-ddff5812-71ab-41e7-821e-2f6a5f3cd3fa.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-de100ee6-b85c-46f5-9464-91d6ace8642e.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-de100ee6-b85c-46f5-9464-91d6ace8642e.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-dee36b1e-7b86-4a39-b7d9-b17b0d57903f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-dee36b1e-7b86-4a39-b7d9-b17b0d57903f.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-df4912f2-348a-43d5-9ec8-09e5d2cfb723.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-df4912f2-348a-43d5-9ec8-09e5d2cfb723.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-df9a8fd9-968b-4e98-8049-14521907bc08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-df9a8fd9-968b-4e98-8049-14521907bc08.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-e0afb8f5-e753-4916-8575-8d74d5b5e2ba.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-e0afb8f5-e753-4916-8575-8d74d5b5e2ba.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-e35ef70f-fa12-427e-802f-3bc1ea8a8f8a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-e35ef70f-fa12-427e-802f-3bc1ea8a8f8a.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-e41f16b1-a8ca-4631-88f6-405b5c10c3c0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-e41f16b1-a8ca-4631-88f6-405b5c10c3c0.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-e4819ee3-0f02-4556-9be2-c4f350619139.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-e4819ee3-0f02-4556-9be2-c4f350619139.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-e4e2f24e-1741-4485-bd19-df2387bfff1c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-e4e2f24e-1741-4485-bd19-df2387bfff1c.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-e51d17ec-f63f-4fab-bdd2-bbb59feb20c8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-e51d17ec-f63f-4fab-bdd2-bbb59feb20c8.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-e53788fd-a34d-4f90-86e5-b2d16c553fa2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-e53788fd-a34d-4f90-86e5-b2d16c553fa2.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-e5b8843b-e152-4908-8506-3113818f8234.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-e5b8843b-e152-4908-8506-3113818f8234.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-e81828ac-d9e3-4c8c-8917-6acaaeb67dd2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-e81828ac-d9e3-4c8c-8917-6acaaeb67dd2.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-ed26d6d9-3e57-43ee-a999-dc2811a517b5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-ed26d6d9-3e57-43ee-a999-dc2811a517b5.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-edf92c47-4a03-4f04-ad24-e860647d5ea5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-edf92c47-4a03-4f04-ad24-e860647d5ea5.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-edfc17f6-efb0-4e2f-b1e7-816ba2957f52.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-edfc17f6-efb0-4e2f-b1e7-816ba2957f52.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-ee2bffc5-03cb-443c-afd1-dd1e4fe664db.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-ee2bffc5-03cb-443c-afd1-dd1e4fe664db.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-ef1a8f2b-2d39-4a71-8cd2-5114b97e693b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-ef1a8f2b-2d39-4a71-8cd2-5114b97e693b.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-ef255014-fc67-471f-803f-4990dfb2ec47.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-ef255014-fc67-471f-803f-4990dfb2ec47.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-f0593f1c-cc11-457e-a595-11550f131849.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-f0593f1c-cc11-457e-a595-11550f131849.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-f3da0c58-0a63-4881-92b5-ff27f06b7eae.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-f3da0c58-0a63-4881-92b5-ff27f06b7eae.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-f575b25d-0ea2-4e1d-b0e7-9bbdc22df788.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-f575b25d-0ea2-4e1d-b0e7-9bbdc22df788.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-f617d21c-2bbb-4b7d-b2b1-f6f8d9688c3b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-f617d21c-2bbb-4b7d-b2b1-f6f8d9688c3b.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-f64167b4-390c-420b-a40c-4deb78bf9c1d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-f64167b4-390c-420b-a40c-4deb78bf9c1d.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-f6b0b6e8-b97a-4acf-bee6-81bee156c5fe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-f6b0b6e8-b97a-4acf-bee6-81bee156c5fe.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-f85a772a-f4ee-4889-82d4-d22a6d2c96e4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-f85a772a-f4ee-4889-82d4-d22a6d2c96e4.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-f905697b-b3f6-44d0-862c-74b783d4fb16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-f905697b-b3f6-44d0-862c-74b783d4fb16.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-fbed03b3-0920-4ebb-8858-4d5021f391e4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-fbed03b3-0920-4ebb-8858-4d5021f391e4.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-fdca5d30-f48a-4516-835e-138414850e73.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-fdca5d30-f48a-4516-835e-138414850e73.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-fe075adf-e04c-46e8-9781-bd9bdc4ea923.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-fe075adf-e04c-46e8-9781-bd9bdc4ea923.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-ff347175-861c-4d17-9db2-f3f33d13ea69.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdtsc/ringzer0-ctf-solutions/HEAD/src/read-me-if-you-can/data/captcha-ff347175-861c-4d17-9db2-f3f33d13ea69.png -------------------------------------------------------------------------------- /src/read-me-if-you-can/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "keyColor": 3 | { 4 | "r": 255, 5 | "g": 255, 6 | "b": 255 7 | }, 8 | 9 | "mapping": 10 | { 11 | "key": "#", 12 | "background": " " 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/ask-your-grandpa-again/notes.md: -------------------------------------------------------------------------------- 1 | FORTRAN punch cards are segmented into the following sections (left-to-right): 2 | 3 | - [1, 5] - statement number 4 | - [6] - continuation flag 5 | - [7, 72] - FORTRAN statements 6 | - [73, 80] - card ID 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS-specific noise files. 2 | desktop.ini 3 | Thumbs.db 4 | .DS_Store 5 | 6 | # Executable, library, shared object, and support files. 7 | *.exe 8 | *.out 9 | *.app 10 | *.obj 11 | *.o 12 | *.lib 13 | *.a 14 | *.dll 15 | *.so 16 | 17 | # Vendor files. 18 | node_modules 19 | -------------------------------------------------------------------------------- /src/read-me-if-you-can/lib/get-captcha.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const get = require('../../../lib/solve'); 4 | 5 | module.exports = (callback) => 6 | { 7 | get('17', ($) => 8 | { 9 | const src = $('.message > img').attr('src'), 10 | png = new Buffer(src.substr(src.indexOf(',') + 1), 'base64'); 11 | 12 | return callback(png); 13 | }); 14 | }; 15 | -------------------------------------------------------------------------------- /src/ask-your-grandpa-again/decode.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Challenge 173 Solution 6 | 12 | 13 | 14 |
Decoding...
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/ask-your-grandpa/util/map.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Challenge 172 Grid Layout Mapper 6 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/hash-me-please/solve.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict'; 4 | 5 | const crypto = require('crypto'); 6 | 7 | const solve = require('../../lib/solve'); 8 | 9 | solve('13', ($) => 10 | { 11 | const padding = /-+\s*(begin|end)\s+message\s*-+/ig, 12 | message = $('.message').text().replace(padding, '').trim(); 13 | 14 | return crypto.createHash('sha512').update(message).digest('hex'); 15 | }); 16 | -------------------------------------------------------------------------------- /src/ask-your-grandpa-again/readme.md: -------------------------------------------------------------------------------- 1 | Ask Your Grandpa Again 2 | ---------------------- 3 | 4 | A static set of six punch card images with no description is provided in 5 | challenge 173. 6 | 7 | ![Punch Card A](./data/card-a.jpg) 8 | ![Punch Card B](./data/card-b.jpg) 9 | ![Punch Card C](./data/card-c.jpg) 10 | ![Punch Card D](./data/card-d.jpg) 11 | ![Punch Card E](./data/card-e.jpg) 12 | ![Punch Card F](./data/card-f.jpg) 13 | -------------------------------------------------------------------------------- /src/ask-your-grandpa-again/util/map.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Challenge 173 Grid Layout Mapper 6 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/execute-me-if-you-can/solve.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict'; 4 | 5 | const exec = require('child_process').execSync; 6 | 7 | const solve = require('../../lib/solve'); 8 | 9 | solve('121', ($) => 10 | { 11 | const padding = /-+\s*(begin|end)\s+shellcode\s*-+/ig, 12 | payload = $('.message').text().replace(padding, '').trim(); 13 | 14 | // YOLO! 15 | return exec(`./exec.out '${payload}' 0>&1`); 16 | }); 17 | -------------------------------------------------------------------------------- /src/hash-breaker/readme.md: -------------------------------------------------------------------------------- 1 | Hash Breaker 2 | ------------ 3 | 4 | > You have 3 seconds to break this hash. 5 | > 6 | > Send the answer back using `https://ringzer0team.com/challenges/56/[clear_text]`. 7 | 8 | The hash is non-static and refreshes with each request. Below is an example of 9 | the payload's format. 10 | 11 | ```text 12 | ----- BEGIN HASH ----- 13 | 4afe98453ca74b91f00881ecefe2df8e96fd27b0 14 | ----- END HASH ----- 15 | ``` 16 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ringzer0-ctf-solutions", 3 | "version": "0.0.0", 4 | "private": true, 5 | "dependencies": 6 | { 7 | "cheerio": "~0.20.0", 8 | "request": "~2.72.0", 9 | "fnv1a": "~1.0.1", 10 | "async": "~1.5.2", 11 | "node-uuid": "~1.4.7", 12 | "glob": "~7.0.5", 13 | "pngjs": "~2.3.1", 14 | "progress": "~1.1.8", 15 | "readline-sync": "~1.4.4", 16 | "sudoku-c": "~1.0.0" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/i-hate-mathematics/readme.md: -------------------------------------------------------------------------------- 1 | I Hate Mathematics 2 | ------------------ 3 | 4 | > You have 2 seconds to send the answer. 5 | > 6 | > Send the answer back using `https://ringzer0team.com/challenges/32/[answer]`. 7 | 8 | 9 | The message is non-static and refreshes with each request. Below is an example 10 | of the payload's format. 11 | 12 | ```text 13 | ----- BEGIN MESSAGE ----- 14 | 2905 + 0x1171 - 1010011000001 = ? 15 | ----- END MESSAGE ----- 16 | ``` 17 | -------------------------------------------------------------------------------- /src/hash-breaker-reloaded-again/readme.md: -------------------------------------------------------------------------------- 1 | Hash Breaker Reloaded Again 2 | --------------------------- 3 | 4 | > You have 3 seconds to break this hash. 5 | > 6 | > Send the answer back using `https://ringzer0team.com/challenges/159/[clear_text]`. 7 | 8 | The hash is non-static and refreshes with each request. Below is an example of 9 | the payload's format. 10 | 11 | ```text 12 | ----- BEGIN HASH ----- 13 | c21cb5e4317049eec8e54c065ec3a4945b0e7eaa 14 | ----- END HASH ----- 15 | ``` 16 | -------------------------------------------------------------------------------- /src/number-game/readme.md: -------------------------------------------------------------------------------- 1 | Number Game 2 | ----------- 3 | 4 | No instructions are provided in the problem statement for challenge 130, other 5 | than to SSH into a server. Once connected, the following prompt is displayed: 6 | 7 | > Find the right number. 8 | > 9 | > You need to find the right number and win 10 games in less than 30 seconds. 10 | 11 | Numbers are randomly generated for each session. After winning ten of these 12 | number guessing games in the allotted time, the flag is revealed. 13 | -------------------------------------------------------------------------------- /src/ask-your-grandpa-again/solve.f: -------------------------------------------------------------------------------- 1 | PROGRAM WFLAG 13370010 2 | I=931 13370020 3 | J=2800 13370030 4 | WRITE(6,1337)J+29,(J/4)+20,I 13370040 5 | 1337 FORMAT(11HFLAG-DFEB0D,I4,1H-,I3,10HFDBECDF39D,I3) 13370050 6 | END 13370060 7 | -------------------------------------------------------------------------------- /src/find-the-right-word/readme.md: -------------------------------------------------------------------------------- 1 | Find the Right Word 2 | ------------------- 3 | 4 | > You have 2 second to rebuild to correct words (2 in the list has been randomly shuffled). 5 | > 6 | > Send the answer back using `https://ringzer0team.com/challenges/126/[string]`. 7 | 8 | The words are non-static and refresh with each request. Below is an example of 9 | the payload's format. 10 | 11 | ```text 12 | ----- BEGIN WORDS ----- 13 | cuddliest,sumaarim,topsiders,postnuptial,viscountesses,scribes,kaeakyr 14 | ----- END WORDS ----- 15 | ``` 16 | -------------------------------------------------------------------------------- /src/hash-breaker/solve.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict'; 4 | 5 | const crypto = require('crypto'); 6 | 7 | const solve = require('../../lib/solve'); 8 | 9 | const sha1 = 10 | (message) => crypto.createHash('sha1').update(message).digest('hex'); 11 | 12 | solve('56', ($) => 13 | { 14 | const padding = /-+\s*(begin|end)\s+hash\s*-+/ig; 15 | 16 | const hash = $('.message').text().replace(padding, '').trim(); 17 | 18 | for(var result = 0; sha1(result.toString()) !== hash; ++result); 19 | 20 | return result; 21 | }); 22 | -------------------------------------------------------------------------------- /src/ask-your-grandpa/solve.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Challenge 172 Solution 6 | 19 | 20 | 21 |
 
22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /src/hash-breaker-reloaded/readme.md: -------------------------------------------------------------------------------- 1 | Hash Breaker Reloaded 2 | --------------------- 3 | 4 | > You have 3 seconds to break this hash. 5 | > 6 | > Send the answer back using `https://ringzer0team.com/challenges/57/[clear_text]`. 7 | 8 | The hash and salt are non-static and refresh with each request. Below is an 9 | example of the payload's format. 10 | 11 | ```text 12 | ----- BEGIN HASH ----- 13 | e869d0623333fa4c8415322968facbacece3b577 14 | ----- END HASH ----- 15 | 16 | ----- BEGIN SALT ----- 17 | 8cd8e37a52f5c282ff992c3c72dafb0902fc61b627dce08b1b5c5a612d4347de 18 | ----- END SALT ----- 19 | ``` 20 | -------------------------------------------------------------------------------- /src/hash-breaker-reloaded/solve.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict'; 4 | 5 | const crypto = require('crypto'); 6 | 7 | const solve = require('../../lib/solve'); 8 | 9 | const sha1 = 10 | (message) => crypto.createHash('sha1').update(message).digest('hex'); 11 | 12 | solve('57', ($) => 13 | { 14 | const padding = /-+\s*(begin|end)\s+(hash|salt)\s*-+/ig; 15 | 16 | const [hash, salt] = $('.message').map((index, self) => 17 | { 18 | return $(self).text().replace(padding, '').trim(); 19 | }).toArray(); 20 | 21 | for(var result = 0; sha1(result + salt) !== hash; ++result); 22 | 23 | return result; 24 | }); 25 | -------------------------------------------------------------------------------- /src/hash-breaker-reloaded-again/solve.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict'; 4 | 5 | const fs = require('fs'); 6 | 7 | const solve = require('../../lib/solve'); 8 | 9 | solve('159', ($) => 10 | { 11 | const padding = /-+\s*(begin|end)\s+hash\s*-+/ig, 12 | hash = $('.message').text().replace(padding, '').trim(); 13 | 14 | const bucket = hash.substr(0, 4); 15 | 16 | const result = fs.readFileSync(`./buckets/${bucket}`, 'ascii') 17 | .split('\n') 18 | .find(entry => (bucket + entry.substr(0, 36) === hash)) 19 | .substr(36); 20 | 21 | return result; 22 | }); 23 | -------------------------------------------------------------------------------- /src/find-the-right-word/make-dictionary.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict'; 4 | 5 | const fs = require('fs'); 6 | 7 | const lineReader = require('readline').createInterface( 8 | { 9 | input: fs.createReadStream('/usr/share/dict/words') 10 | }); 11 | 12 | const dictionary = {}; 13 | 14 | lineReader.on('line', (line) => 15 | { 16 | if(/[^a-z]/i.test(line)) return; 17 | 18 | line = line.trim().toLowerCase(); 19 | 20 | dictionary[line.split('').sort().join('')] = line; 21 | }); 22 | 23 | lineReader.on('close', () => 24 | { 25 | const lut = JSON.stringify(dictionary, null, 2); 26 | 27 | fs.writeFileSync('./dictionary.json', lut); 28 | }); 29 | -------------------------------------------------------------------------------- /src/hash-me-reloaded/solve.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict'; 4 | 5 | const crypto = require('crypto'); 6 | 7 | const solve = require('../../lib/solve'); 8 | 9 | solve('14', ($) => 10 | { 11 | const padding = /-+\s*(begin|end)\s+message\s*-+/ig; 12 | 13 | const message = $('.message').text() 14 | .replace(padding, '') 15 | .trim() 16 | .match(/.{8}/g) 17 | .map(n => String.fromCharCode(parseInt(n, 2))) 18 | .join(''); 19 | 20 | return crypto.createHash('sha512').update(message).digest('hex'); 21 | }); 22 | -------------------------------------------------------------------------------- /src/ascii-art/digits.json: -------------------------------------------------------------------------------- 1 | [ 2 | [ 3 | " xxx", 4 | "x x", 5 | "x x", 6 | "x x", 7 | " xxx" 8 | ], 9 | 10 | [ 11 | " xx", 12 | "x x", 13 | " x", 14 | " x", 15 | "xxxxx" 16 | ], 17 | 18 | [ 19 | " xxx", 20 | "x x", 21 | " xx", 22 | " x", 23 | "xxxxx" 24 | ], 25 | 26 | [ 27 | " xxx", 28 | "x x", 29 | " xx", 30 | "x x", 31 | " xxx" 32 | ], 33 | 34 | [ 35 | " x x", 36 | "x x", 37 | " xxxxx", 38 | " x", 39 | " x" 40 | ], 41 | 42 | [ 43 | "xxxxx", 44 | "x", 45 | " xxxx", 46 | " x", 47 | "xxxxx" 48 | ] 49 | ] 50 | -------------------------------------------------------------------------------- /src/read-me-if-you-can/solve.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict'; 4 | 5 | const hash = require('fnv1a'); 6 | 7 | const getCaptcha = require('./lib/get-captcha'), 8 | toAscii = require('./lib/to-ascii'), 9 | segment = require('./lib/segment'); 10 | 11 | const solve = require('../../lib/solve'); 12 | 13 | const config = require('./config'), 14 | symbols = require('./symbols.json'); 15 | 16 | const decode = (symbol) => symbols[hash(symbol.join(''))]; 17 | 18 | getCaptcha((png) => 19 | { 20 | const captcha = toAscii(png, config.keyColor, config.mapping); 21 | 22 | return segment(captcha, config.mapping.background).map(decode).join(''); 23 | }); 24 | -------------------------------------------------------------------------------- /src/xor-me-if-you-can/readme.md: -------------------------------------------------------------------------------- 1 | XOR Me if You Can 2 | ----------------- 3 | 4 | > You have 3 seconds decrypt this message using the xoring key hidden into the 5 | > xor key string. The length of the key is 10 characters. The message is encoded 6 | > using base 64. 7 | > 8 | > Send the answer back using `https://ringzer0team.com/challenges/16/[your_string]`. 9 | 10 | The key and message are non-static and refresh with each request. Below is an 11 | example of the payload's format. 12 | 13 | ```text 14 | ----- BEGIN XOR KEY ----- 15 | DfR5bfgdEu5A9J8LoEcSLQmFNTYx0pw 16 | ----- END XOR KEY ----- 17 | 18 | 19 | ----- BEGIN CRYPTED MESSAGE ----- 20 | O1d9dx5WPRc4NBZJL2s+BBwWAyUxTzxudAkPFGYVFUw= 21 | ----- END CRYPTED MESSAGE ----- 22 | ``` 23 | -------------------------------------------------------------------------------- /src/execute-me-if-you-can/exec.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | int main(const int argc, const char* const argv[]) 7 | { 8 | assert(argc >= 2); 9 | 10 | size_t byteCount = 0; 11 | 12 | for(const char* c = argv[1]; *c; ++c) if(*c == '\\') ++byteCount; 13 | 14 | assert(byteCount && (byteCount < 256)); 15 | 16 | unsigned char buffer[byteCount]; 17 | memset(buffer, 0, byteCount); 18 | 19 | { 20 | size_t index = 0; 21 | int bytesRead = 0; 22 | const char* cursor = argv[1]; 23 | 24 | while(sscanf(cursor, "\\x%hhx%n", &buffer[index++], &bytesRead)) 25 | { 26 | cursor += bytesRead; 27 | } 28 | } 29 | 30 | typedef void(* shellcode)(); 31 | 32 | ((shellcode)buffer)(); 33 | } 34 | -------------------------------------------------------------------------------- /src/execute-me-if-you-can-again/exec.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | int main(const int argc, const char* const argv[]) 7 | { 8 | assert(argc >= 2); 9 | 10 | size_t byteCount = 0; 11 | 12 | for(const char* c = argv[1]; *c; ++c) if(*c == '\\') ++byteCount; 13 | 14 | assert(byteCount && (byteCount < 256)); 15 | 16 | unsigned char buffer[byteCount]; 17 | memset(buffer, 0, byteCount); 18 | 19 | { 20 | size_t index = 0; 21 | int bytesRead = 0; 22 | const char* cursor = argv[1]; 23 | 24 | while(sscanf(cursor, "\\x%hhx%n", &buffer[index++], &bytesRead)) 25 | { 26 | cursor += bytesRead; 27 | } 28 | } 29 | 30 | typedef void(* shellcode)(); 31 | 32 | ((shellcode)buffer)(); 33 | } 34 | -------------------------------------------------------------------------------- /src/execute-me-if-you-can-again/solve.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict'; 4 | 5 | const exec = require('child_process').execSync; 6 | 7 | const solve = require('../../lib/solve'); 8 | 9 | solve('125', ($) => 10 | { 11 | const padding = /-+\s*(begin|end)\s+shellcode\s*-+/ig; 12 | 13 | const payload = $('.message').text() 14 | .replace(padding, '') 15 | .trim() 16 | .match(/..../g); 17 | 18 | return (() => 19 | { 20 | [payload[0x01], payload[0x53]] = ['\\x50', '\\xab']; 21 | 22 | try 23 | { 24 | // YOLO! 25 | return exec(`./exec.out '${payload.join('')}'`); 26 | } 27 | 28 | catch(error) 29 | { 30 | return error.stdout; 31 | } 32 | })(); 33 | }); 34 | -------------------------------------------------------------------------------- /src/i-hate-mathematics/solve.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict'; 4 | 5 | const solve = require('../../lib/solve'); 6 | 7 | solve('32', ($) => 8 | { 9 | const padding = /-+\s*(begin|end)\s+message\s*-+/ig, 10 | message = $('.message').text().replace(padding, '').trim(); 11 | 12 | const expression = message.replace(/([-+*=\/])/g, '@$1@') 13 | .split('@') 14 | .slice(0, -2) 15 | .map(token => token.trim()) 16 | .map(n => /^[01]+$/.test(n) ? `0b${n}` : n) 17 | .join('') 18 | .split('') 19 | .filter(c => /^[-+*=\/\da-fx]$/i.test(c)) 20 | .join(''); 21 | 22 | return eval(expression); 23 | }); 24 | -------------------------------------------------------------------------------- /src/hash-breaker-reloaded-again/make-buckets.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import hashlib 4 | import itertools 5 | import locale 6 | import string 7 | 8 | locale.setlocale(locale.LC_ALL, '') 9 | 10 | pool = string.ascii_lowercase + string.digits 11 | width = 6 12 | 13 | buckets = \ 14 | { 15 | '{0:04x}'.format(i): None for i in range(0xFFFF + 1) 16 | } 17 | 18 | for bucket in buckets: 19 | buckets[bucket] = open('./buckets/' + bucket, 'w') 20 | 21 | index = 0 22 | 23 | for string in itertools.product(pool, repeat=width): 24 | value = ''.join(string) 25 | digest = hashlib.sha1(value.encode('ascii')).hexdigest() 26 | 27 | bucket = digest[:4] 28 | payload = digest[4:] 29 | 30 | print(payload, value, sep='', file=buckets[bucket]) 31 | 32 | index += 1 33 | 34 | if not (index % 100000): 35 | print(locale.format('%u', index, grouping=True)) 36 | -------------------------------------------------------------------------------- /src/read-me-if-you-can/lib/to-ascii.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const PNG = require('pngjs').PNG; 4 | 5 | module.exports = (png, keyColor, mapping) => 6 | { 7 | const defaultMapping = {key: '#', background: ' '}; 8 | 9 | mapping = (typeof mapping === 'undefined') ? defaultMapping : mapping; 10 | 11 | const result = []; 12 | 13 | png = PNG.sync.read(png); 14 | 15 | for(let y = 0; y < png.height; ++y) 16 | { 17 | const row = []; 18 | 19 | for(let x = 0; x < png.width; ++x) 20 | { 21 | const i = (png.width * y + x) << 2; 22 | 23 | const isKey = png.data[i + 0] === keyColor.r && 24 | png.data[i + 1] === keyColor.g && 25 | png.data[i + 2] === keyColor.b; 26 | 27 | row.push(isKey ? mapping.key : mapping.background); 28 | } 29 | 30 | result.push(row.join('')); 31 | } 32 | 33 | return result; 34 | }; 35 | -------------------------------------------------------------------------------- /src/ascii-art/readme.md: -------------------------------------------------------------------------------- 1 | ASCII Art 2 | --------- 3 | 4 | > You have 2 seconds to send the number you see. 5 | > 6 | > Send the answer back using `https://ringzer0team.com/challenges/119/[number]`. 7 | 8 | The message is non-static and refreshes with each request. Below is an example 9 | of the payload's format. 10 | 11 | ```text 12 | ----- BEGIN MESSAGE ----- 13 | 14 | xxx 15 | x x 16 | xx 17 | x 18 | xxxxx 19 | 20 | xxx 21 | x x 22 | xx 23 | x 24 | xxxxx 25 | 26 | xxxxx 27 | x 28 | xxxx 29 | x 30 | xxxxx 31 | x x 32 | x x 33 | xxxxx 34 | x 35 | x 36 | 37 | xx 38 | x x 39 | x 40 | x 41 | xxxxx 42 | 43 | xxxxx 44 | x 45 | xxxx 46 | x 47 | xxxxx 48 | xx 49 | x x 50 | x 51 | x 52 | xxxxx 53 | 54 | xxxxx 55 | x 56 | xxxx 57 | x 58 | xxxxx 59 | x x 60 | x x 61 | xxxxx 62 | x 63 | x 64 | 65 | xxx 66 | x x 67 | xx 68 | x x 69 | xxx 70 | 71 | 72 | ----- END MESSAGE ----- 73 | ``` 74 | -------------------------------------------------------------------------------- /src/execute-me-if-you-can/readme.md: -------------------------------------------------------------------------------- 1 | Execute Me if You Can 2 | --------------------- 3 | 4 | > You have 1 second to execute this code and get the output. 5 | > 6 | > Send the answer back using `https://ringzer0team.com/challenges/121/[string]`. 7 | 8 | The shellcode is non-static and refreshes with each request. Below is an 9 | example of the payload's format. 10 | 11 | ```text 12 | ----- BEGIN SHELLCODE ----- 13 | \xeb\x4d\x5e\x66\x83\xec\x0c\x48\x89\xe0\x48\x31\xc9\x68\x6a\xc6\x81\x3d\x48\x89\xcf\x80\xc1\x0c\x40\x8a\x3e\x40\xf6\xd7\x40\x88\x38\x48\xff\xc6\x68\x2e\x34\x9b\xc6\x48\xff\xc0\xe2\xea\x2c\x0c\x48\x89\xc6\x68\xb4\x13\xd8\x2d\x48\x31\xc0\x48\x89\xc7\x04\x01\x48\x89\xc2\x80\xc2\x0b\x0f\x05\x48\x31\xc0\x04\x3c\x0f\x05\xe8\xae\xff\xff\xff\xac\x8f\xcc\x87\x98\x94\xcf\x96\x8c\xa8\xaf\xa9\x43\x85\x4c\x83\x1e\x14\xba\xe5\xd7\xc7\xa8\xd0\x0c\xa8\x8f\xfc\x97\xd5\x68\xdc\xc4\x18\x74\x5b\x52\x41\x4e\x44\x53\x54\x52\x32\x5d 14 | ----- END SHELLCODE ----- 15 | ``` 16 | -------------------------------------------------------------------------------- /src/execute-me-if-you-can-again/readme.md: -------------------------------------------------------------------------------- 1 | Execute Me if You Can Again 2 | --------------------------- 3 | 4 | > You have 1 second to execute this code and get the output. 5 | > 6 | > Send the answer back using `https://ringzer0team.com/challenges/125/[string]`. 7 | 8 | The shellcode is non-static and refreshes with each request. Below is an 9 | example of the payload's format. 10 | 11 | ```text 12 | ----- BEGIN SHELLCODE ----- 13 | \xeb\x4d\x5e\x66\x83\xec\x0c\x48\x89\xe0\x48\x31\xc9\x68\x9e\x5f\x2a\x7d\x48\x89\xcf\x80\xc1\x0c\x40\x8a\x3e\x40\xf6\xd7\x40\x88\x38\x48\xff\xc6\x68\x93\x2b\x04\x92\x48\xff\xc0\xe2\xea\x2c\x0c\x48\x89\xc6\x68\xa2\xf5\xc6\x16\x48\x31\xc0\x48\x89\xc7\x40\xb7\x01\x04\x01\x48\x89\xc2\x80\xc2\x0b\x0f\x05\x48\x31\xc0\x04\x3c\x0f\x05\xe8\xae\xff\xff\xff\xbd\xaa\xbe\xab\xb5\xb9\xce\xa9\xce\xcf\xae\xcb\xbf\x79\x11\xfb\xba\x6b\x0f\xe9\x1f\xbc\x7f\x36\x2b\x44\x5e\x68\x1d\x1e\x8f\x71\x5b\x52\x41\x4e\x44\x53\x54\x52\x32\x5d 14 | ----- END SHELLCODE ----- 15 | ``` 16 | -------------------------------------------------------------------------------- /src/find-the-right-word/solve.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict'; 4 | 5 | const solve = require('../../lib/solve'); 6 | 7 | const dictionary = Object.freeze(require('./dictionary')); 8 | 9 | const toKey = 10 | (word) => word.trim().toLowerCase().split('').sort().join(''); 11 | 12 | (function attempt() 13 | { 14 | const result = ($) => 15 | { 16 | const padding = /-+\s*(begin|end)\s+words\s*-+/ig; 17 | 18 | const targetWordCount = 19 | 1 + ($('.message').text().match(/,/g) || []).length; 20 | 21 | const words = $('.message').text() 22 | .replace(padding, '') 23 | .trim() 24 | .split(',') 25 | .map(word => dictionary[toKey(word)]) 26 | .filter(Boolean); 27 | 28 | if(words.length === targetWordCount) return words.join(); 29 | 30 | else setTimeout(attempt, 1000); 31 | }; 32 | 33 | solve('126', result); 34 | })(); 35 | -------------------------------------------------------------------------------- /src/i-saw-a-little-elf/solve.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict'; 4 | 5 | const fs = require('fs'), 6 | exec = require('child_process').execSync; 7 | 8 | const solve = require('../../lib/solve'); 9 | 10 | const hookPath = './hook.so', 11 | loaderPath = '/lib64/ld-linux-x86-64.so.2', 12 | payloadPath = './payload.bin'; 13 | 14 | solve('15', ($) => 15 | { 16 | const padding = /-+\s*(begin|end)\s+(elf\s+message|checksum)\s*-+/ig; 17 | 18 | let [elf, checksum] = $('.message').map((index, self) => 19 | { 20 | return $(self).text().replace(padding, '').trim(); 21 | }).toArray(); 22 | 23 | while(/^[a-z\d+/=]+$/i.test(elf)) 24 | { 25 | elf = Buffer(elf, 'base64').toString('binary'); 26 | } 27 | 28 | elf = Buffer(elf, 'binary').reverse(); 29 | 30 | fs.writeFileSync(payloadPath, elf); 31 | 32 | // YOLO! 33 | const result = exec(`LD_PRELOAD=${hookPath} ${loaderPath} ${payloadPath}`); 34 | 35 | fs.unlink(payloadPath); 36 | 37 | return result; 38 | }); 39 | -------------------------------------------------------------------------------- /src/xor-me-if-you-can/solve.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict'; 4 | 5 | const solve = require('../../lib/solve'); 6 | 7 | const isLegible = (string) => /^[\x20-\x7E]+$/.test(string); 8 | 9 | solve('16', ($) => 10 | { 11 | const padding = /-+\s*(begin|end)\s+(xor\s+key|crypted\s+message)\s*-+/ig; 12 | 13 | const [keyPool, encodedMessage] = $('.message').map((index, self) => 14 | { 15 | return $(self).text().replace(padding, '').trim(); 16 | }).toArray(); 17 | 18 | const keyLength = 10, 19 | message = new Buffer(encodedMessage, 'base64').toString(); 20 | 21 | for(let i = 0; i <= (keyPool.length - keyLength); ++i) 22 | { 23 | const key = keyPool.substr(i, keyLength); 24 | 25 | const result = message.split('').map((char, index) => 26 | { 27 | const lhs = char.charCodeAt(0), 28 | rhs = key.charCodeAt(index % keyLength); 29 | 30 | return String.fromCharCode(lhs ^ rhs); 31 | }).join(''); 32 | 33 | if(isLegible(result)) return result; 34 | } 35 | }); 36 | -------------------------------------------------------------------------------- /lib/solve.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const assert = require('assert'); 4 | 5 | const cheerio = require('cheerio'), 6 | request = require('request'); 7 | 8 | module.exports = (problemId, solve, respond) => 9 | { 10 | assert(solve instanceof Function); 11 | 12 | const get = 13 | { 14 | uri: `https://ringzer0team.com/challenges/${problemId}`, 15 | method: 'GET', 16 | headers: {cookie: require('../session')} 17 | }; 18 | 19 | request(get, (error, response, body) => 20 | { 21 | assert(response.statusCode === 200); 22 | 23 | const result = solve(cheerio.load(body)); 24 | 25 | if(typeof result === 'undefined') return; 26 | 27 | get.uri += `/${result}`; 28 | 29 | request(get, (error, response, body) => 30 | { 31 | assert(response.statusCode === 200); 32 | 33 | const $ = cheerio.load(body); 34 | 35 | const code = $('.challenge-wrapper > :contains("FLAG")').text().trim(); 36 | 37 | if(respond instanceof Function) respond(code, $); 38 | 39 | else console.log(code); 40 | }); 41 | }); 42 | }; 43 | -------------------------------------------------------------------------------- /src/read-me-if-you-can/get-training-data.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict'; 4 | 5 | const fs = require('fs'), 6 | assert = require('assert'); 7 | 8 | const async = require('async'), 9 | uuid = require('node-uuid'), 10 | Progress = require('progress'); 11 | 12 | const getCaptcha = require('./lib/get-captcha'), 13 | toAscii = require('./lib/to-ascii'); 14 | 15 | const solve = require('../../lib/solve'); 16 | 17 | const config = require('./config'); 18 | 19 | assert(!isNaN(process.argv[2]) && (+process.argv[2] >= 0)); 20 | 21 | const targetSetSize = +process.argv[2]; 22 | let fetchCount = 0; 23 | 24 | const progress = new Progress('[:bar] :percent :etas', 25 | { 26 | complete: '=', 27 | incomplete: ' ', 28 | clear: true, 29 | width: 50, 30 | total: targetSetSize 31 | }); 32 | 33 | async.whilst(() => (fetchCount++ < targetSetSize), (next) => 34 | { 35 | getCaptcha((png) => 36 | { 37 | progress.tick(); 38 | 39 | const ascii = toAscii(png, config.keyColor, config.mapping); 40 | 41 | const filename = `captcha-${uuid.v4()}`; 42 | 43 | fs.writeFileSync(`data/${filename}.png`, png, 'binary'); 44 | fs.writeFileSync(`data/${filename}.txt`, ascii.join('\n')); 45 | 46 | next(); 47 | }); 48 | }); 49 | -------------------------------------------------------------------------------- /src/read-me-if-you-can/classify.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict'; 4 | 5 | const fs = require('fs'), 6 | assert = require('assert'), 7 | glob = require('glob'), 8 | hash = require('fnv1a'), 9 | ask = require('readline-sync'); 10 | 11 | const segment = require('./lib/segment'); 12 | 13 | const config = require('./config'); 14 | 15 | const dictionary = {}; 16 | 17 | glob.sync('data/captcha-*.txt').forEach((file) => 18 | { 19 | const captcha = fs.readFileSync(file, 'ascii').split('\n'); 20 | 21 | segment(captcha, config.mapping.background).forEach((symbol) => 22 | { 23 | const key = hash(symbol.join('')); 24 | 25 | dictionary[key] = 26 | { 27 | pretty: symbol, 28 | value: undefined 29 | }; 30 | }); 31 | }); 32 | 33 | assert(Object.keys(dictionary).length == 62); 34 | 35 | Object.keys(dictionary).forEach(function(key, index) 36 | { 37 | const separator = '-'.repeat(this[key].pretty[0].length); 38 | 39 | const prompt = 40 | [ 41 | '', 42 | separator, 43 | this[key].pretty.join('\n'), 44 | separator, 45 | `${index + 1} of ${Object.keys(this).length} -> ` 46 | ].join('\n'); 47 | 48 | this[key] = ask.question(prompt); 49 | }, dictionary); 50 | 51 | fs.writeFileSync('./symbols.json', JSON.stringify(dictionary, null, 2) + '\n'); 52 | -------------------------------------------------------------------------------- /src/ascii-art/solve.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict'; 4 | 5 | const hash = require('fnv1a'); 6 | 7 | const solve = require('../../lib/solve'); 8 | 9 | const digits = (() => 10 | { 11 | const result = {}, 12 | digits = require('./digits'); 13 | 14 | digits.forEach((digit, value) => 15 | { 16 | result[hash(digit.join('\n'))] = value; 17 | }); 18 | 19 | return Object.freeze(result); 20 | })(); 21 | 22 | solve('119', ($) => 23 | { 24 | const padding = /-+\s*(begin|end)\s+message\s*-+/ig, 25 | spaces = / /ig, 26 | breaks = /<\s*br\s*\\*>/ig, 27 | glyphs = /(.*?\n){5}/g, 28 | tail = /\s+$/; 29 | 30 | const message = $('.message').html() 31 | .replace(padding, '') 32 | .replace(spaces, ' ') 33 | .replace(breaks, '\n') 34 | .split('\n') 35 | .filter(line => line.indexOf('x') !== -1) 36 | .map(line => line.replace(tail, '')) 37 | .join('\n') + '\n'; 38 | 39 | const result = message.match(glyphs) 40 | .map(digit => digit.replace(tail, '')) 41 | .map(digit => digits[hash(digit)]) 42 | .join(''); 43 | 44 | return result; 45 | }); 46 | -------------------------------------------------------------------------------- /src/classic-sudoku/solve.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict'; 4 | 5 | const assert = require('assert'), 6 | spawn = require('child_process').spawn, 7 | sudoku = require('sudoku-c'); 8 | 9 | const config = require('./config'); 10 | 11 | const commandLine = 12 | [ 13 | '-p', 14 | config.password, 15 | 'ssh', 16 | '-tt', 17 | '-oStrictHostKeyChecking=no', 18 | '-oUserKnownHostsFile=/dev/null', 19 | `${config.username}@${config.host}`, 20 | '-p', 21 | config.port 22 | ]; 23 | 24 | ((ssh) => 25 | { 26 | let prompt = ''; 27 | 28 | ssh.stdout.on('data', (stdout) => 29 | { 30 | prompt += stdout; 31 | 32 | if(/solution\s*:/i.test(prompt)) 33 | { 34 | const grid = prompt.toString().match(/\+-(?:.|\n|\r|\r\n)*-\+/g)[0] 35 | .replace(/\s{3}/g, ' 0 ') 36 | .replace(/\D/g, ' ') 37 | .split(' ') 38 | .filter(cell => cell.length) 39 | .map(Number); 40 | 41 | prompt = ''; 42 | assert(grid.length === 81); 43 | ssh.stdin.write(sudoku.solve(grid).join(',') + '\n'); 44 | } 45 | 46 | else if(/flag-/i.test(prompt)) 47 | { 48 | console.log(prompt.match(/(flag-.*)/i)[0].trim()); 49 | process.exit(); 50 | } 51 | }); 52 | })(spawn('sshpass', commandLine)); 53 | -------------------------------------------------------------------------------- /src/hash-me-please/readme.md: -------------------------------------------------------------------------------- 1 | Hash Me Please 2 | -------------- 3 | 4 | > You have 2 seconds to hash this message using sha512 algorithm. 5 | > 6 | > Send the answer back using `https://ringzer0team.com/challenges/13/[your_hash]`. 7 | 8 | The message is non-static and refreshes with each request. Below is an example 9 | of the payload's format. 10 | 11 | ```text 12 | ----- BEGIN MESSAGE ----- 13 | eq8Y9R3SI7KYoodjSzzCIYGfhAodz7EEoCsokm6SjGHyVLHDa75IVBO3226sZAWe2fsdroWBVtZG4x95v5Dhxiapa6H0wu4pzntQBfinz8TuwSpROTYb1Zr1VYSijNyI0RpsWxFmwpGT7VALFpNwe4o0T682KwABePT1dpdAEJjCvJe0ZRm4LBVuyUm8hNzlsjcwyfW3P5vaFA1uhepTFae3Vr124rdmAgIYlvS0qd1VETgMXwvsxzliQdaLudXUjwJvRrm8veUZX0BKmX3JnfS4iSFDWso6PXrxfEwAIgqw6S6jF0TS5BMejhH6AV2fJkDOOZfn5wJ2eGcJwVrsn4wwb4sBQlHpvb491anWwWPAtR9PDr7QludnowP4Hnk2oe2fff2B2H2lp11SjZzvjCIxYnswACoPHhUNnNefl6qAYij77Jtgb1E0fWmGpBlXI6AVJF1UBilqqvon4Hu6zYWEL8a1zmO8ifURKLCcUOsa9Ho4eI0DxM78L8ZbkE9tJUakwDmghFhhcvbh42KrEIpgHfhRKhaj1buoFGuNcBVfXXmRPX8kvoq2txK3FLdxNxLi45W7xHckuo19bZjxezqyX1rtCvQgTrpOmbLJINT32L23BcrFCH3qylJ1Hp7qGm5SoGsWkcPcNI5fLmKdUEtiQ2ani7EOkzxy6PlgS1iwzeBarcebHxknqkByi6dswARsg2zYTHliMMj3On5lLfz2q0ryWvRiVyB2q0R9y2iaFs3kGYwi4VakMsIyNpHzN9r4093o2coxuiH17391O9bqsKP5ZnvDnNxdMrrEuG1POzGLsFC7FEoXe4T4ifxvSVyvdQZxmRc0hJCze5xJzLxDFgyNmW84HxpLdf9pXcg4LIuPDRp3sMxYTVC5HA0fYfQ1lPh8So3tWn9q5oko1HcLsEHZ5x4TCLLOrTM97GtUUsbPHl3yS5abAH0v4VfxwRbNAOMyk5j4okKVwDkeykgZR6kMSq9e8bSzPvX0q6VFhvqDYBInLOctLn6tE6yC 14 | ----- END MESSAGE ----- 15 | ``` 16 | -------------------------------------------------------------------------------- /src/classic-sudoku/readme.md: -------------------------------------------------------------------------------- 1 | Classic Sudoku 2 | -------------- 3 | 4 | No instructions are provided in the problem statement for challenge 143, other 5 | than to SSH into a server. Once connected, the following prompt is displayed: 6 | 7 | > The sudoku challenge 8 | > 9 | > ```text 10 | > +---+---+---+---+---+---+---+---+---+ 11 | > | | 7 | 6 | | | 2 | | 9 | 4 | 12 | > +---+---+---+---+---+---+---+---+---+ 13 | > | 8 | | 2 | | 9 | 4 | | 7 | 6 | 14 | > +---+---+---+---+---+---+---+---+---+ 15 | > | 3 | 9 | | 5 | | | | | 2 | 16 | > +---+---+---+---+---+---+---+---+---+ 17 | > | 7 | | 8 | 1 | | | 9 | 4 | 5 | 18 | > +---+---+---+---+---+---+---+---+---+ 19 | > | | 2 | | | | | 7 | | 8 | 20 | > +---+---+---+---+---+---+---+---+---+ 21 | > | 9 | | 5 | | 6 | | 1 | | 3 | 22 | > +---+---+---+---+---+---+---+---+---+ 23 | > | 6 | 8 | 1 | | | 9 | 4 | | | 24 | > +---+---+---+---+---+---+---+---+---+ 25 | > | | 3 | 9 | 4 | 5 | | 6 | 8 | 1 | 26 | > +---+---+---+---+---+---+---+---+---+ 27 | > | | 5 | 7 | 6 | | | | | 9 | 28 | > +---+---+---+---+---+---+---+---+---+ 29 | > ``` 30 | > 31 | > Solve this sudoku in less than 10 seconds and you'll get the flag. 32 | > 33 | > Submit all the sudoku table using this format from left to right 1,2,3,4,5,6,7,8,9,2,3,4,5,6,7,8,9,1... 34 | 35 | A new Sudoku grid is generated upon each connection. After responding back with 36 | a valid serialized Sudoku grid, the flag is revealed. 37 | -------------------------------------------------------------------------------- /src/read-me-if-you-can/symbols.json: -------------------------------------------------------------------------------- 1 | { 2 | "8646821": "q", 3 | "31531178": "R", 4 | "104706980": "6", 5 | "183058705": "o", 6 | "191450619": "E", 7 | "324778799": "n", 8 | "391296927": "7", 9 | "422918302": "i", 10 | "488199255": "x", 11 | "525982920": "L", 12 | "532879883": "b", 13 | "696506465": "Y", 14 | "701438604": "l", 15 | "710474125": "S", 16 | "799493156": "4", 17 | "863375218": "G", 18 | "888561681": "I", 19 | "982678587": "g", 20 | "1028265515": "t", 21 | "1092505745": "H", 22 | "1116396643": "w", 23 | "1135313267": "k", 24 | "1383423990": "1", 25 | "1438261745": "0", 26 | "1469864056": "e", 27 | "1472672325": "p", 28 | "1475578827": "j", 29 | "1563884877": "W", 30 | "1709047119": "A", 31 | "2060903857": "h", 32 | "2162650623": "z", 33 | "2174902569": "V", 34 | "2446383421": "C", 35 | "2472585883": "d", 36 | "2473880167": "F", 37 | "2524500150": "5", 38 | "2534668695": "v", 39 | "2603146196": "a", 40 | "2651504510": "9", 41 | "2673806141": "K", 42 | "2683387768": "N", 43 | "2733031665": "X", 44 | "2764022813": "O", 45 | "2964192331": "s", 46 | "2985197801": "D", 47 | "3113657487": "u", 48 | "3127416323": "J", 49 | "3299841736": "3", 50 | "3387906647": "B", 51 | "3436767039": "f", 52 | "3470270236": "Q", 53 | "3558883810": "m", 54 | "3663278029": "8", 55 | "3712892104": "y", 56 | "3741392787": "c", 57 | "3753609351": "P", 58 | "3879718157": "M", 59 | "3974940903": "T", 60 | "4034465881": "2", 61 | "4115144583": "Z", 62 | "4143092837": "U", 63 | "4243035808": "r" 64 | } 65 | -------------------------------------------------------------------------------- /src/number-game/solve.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict'; 4 | 5 | const spawn = require('child_process').spawn, 6 | Progress = require('progress'); 7 | 8 | const config = require('./config'); 9 | 10 | const commandLine = 11 | [ 12 | '-p', 13 | config.password, 14 | 'ssh', 15 | '-tt', 16 | '-oStrictHostKeyChecking=no', 17 | '-oUserKnownHostsFile=/dev/null', 18 | `${config.username}@${config.host}`, 19 | '-p', 20 | config.port 21 | ]; 22 | 23 | const progress = new Progress('[:bar] :percent :etas', 24 | { 25 | complete: '=', 26 | incomplete: ' ', 27 | clear: true, 28 | width: 50, 29 | total: 10 30 | }); 31 | 32 | ((ssh) => 33 | { 34 | const upperBound = (1 << 15); 35 | 36 | let [lo, hi] = [0, upperBound]; 37 | 38 | const getGuess = () => (lo + ((hi - lo) & 1) + ((hi - lo) >> 1)), 39 | makeGuess = () => ssh.stdin.write(`${getGuess()}\n`); 40 | 41 | ssh.stdout.on('data', (stdout) => 42 | { 43 | const output = stdout.toString(); 44 | 45 | if(/find\s+the\s+right/i.test(output)) makeGuess(); 46 | 47 | else if(/too\s+big/i.test(output)) 48 | { 49 | hi = (getGuess() - 1); 50 | makeGuess(); 51 | } 52 | 53 | else if(/too\s+small/i.test(output)) 54 | { 55 | lo = (getGuess() + 1); 56 | makeGuess(); 57 | } 58 | 59 | else if(/you\s+got/i.test(output)) 60 | { 61 | progress.tick(); 62 | 63 | if(/you\s+beat/i.test(output)) 64 | { 65 | console.log(output.match(/(flag-.*)/i)[0].trim()); 66 | process.exit(); 67 | } 68 | 69 | else 70 | { 71 | [lo, hi] = [0, upperBound]; 72 | makeGuess(); 73 | } 74 | } 75 | }); 76 | })(spawn('sshpass', commandLine)); 77 | -------------------------------------------------------------------------------- /src/ask-your-grandpa/util/visualize.js: -------------------------------------------------------------------------------- 1 | (() => 2 | { 3 | function initializeCanvas(canvas, context, image, width) 4 | { 5 | canvas.width = width; 6 | canvas.height = (canvas.width / image.width) * image.height; 7 | context.drawImage(image, 0, 0, canvas.width, canvas.height); 8 | } 9 | 10 | function verticalHelper(canvas, context) 11 | { 12 | const xOffset = canvas.getBoundingClientRect().left; 13 | 14 | let i = 0; 15 | 16 | canvas.addEventListener('click', (event) => 17 | { 18 | context.save(); 19 | context.lineWidth = 1; 20 | context.strokeStyle = '#f00'; 21 | 22 | const x = (event.layerX - xOffset); 23 | 24 | console.log(++i, x); 25 | 26 | context.moveTo(x, 0); 27 | context.lineTo(x, canvas.height); 28 | context.stroke(); 29 | context.restore(); 30 | }); 31 | } 32 | 33 | function horizontalHelper(canvas, context) 34 | { 35 | const yOffset = canvas.getBoundingClientRect().top; 36 | 37 | let i = 0; 38 | 39 | canvas.addEventListener('click', (event) => 40 | { 41 | context.save(); 42 | context.lineWidth = 1; 43 | context.strokeStyle = '#f00'; 44 | 45 | const y = (event.layerY - yOffset); 46 | 47 | console.log(++i, y); 48 | 49 | context.moveTo(0, y); 50 | context.lineTo(canvas.width, y); 51 | context.stroke(); 52 | context.restore(); 53 | }); 54 | } 55 | 56 | document.addEventListener('DOMContentLoaded', () => 57 | { 58 | const canvas = document.querySelector('#viewport'), 59 | context = canvas.getContext('2d'); 60 | 61 | const background = new Image(); 62 | 63 | background.src = '../data/card.jpg'; 64 | 65 | background.onload = () => 66 | { 67 | initializeCanvas(canvas, context, background, 1600); 68 | 69 | horizontalHelper(canvas, context); 70 | // verticalHelper(canvas, context); 71 | }; 72 | }); 73 | })(); 74 | -------------------------------------------------------------------------------- /src/ask-your-grandpa-again/util/visualize.js: -------------------------------------------------------------------------------- 1 | (() => 2 | { 3 | function initializeCanvas(canvas, context, image, width) 4 | { 5 | canvas.width = width; 6 | canvas.height = (canvas.width / image.width) * image.height; 7 | context.drawImage(image, 0, 0, canvas.width, canvas.height); 8 | } 9 | 10 | function verticalHelper(canvas, context) 11 | { 12 | const xOffset = canvas.getBoundingClientRect().left; 13 | 14 | let i = 0; 15 | 16 | canvas.addEventListener('click', (event) => 17 | { 18 | context.save(); 19 | context.lineWidth = 1; 20 | context.strokeStyle = '#f00'; 21 | 22 | const x = (event.layerX - xOffset); 23 | 24 | console.log(++i, x); 25 | 26 | context.moveTo(x, 0); 27 | context.lineTo(x, canvas.height); 28 | context.stroke(); 29 | context.restore(); 30 | }); 31 | } 32 | 33 | function horizontalHelper(canvas, context) 34 | { 35 | const yOffset = canvas.getBoundingClientRect().top; 36 | 37 | let i = 0; 38 | 39 | canvas.addEventListener('click', (event) => 40 | { 41 | context.save(); 42 | context.lineWidth = 1; 43 | context.strokeStyle = '#f00'; 44 | 45 | const y = (event.layerY - yOffset); 46 | 47 | console.log(++i, y); 48 | 49 | context.moveTo(0, y); 50 | context.lineTo(canvas.width, y); 51 | context.stroke(); 52 | context.restore(); 53 | }); 54 | } 55 | 56 | document.addEventListener('DOMContentLoaded', () => 57 | { 58 | const canvas = document.querySelector('#viewport'), 59 | context = canvas.getContext('2d'); 60 | 61 | const background = new Image(); 62 | 63 | background.src = '../data/card-a.jpg'; 64 | 65 | background.onload = () => 66 | { 67 | initializeCanvas(canvas, context, background, 1600); 68 | 69 | horizontalHelper(canvas, context); 70 | // verticalHelper(canvas, context); 71 | }; 72 | }); 73 | })(); 74 | -------------------------------------------------------------------------------- /src/read-me-if-you-can/lib/segment.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = (cells, background) => 4 | { 5 | background = (typeof background === 'undefined') ? ' ' : background; 6 | 7 | cells = trimVertical(cells); 8 | 9 | const symbolBounds = getBounds(cells, background); 10 | 11 | for(var result = []; result.push([]) < symbolBounds.length;); 12 | 13 | cells.forEach((row) => 14 | { 15 | symbolBounds.forEach((bounds, index) => 16 | { 17 | result[index].push(row.substring(bounds[0], bounds[1] + 1)); 18 | }); 19 | }); 20 | 21 | result = result.map((symbol) => trimVertical(symbol)); 22 | 23 | return result; 24 | } 25 | 26 | function trimVertical(cells) 27 | { 28 | for(let i = 0; i < cells.length; ++i) 29 | { 30 | if(/^\s+$/.test(cells[i])) cells.splice(i--, 1); 31 | 32 | else break; 33 | } 34 | 35 | for(let i = cells.length - 1; i >= 0; --i) 36 | { 37 | if(/^\s+$/.test(cells[i])) cells.splice(i, 1); 38 | 39 | else break; 40 | } 41 | 42 | return cells; 43 | } 44 | 45 | function getBounds(cells, background) 46 | { 47 | let result = []; 48 | 49 | const width = cells[0].length, 50 | height = cells.length; 51 | 52 | let lastColumn = 0; 53 | 54 | for(let x = 0; x < width; ++x) 55 | { 56 | let isEmptyColumn = true; 57 | 58 | for(let y = 0; y < height; ++y) 59 | { 60 | if(cells[y][x] != background) 61 | { 62 | isEmptyColumn = false; 63 | break; 64 | } 65 | } 66 | 67 | if(!isEmptyColumn) 68 | { 69 | result.push(x); 70 | lastColumn = x; 71 | } 72 | } 73 | 74 | result = result.filter((value, index, source) => 75 | { 76 | if(!index) return true; 77 | if((source[index + 1] - value) > 1) return true; 78 | if((value - source[index - 1] > 1)) return true; 79 | 80 | return false; 81 | }); 82 | 83 | result.push(lastColumn); 84 | 85 | result = result.reduce((result, value, index, source) => 86 | { 87 | if(!(index & 1)) result.push(source.slice(index, index + 2)); 88 | 89 | return result; 90 | }, []); 91 | 92 | return result; 93 | } 94 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # RingZer0 Programming CTF Solutions 2 | 3 | This repository houses my personal solutions to 4 | [RingZer0's programming challenges][home]. 5 | 6 | It is strongly encouraged that you do not view my solutions unless you've 7 | already solved the relevant problems yourself. 8 | 9 | 10 | ## Background 11 | 12 | Each challenge consists of some (typically non-static) dataset that must be 13 | processed according to the problem statement and submitted back to the specified 14 | URI via a `GET` request. Assuming a correct and timely submission, a level 15 | unlock flag is injected into the server's response which must then be extracted 16 | and `POST`-ed back to the challenge endpoint in question. 17 | 18 | Most challenges have a dataset/solution TTL of a few seconds, so performance 19 | isn't that important. 20 | 21 | 22 | ## Prerequisites 23 | 24 | ### Session Cookies 25 | 26 | Authentication is cookie-based. The current workflow of getting and storing 27 | session cookies is as follows: 28 | 29 | - Manually log in via the site's `/login` endpoint, 30 | - Execute `document.cookie` via devtools, 31 | - Save the `PHPSESSID` cookie in `/session.json`. 32 | 33 | Given the relatively low number of published programming challenges at the time 34 | of this writing, automation of the above steps does not seem warranted. 35 | 36 | ### Local Environment 37 | 38 | - Linux 39 | - Node.js >= v6.2.2 40 | - Python >= v3.4.3 41 | - GCC >= v4.8.4 42 | 43 | 44 | ## Development Notes 45 | 46 | The `/session.json` file changes relatively often. In order to not pollute the 47 | commit log, set the `assume-unchanged` bit on it after cloning: 48 | 49 | ```text 50 | $ git update-index --assume-unchanged session.json 51 | ``` 52 | 53 | 54 | ## License and Copyright 55 | 56 | All original code is released under the [MIT license][mit], unless otherwise 57 | specified. 58 | 59 | All referenced product names, trademarks, logos, and images are property of 60 | their respective owners. 61 | 62 | 63 | [home]: https://ringzer0team.com/challenges/ 64 | "Challenges - RingZer0 CTF" 65 | 66 | [mit]: http://opensource.org/licenses/MIT/ 67 | "The MIT License (MIT)" 68 | -------------------------------------------------------------------------------- /src/execute-me-if-you-can-again/notes.md: -------------------------------------------------------------------------------- 1 | ```text 2 | ----- BEGIN SHELLCODE ----- 3 | \xeb\x4d\x5e\x66\x83\xec\x0c\x48\x89\xe0\x48\x31\xc9 4 | \x68\x9e\x5f\x2a\x7d\x48\x89\xcf\x80\xc1\x0c\x40\x8a 5 | \x3e\x40\xf6\xd7\x40\x88\x38\x48\xff\xc6\x68\x93\x2b 6 | \x04\x92\x48\xff\xc0\xe2\xea\x2c\x0c\x48\x89\xc6\x68 7 | \xa2\xf5\xc6\x16\x48\x31\xc0\x48\x89\xc7\x40\xb7\x01 8 | \x04\x01\x48\x89\xc2\x80\xc2\x0b\x0f\x05\x48\x31\xc0 9 | \x04\x3c\x0f\x05\xe8\xae\xff\xff\xff\xbd\xaa\xbe\xab 10 | \xb5\xb9\xce\xa9\xce\xcf\xae\xcb\xbf\x79\x11\xfb\xba 11 | \x6b\x0f\xe9\x1f\xbc\x7f\x36\x2b\x44\x5e\x68\x1d\x1e 12 | \x8f\x71\x5b\x52\x41\x4e\x44\x53\x54\x52\x32\x5d 13 | ----- END SHELLCODE ----- 14 | ``` 15 | 16 | ```text 17 | $ echo -n -e "\xeb\x4d\x5e\x66\x83\xec\x0c\x48\x89\xe0\x48\x31\xc9\x68\x9e\x5f\x2a\x7d\x48\x89\xcf\x80\xc1\x0c\x40\x8a\x3e\x40\xf6\xd7\x40\x88\x38\x48\xff\xc6\x68\x93\x2b\x04\x92\x48\xff\xc0\xe2\xea\x2c\x0c\x48\x89\xc6\x68\xa2\xf5\xc6\x16\x48\x31\xc0\x48\x89\xc7\x40\xb7\x01\x04\x01\x48\x89\xc2\x80\xc2\x0b\x0f\x05\x48\x31\xc0\x04\x3c\x0f\x05\xe8\xae\xff\xff\xff\xbd\xaa\xbe\xab\xb5\xb9\xce\xa9\xce\xcf\xae\xcb\xbf\x79\x11\xfb\xba\x6b\x0f\xe9\x1f\xbc\x7f\x36\x2b\x44\x5e\x68\x1d\x1e\x8f\x71\x5b\x52\x41\x4e\x44\x53\x54\x52\x32\x5d" | ndisasm -b64 - 18 | ``` 19 | 20 | ```text 21 | ┌───00000000 EB4D jmp short 0x4f ; -> 0x52 22 | │ ┌─00000002 5E pop rsi 23 | │ │ 00000003 6683EC0C sub sp,byte +0xc 24 | │ │ 00000007 4889E0 mov rax,rsp 25 | │ │ 0000000A 4831C9 xor rcx,rcx 26 | │ │ 0000000D 689E5F2A7D push qword 0x7d2a5f9e 27 | │ │ 00000012 4889CF mov rdi,rcx 28 | │ │ 00000015 80C10C add cl,0xc 29 | │ │ 00000018 408A3E mov dil,[rsi] 30 | │ │ 0000001B 40F6D7 not dil 31 | │ │ 0000001E 408838 mov [rax],dil 32 | │ │ 00000021 48FFC6 inc rsi 33 | │ │ 00000024 68932B0492 push qword 0xffffffff92042b93 34 | │ │ 00000029 48FFC0 inc rax 35 | │ │ 0000002C E2EA loop 0x18 36 | │ │ 0000002E 2C0C sub al,0xc 37 | │ │ 00000030 4889C6 mov rsi,rax 38 | │ │ 00000033 68A2F5C616 push qword 0x16c6f5a2 39 | │ │ 00000038 4831C0 xor rax,rax 40 | │ │ 0000003B 4889C7 mov rdi,rax 41 | │ │ 0000003E 40B701 mov dil,0x1 42 | │ │ 00000041 0401 add al,0x1 43 | │ │ 00000043 4889C2 mov rdx,rax 44 | │ │ 00000046 80C20B add dl,0xb 45 | │ │ 00000049 0F05 loadall286 46 | │ │ 0000004B 4831C0 xor rax,rax 47 | │ │ 0000004E 043C add al,0x3c 48 | │ │ 00000050 0F05 loadall286 49 | └─┴─00000052 E8AEFFFFFF call qword 0x5 ; -> 0x02 50 | 00000057 BDAABEABB5 mov ebp,0xb5abbeaa 51 | 0000005C B9CEA9CECF mov ecx,0xcfcea9ce 52 | 00000061 AE scasb 53 | 00000062 CB retf 54 | 00000063 BF7911FBBA mov edi,0xbafb1179 55 | 00000068 6B0FE9 imul ecx,[rdi],byte -0x17 56 | 0000006B 1F db 0x1f 57 | 0000006C BC7F362B44 mov esp,0x442b367f 58 | 00000071 5E pop rsi 59 | 00000072 681D1E8F71 push qword 0x718f1e1d 60 | 00000077 5B pop rbx 61 | 00000078 52 push rdx 62 | 00000079 41 rex.b 63 | 0000007A 4E rex.wrx 64 | 0000007B 4453 push rbx 65 | 0000007D 54 push rsp 66 | 0000007E 52 push rdx 67 | 0000007F 32 db 0x32 68 | 00000080 5D pop rbp 69 | ``` 70 | -------------------------------------------------------------------------------- /src/ask-your-grandpa/render.js: -------------------------------------------------------------------------------- 1 | (() => 2 | { 3 | const imageWidth = 1600; 4 | 5 | const xOffsets = 6 | [ 7 | 55, 75, 94, 112, 131, 152, 169, 188, 207, 226, 244, 265, 282, 302, 321, 8 | 339, 358, 376, 396, 415, 433, 452, 470, 490, 508, 527, 546, 564, 583, 9 | 603, 621, 640, 659, 677, 696, 715, 734, 753, 772, 789, 810, 829, 846, 10 | 865, 884, 903, 921, 940, 961, 979, 995, 1016, 1035, 1056, 1072, 1094, 11 | 1112, 1131, 1150, 1170, 1187, 1207, 1227, 1244, 1264, 1281, 1300, 1320, 12 | 1338, 1358, 1376, 1396, 1413, 1430, 1450, 1469, 1489, 1505, 1525, 1544 13 | ]; 14 | 15 | const yOffsets = 16 | [ 17 | 61, 116, 168, 223, 277, 330, 387, 439, 496, 549, 604, 658 18 | ]; 19 | 20 | const mapping = 21 | { 22 | '0' : '0', 23 | '1' : '1', 24 | '2' : '2', 25 | '3' : '3', 26 | '4' : '4', 27 | '5' : '5', 28 | '6' : '6', 29 | '7' : '7', 30 | '8' : '8', 31 | '9' : '9', 32 | 'y,1' : 'A', 33 | 'y,2' : 'B', 34 | 'y,3' : 'C', 35 | 'y,4' : 'D', 36 | 'y,5' : 'E', 37 | 'y,6' : 'F', 38 | 'y,7' : 'G', 39 | 'y,8' : 'H', 40 | 'y,9' : 'I', 41 | 'x,1' : 'J', 42 | 'x,2' : 'K', 43 | 'x,3' : 'L', 44 | 'x,4' : 'M', 45 | 'x,5' : 'N', 46 | 'x,6' : 'O', 47 | 'x,7' : 'P', 48 | 'x,8' : 'Q', 49 | 'x,9' : 'R', 50 | '0,2' : 'S', 51 | '0,3' : 'T', 52 | '0,4' : 'U', 53 | '0,5' : 'V', 54 | '0,6' : 'W', 55 | '0,7' : 'X', 56 | '0,8' : 'Y', 57 | '0,9' : 'Z', 58 | '3,8' : '#', 59 | '0,3,8': ',', 60 | 'x,3,8': '$', 61 | 'y,3,8': '.', 62 | 'x' : '-', 63 | '4,8' : '@', 64 | '0,4,8': '%', 65 | 'x,4,8': '*', 66 | 'y,x,8': '<', 67 | '0,1' : '/', 68 | 'y,6,8': '+', 69 | '6,8' : '=', 70 | '0,5,8': '_', 71 | 'x,5,8': ')', 72 | 'y' : '&', 73 | '0,6,8': '>', 74 | '2,8' : ':', 75 | 'x,6,8': ';', 76 | '5,8' : "'", 77 | '0,7,8': '?', 78 | '7,8' : '"', 79 | 'x,2,8': '!', 80 | 'y,5,8': '(', 81 | '0,3,8': ',' 82 | }; 83 | 84 | function initializeCanvas(canvas, context, image, width) 85 | { 86 | canvas.width = width; 87 | canvas.height = (canvas.width / image.width) * image.height; 88 | context.drawImage(image, 0, 0, canvas.width, canvas.height); 89 | } 90 | 91 | function drawCircle(context, x, y, radius, color) 92 | { 93 | context.save(); 94 | context.fillStyle = color; 95 | context.beginPath(); 96 | context.arc(x, y, radius, 0, 2 * Math.PI, false); 97 | context.fill(); 98 | context.restore(); 99 | } 100 | 101 | document.addEventListener('DOMContentLoaded', () => 102 | { 103 | const canvas = document.querySelector('#viewport'), 104 | context = canvas.getContext('2d'); 105 | 106 | const background = new Image(); 107 | 108 | background.src = './data/card.jpg'; 109 | 110 | background.onload = () => 111 | { 112 | initializeCanvas(canvas, context, background, imageWidth); 113 | 114 | const log = document.querySelector('#log'); 115 | 116 | xOffsets.forEach((x, i) => 117 | { 118 | const pattern = []; 119 | 120 | yOffsets.forEach((y, j) => 121 | { 122 | drawCircle(context, x, y, 3, 'rgba(255, 255, 0, 0.4)'); 123 | 124 | const rgba = context.getImageData(x, y, 1, 1).data; 125 | 126 | if(rgba[0] === 0x66 && rgba[1] === 0x66 && !rgba[2]) 127 | { 128 | drawCircle(context, x, y, 5, '#f00'); 129 | 130 | pattern.push(j < 2 ? ['y', 'x'][j] : (j - 2)); 131 | } 132 | }); 133 | 134 | log.innerText += (pattern.length ? mapping[pattern.join(',')] : ' '); 135 | }); 136 | }; 137 | }); 138 | })(); 139 | -------------------------------------------------------------------------------- /src/ask-your-grandpa-again/render.js: -------------------------------------------------------------------------------- 1 | (() => 2 | { 3 | const imageWidth = 1600; 4 | 5 | const xOffsets = 6 | [ 7 | 55, 75, 94, 112, 131, 152, 169, 188, 207, 226, 244, 265, 282, 302, 321, 8 | 339, 358, 376, 396, 415, 433, 452, 470, 490, 508, 527, 546, 564, 583, 9 | 603, 621, 640, 659, 677, 696, 715, 734, 753, 772, 789, 810, 829, 846, 10 | 865, 884, 903, 921, 940, 961, 979, 995, 1016, 1035, 1056, 1072, 1094, 11 | 1112, 1131, 1150, 1170, 1187, 1207, 1227, 1244, 1264, 1281, 1300, 1320, 12 | 1338, 1358, 1376, 1396, 1413, 1430, 1450, 1469, 1489, 1505, 1525, 1544 13 | ]; 14 | 15 | const yOffsets = 16 | [ 17 | 61, 116, 168, 223, 277, 330, 387, 439, 496, 549, 604, 658 18 | ]; 19 | 20 | const mapping = 21 | { 22 | '0' : '0', 23 | '1' : '1', 24 | '2' : '2', 25 | '3' : '3', 26 | '4' : '4', 27 | '5' : '5', 28 | '6' : '6', 29 | '7' : '7', 30 | '8' : '8', 31 | '9' : '9', 32 | 'y,1' : 'A', 33 | 'y,2' : 'B', 34 | 'y,3' : 'C', 35 | 'y,4' : 'D', 36 | 'y,5' : 'E', 37 | 'y,6' : 'F', 38 | 'y,7' : 'G', 39 | 'y,8' : 'H', 40 | 'y,9' : 'I', 41 | 'x,1' : 'J', 42 | 'x,2' : 'K', 43 | 'x,3' : 'L', 44 | 'x,4' : 'M', 45 | 'x,5' : 'N', 46 | 'x,6' : 'O', 47 | 'x,7' : 'P', 48 | 'x,8' : 'Q', 49 | 'x,9' : 'R', 50 | '0,2' : 'S', 51 | '0,3' : 'T', 52 | '0,4' : 'U', 53 | '0,5' : 'V', 54 | '0,6' : 'W', 55 | '0,7' : 'X', 56 | '0,8' : 'Y', 57 | '0,9' : 'Z', 58 | '3,8' : '#', 59 | '0,3,8': ',', 60 | 'x,3,8': '$', 61 | 'y,3,8': '.', 62 | 'x' : '-', 63 | '4,8' : '@', 64 | '0,4,8': '%', 65 | 'x,4,8': '*', 66 | 'y,x,8': '<', 67 | '0,1' : '/', 68 | 'y,6,8': '+', 69 | '6,8' : '=', 70 | '0,5,8': '_', 71 | 'x,5,8': ')', 72 | 'y' : '&', 73 | '0,6,8': '>', 74 | '2,8' : ':', 75 | 'x,6,8': ';', 76 | '5,8' : "'", 77 | '0,7,8': '?', 78 | '7,8' : '"', 79 | 'x,2,8': '!', 80 | 'y,5,8': '(', 81 | '0,3,8': ',' 82 | }; 83 | 84 | function appendGroup(container) 85 | { 86 | let wrapper = document.createElement('section'), 87 | canvas = document.createElement('canvas'), 88 | pre = document.createElement('pre'); 89 | 90 | canvas = wrapper.appendChild(canvas); 91 | pre = wrapper.appendChild(pre); 92 | wrapper = container.appendChild(wrapper); 93 | 94 | const result = 95 | { 96 | container: wrapper, 97 | canvas: canvas, 98 | pre: pre 99 | }; 100 | 101 | return result; 102 | } 103 | 104 | function initializeCanvas(canvas, context, image, width) 105 | { 106 | canvas.width = width; 107 | canvas.height = (canvas.width / image.width) * image.height; 108 | context.drawImage(image, 0, 0, canvas.width, canvas.height); 109 | } 110 | 111 | function drawCircle(context, x, y, radius, color) 112 | { 113 | context.save(); 114 | context.fillStyle = color; 115 | context.beginPath(); 116 | context.arc(x, y, radius, 0, 2 * Math.PI, false); 117 | context.fill(); 118 | context.restore(); 119 | } 120 | 121 | function decode(imagePath, callback) 122 | { 123 | const canvas = document.createElement('canvas'), 124 | context = canvas.getContext('2d'); 125 | 126 | const background = new Image(); 127 | 128 | background.onload = () => 129 | { 130 | initializeCanvas(canvas, context, background, imageWidth); 131 | 132 | const result = []; 133 | 134 | xOffsets.forEach((x, i) => 135 | { 136 | const pattern = []; 137 | 138 | yOffsets.forEach((y, j) => 139 | { 140 | drawCircle(context, x, y, 2, 'rgba(255, 255, 0, 0.4)'); 141 | 142 | const rgba = context.getImageData(x, y, 1, 1).data; 143 | 144 | if(rgba[0] === 0x66 && rgba[1] === 0x66 && !rgba[2]) 145 | { 146 | pattern.push(j < 2 ? ['y', 'x'][j] : (j - 2)); 147 | } 148 | }); 149 | 150 | result.push(pattern.length ? mapping[pattern.join(',')] : ' '); 151 | }); 152 | 153 | callback(result.join('')); 154 | }; 155 | 156 | background.src = imagePath; 157 | } 158 | 159 | document.addEventListener('DOMContentLoaded', () => 160 | { 161 | const paths = 'abcdef'.split('').map(i => `./data/card-${i}.jpg`), 162 | cards = []; 163 | 164 | paths.forEach(path => decode(path, (result) => 165 | { 166 | if(cards.push(result) === paths.length) 167 | { 168 | const statements = cards.map((card) => 169 | ({ 170 | id: +card.substr(72).trim(), 171 | line: card 172 | })); 173 | 174 | const program = statements.sort((lhs, rhs) => (lhs.id - rhs.id)) 175 | .map(statement => statement.line) 176 | .join('\n'); 177 | 178 | document.querySelector('#log').innerText = program; 179 | } 180 | })); 181 | }); 182 | })(); 183 | -------------------------------------------------------------------------------- /src/hash-me-reloaded/readme.md: -------------------------------------------------------------------------------- 1 | Hash Me Reloaded 2 | ---------------- 3 | 4 | > You have 2 seconds to hash this message using sha512 algorithm. 5 | > 6 | > Send the answer back using `https://ringzer0team.com/challenges/14/[your_hash]`. 7 | 8 | The message is non-static and refreshes with each request. Below is an example 9 | of the payload's format. 10 | 11 | ```text 12 | ----- BEGIN MESSAGE ----- 13 | 01101110010101010100011001100010011010110110001100111000011010100011000101110110010001110111100001111010011110100110000101000100011100000011100001110001010100000111010101010010011001110101000101101000001101110011011001001000011101100100011001110010010010100111000001010111010010110100000101011001010010010100101001010001001101000110011101100101011101010100011001100110010110000101011001100101011001010100000101111001010101110100100001100110001100110100011001100011010000100011000001001000010100110111101001010111010001010110000101101101011101000100101001010110001110010100010100110010011001010101100101111000011010100100110101101001011011100101000101001010010011010100001101101000010100110111011101001101010101010101100001000011011100100100011100110010011001000110001000110010011100010111010101000010011000110111010100110101001101000111100101010101011100110100100101110111010000100101011001100100011000010111100001000110011010000110011000110010010101010011000001010001011011100110100001101101011001100110110001101111001110000100001001001010011110100100010000110011011101100111100001110011011001110101000000110000010000110110011101001101010001100110100001100001011000100111000001100111001100110011100100110110010010100110110101100100010101110111001101110000011000010111000101010001010010100101000101101011010000110110001101001000010101100110100101101110010011010100101101110101011100000110011101000011011100000110100001010011011101100110001001010010011100110100101100110100011101110111011101101110010011000111100001000101011100110011011001101011010000110111101001101101011000010110101101110110011011110101100000110110010010010110001101100011011000100111001001101011010101000100111001101101010000100011011001011000011101100111001101101011010010100011010001001000011001000110110101000100011011100100111100110010010000010100111101100100010101110011001100110001010100110100001000110011010101100100010001101100001101100110110101011010011010010100111001010110001101010011100101100101011001110100100100111000010011100100110101101100011001110011000000110000001110010111000101000110011001000110010001111001001101000101011000110000010110000100100001110100001110010100010001000110010110010100110101101010010010110100100101101010010011110100111101010011010011100111001001110101010110010111100101101011010011110111100001000010011010100100000101000101010010000111010101110000011110010110100101011000010100100110100001110001011011100011010100110010011101110100011001000001010001100110101101100101011011100101100001110111010010000100110101010101010100110111001001101000011010100100000101001001010011100011100000110011001100110111011101100010010100010110010101101010001101110111001001100110001100000100111101001011011100010110101001010110011101100111100001001010010100110011010101101100010000110100111001000011010010110101100000110011011010010100001000110010011000110111010101110000011001000110001001110100011011100011100101001100011100110101101001110000001100110110011101111010010011110100001001010111011011100110101101010011011110100100110101110111001100100110110101101010010101100111011001001100010011110111100000110101001101000100001000110111011011110100111100110111010110100011011001010111011001100101101000110010010001010100010101110101011100100101001001000101001110010110100001100111011101110011100101110100010001110101011001001111011010000111101001100011011001000111010101000100011000100100100101101001001110000111100101100101010101010100010000110100010011010011011101111001001101110110111101100111010000100110111101101110010010010100110001101110001100100110100000111000010010000111000001111001010010100111001101010011011001000111010001110010011011000111001001010000011100010110001101101001011010110101000001100111010010100100110101110101010100000110010101001010001100100100111001101100011001100100011101110011011001010110010001001001010000110100111000110000011011000101001001101011010000110011001101000011011010000110101001000101011100010111010101101010011101110011001101010111010100100100100100110001011100100100001001000110010000110100100001100010010101100100110001100110011101000110010101010011011010110111000001000001011101010101001101110100010101110011000001000011011100100110011101010111010000010100001101010000011011100110101101101111011001100100001001010000010010110011001101101110010011000101000001011001010100010011100000110011011110100110100101101010010110100100010000110001011010010111000001010010010011000100011101011000011110010011011101110001011001010110110001000001011100110111000100110001001110000011000101010110011011000100001101000001011000010110101001111010001100110100101001001001011000110111101001100010001101000100100101110010010011000110101001011001011110100100100101010111010100010100110100111000011001110011010001101111001110000011001001100110010101010110010101001001011010110110010101010011010010110011100001110011011010100110001001010010011010110011010101110001010000110100100001000001011100100011011000111000011001000100110101001011011000100101010001000110011100010101001101111001011101110100001101000100001101010100111001001000010011110110111001000111001101110111011101001000010100000100100001000011001101010110000101100001011101100111001000110110011101010111011001001010001101010111100001110100010000100100111001100010010110100110000101000100011100110011010101100111001100000100101101110101011101110100100001010001001100110110110101101111011101110110100101101111011101110100010001000110011101000101100100110000001100110101010001101110011011010110101100110001011011110110000100110001010100100111001101011000010110010110101001111000011010010100011000110101010110100111101001101001011001000101011001110001011100100110100001010100010101110100001001001000010011100111010101110010001100000100100001000010010100100101011001000010010010100100010001010101011110000111001000110011010101100111101001111010010100010110111101011001010110010111001001001010011001010100101001010010010110010111011001101001011101110011100001000100010011110101101001100001011001100100100001010111010010000110100001110000011100110100010101000111011011000111000000110110010010110011010101101100011110100101010101000100001110000101101001100011010100010100111001111001010110100110000101111000011100110100111101101101011101000101010101010101011001100111001100110001011101010100101101110110001100010101011001001011010110010111011101000111001110010101011001110001010000110101010101100111010001100100000101010101001100110111000101010101011100100100100101111010010001000011000101101010011011110011011101000010011001100111001001100011010000100110101001011001011000100011011101101011010010010011011000110110010110100111101001010010001101010011010101101001010100000101101001111001010000010110011100110111010110100100101101011001001110010101100101010111010000100011010001100101010001000111011001101110011100100111100001101011010000110011010101101000011110100101010101001000011010000101000101000100011100000111011001110011010011110101011101111010010011000100110100111001010000010100110101011000011011010110010001010011011100010100100001100100010001010101101001000001010011110111001101110111010101110101001101101000011101010101101001011000010110000110011001101010011001110101010100110110010001100111011001001001010001010101011101101011011100110011100001101111011000010111000001010110011001010101010001001100010001100111100100110011001100010110110001001100001110010100011101000010010101110111010001000111001101100100000101110001001100100011010101001101010000010100000101111001010011000101010001111000010110100101010101001110010011000101101001111000011011010111010101010111011001110110110100110111010100110110110001000100011010100011011101011000010100010011010001101111001101110101011101101011010010100110111001001011001110000101100101110101011101110100111001100101011000010111000000110011011110000100001001101111011010100100100101000001011010000111000101001100010011000100000101001010011110100110011101000100010011100110010001110000010110000100111001000100011110010100110101110010010101000011100000110101010110000011100001101011010100100111011101001101001101010100011001101011011101110100111001000010001101110110111100110001010010000100111100111000011000010111001101100010011100010110011101010000010101000100010101110010 14 | ----- END MESSAGE ----- 15 | ``` 16 | -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-05727d4b-0f68-4852-ba7a-9acffd6c80fa.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | ## ## ###### #### ## ## 25 | ## #### ## ## ## ## ### ## 26 | ## ## ## ## ## ## ## #### ## 27 | ## ## ## ## ## ## ## ##### # #### ## 28 | ## ## ## ###### ## ## ## ### ## ## ## 29 | ## ## ## ## ## ## ## ## ## ## ## ## 30 | ## ######## ## ## ## ## ## ## ## ## #### 31 | ## ## ## ## ## ## #### ##### ## ### 32 | ## ## ## ## ## ## ## ## ## ### 33 | ####### ## ## ###### #### # ###### ## ## 34 | ## ## 35 | ###### 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-05b6bff0-839d-47f3-a1f6-cef804a29b9c.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | ## ## ## ## ## ## 25 | ## ### ## #### ## ## 26 | ## #### ## ## ## ## ## 27 | ##### ## ### #### ## ## ## #### #### 28 | ## ## ### ## ## ## ## ## ## ## ## ## 29 | ## ## ## ## ## ## ## ## ## ## ## 30 | ####### ## ## ## #### ######## ## ## #### 31 | ## ## ## ## ## ### ## ## ## ## ## ## 32 | ## ### ## ## ## ### ## ## ## ## ## ## 33 | #### ## ## ## ## ## ## ## #### ## ## 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-069a0b8c-cef9-4259-ac51-9e15f58e89f7.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | ######## ## ## ## ### 25 | ## ## ## ## ## 26 | ## ## ## ## ## 27 | ## ## ## ## ## ## ## ## #### ## 28 | ## ## ## ######## ## ## ### ## ## 29 | ## ## ## ## ## #### ## ## 30 | ## ## ## ## ## #### ## ## 31 | #### ## ## ## ## ## ## ## 32 | #### ## ## ## ## ## ## ## 33 | ## ## ## ## ## ## ## #### 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-06a85a5a-cb4f-4c1d-9a49-8434f2d07224.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | ## ## ####### 25 | ## ## ## 26 | ## ## 27 | ### ## ### ## ## ## ## ## #### 28 | ## ### ## ## ## ## ## ###### ## ## 29 | ## ## ## #### ## ## ## ## ## 30 | ## ## ## ## ## ## ## ## ## 31 | ## ## ## #### ## ## ## ## ## 32 | ## ### ## ## ## ## ### ## ## ## 33 | ## ## ## ### ## ## ### ## ####### #### 34 | ## ## # ## 35 | ##### ###### 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-06e621c0-306b-4cdf-9a4e-be1719b98702.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | ## ## ## ## ##### 25 | #### ### ## ## ## ## 26 | ## ## #### ## ## ## # 27 | ##### ## ## ## ###### ## ## ## 28 | ## ## ## ## ## ## ######## ## 29 | ## ## ## ## ## ## ## ## 30 | ####### ######## ## ## ## ## ## 31 | ## ## ## ## ## ## ## ## ## # 32 | ## ### ## ## ## ## ## ## ## ## 33 | #### ## ## ## ###### ###### ## ## ##### 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-093579d6-ca04-4291-8d17-fcc9b93e606b.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | ####### ####### ##### 25 | ## ## ## ## ## 26 | ## ## ## ## 27 | ## ## ## ## #### ###### ##### ## 28 | ####### ## ### ## ## ## ## ## ## 29 | ##### ## ## ## ## ## ### 30 | ## ## ## ## ###### ####### ## ## 31 | ## ## ## ## ## ## ## ## ## 32 | ## ## ## ## ## ## ## ### ## ## 33 | ## ## ####### ## ###### #### ## ##### 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-0e88106a-3302-45ab-9e43-192054d07c5d.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | ## ## #### ###### ## ## ###### ## 25 | ## ## ## ## ## ## ### ### ## ## ## 26 | ## ## ## ## ## ## ######## ## ## ## 27 | ## ## ## ## ## ## ## ## ## ## ## ## ### 28 | ######## ## ## ## ## ## ## ## ###### ### ## 29 | ## ## ## ## ## ## ## ## ## ## ## ## ## 30 | ## ## ## ## ## ## ## ## ## ## ## ## ## 31 | ## ## ## #### ## ## ## ## ## ## ## ## 32 | ## ## ## ## ## ## ## ## ## ## ### ## 33 | ## ## #### # ###### ## ## ###### ## ### 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /src/read-me-if-you-can/data/captcha-0f46758f-00a1-4bc5-bbfb-91d3610b7c08.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | ## ## ## ## #### #### 25 | ## #### ## ## ## ## ## ## 26 | ## ## ## ## ## ## ## ## ## 27 | ## ## ## ## ## ## ## ## ##### ## ## 28 | ## ## ## ## ## ## ## #### ## ## ## ## 29 | #### ## ## ## ## ## ## ## ## ## ## 30 | #### ######## ## ## ## ## ## ## ## ## ## 31 | ## ## ## ## ######## ## ## ## ## #### 32 | ## ## ## ## ### ### ## ## ## ## ## ## 33 | ## ## ## ## ## ## #### ##### #### # 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | --------------------------------------------------------------------------------