├── .all-contributorsrc ├── .github └── workflows │ └── dockerhub.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── challenge-example.yml ├── challenge-waves.yml ├── crypto ├── Login Error │ ├── .dockerignore │ ├── Dockerfile │ ├── README.md │ ├── challenge.yml │ ├── ctf.xinetd │ ├── sol.py │ └── src │ │ ├── ques.py │ │ └── start.sh ├── Mein Kampf │ ├── README.md │ └── challenge.yml ├── Modern Clueless Child │ ├── Decryptor.py │ ├── Encryptor.py │ ├── README.md │ └── challenge.yml ├── Quick Math │ ├── README.md │ ├── challenge.yml │ └── generate.py ├── README.md ├── Rivest Shamir Adleman │ ├── README.md │ ├── challenge.yml │ ├── enc.txt │ └── generate.py ├── The Climb │ ├── README.md │ ├── challenge.yml │ ├── theclimb.java │ ├── theclimb.txt │ └── theclimbsol.java └── little RSA │ ├── README.md │ ├── a.txt │ ├── challenge.yml │ └── flag.zip ├── ctfd-init ├── ctfd.py ├── ctfup.yml ├── feedback └── Feedback │ ├── README.md │ └── challenge.yml ├── forensics ├── Archenemy │ ├── README.md │ ├── arched.png │ ├── challenge.yml │ └── flag.txt ├── Gradient sky │ ├── README.md │ ├── challenge.yml │ └── sky.jpg ├── In Your Eyes │ ├── README.md │ ├── challenge.yml │ └── coolguy.bmp ├── Panda │ ├── README.md │ ├── challenge.yml │ └── panda.zip ├── README.md └── unseen │ ├── README.md │ ├── challenge.yml │ ├── flag.txt │ ├── morse.wav │ └── nyc.png ├── linux ├── AKA │ ├── .dockerignore │ ├── Dockerfile │ ├── README.md │ ├── challenge.yml │ ├── ctf.xinetd │ └── src │ │ ├── flag.txt │ │ ├── script.sh │ │ └── start.sh ├── HTB 0x1 │ ├── README.md │ └── challenge.yml ├── HTB 0x2 │ ├── README.md │ ├── challenge.yml │ ├── models │ │ ├── db.js │ │ └── user.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── admin.html │ │ ├── home.html │ │ ├── index.html │ │ └── layouts │ │ │ └── main.html │ ├── routes │ │ ├── admin.js │ │ ├── extract.js │ │ └── zip.js │ └── server.js ├── HTB 0x3 │ ├── README.md │ └── challenge.yml ├── HTB 0x4 │ ├── README.md │ └── challenge.yml ├── HTB 0x5 │ ├── README.md │ └── challenge.yml ├── HTB 0x6 │ ├── README.md │ └── challenge.yml ├── README.md ├── Where am I │ ├── .dockerignore │ ├── Dockerfile │ ├── README.md │ ├── challenge.yml │ ├── flag.txt │ └── script.sh └── find32 │ ├── Dockerfile │ ├── README.md │ ├── challenge.yml │ ├── user1 │ ├── 1G1VJWPO │ │ ├── 2X82259Q │ │ ├── 8BHHDOCA │ │ ├── 9LNZ0ETP │ │ ├── D01U0OA5 │ │ ├── DC953402 │ │ ├── I0HK3F0Q │ │ ├── INUIDPFZ │ │ ├── JW5DHBI2 │ │ ├── K7H88QI2 │ │ ├── KTE9QN31 │ │ ├── MLNCZNJH │ │ ├── MT0ZF01M │ │ ├── MVYJ08ZU │ │ ├── OAVKKSIU │ │ ├── QON3WELD │ │ ├── SWD8ZKVQ │ │ ├── TQYI4JH2 │ │ ├── TZ4TM4KC │ │ ├── VU7UXE91 │ │ └── Y2F5YYPT │ ├── 1H19NXTO │ │ ├── 1TE2UPR9 │ │ ├── 1VQPZIUO │ │ ├── 2L9WVOQA │ │ ├── 2MMNROKS │ │ ├── 9YN7B5TM │ │ ├── C9EN38OZ │ │ ├── FI9WZ1NI │ │ ├── GVTHMJMC │ │ ├── JL8V5YGI │ │ ├── L97LN1SA │ │ ├── MAC4PGYS │ │ ├── NGT5TVLI │ │ ├── NJJ4FIMD │ │ ├── PF2KOY3A │ │ ├── PN7VNWMY │ │ ├── PRIT98R2 │ │ ├── QDZM9GU3 │ │ ├── VCSYBT6V │ │ ├── VUU3IP28 │ │ └── W7N3EQ8A │ ├── 1VWD0HTH │ │ ├── 21X763CW │ │ ├── 2FFS4207 │ │ ├── 40HE4X61 │ │ ├── 5DNAUH8Z │ │ ├── 5FOOLY10 │ │ ├── 8AYM8OQ9 │ │ ├── 9TM8NR4D │ │ ├── BW90182E │ │ ├── HL9OQ59W │ │ ├── IW0M1T97 │ │ ├── LR9H9RJ4 │ │ ├── OLHQ2XMI │ │ ├── PJU5YNCE │ │ ├── PMWQY71J │ │ ├── QXKDIR8P │ │ ├── RHZ4QIGE │ │ ├── TIE17JV7 │ │ ├── UI3CYXEH │ │ ├── VQHX8Y2S │ │ └── XAGJI6C3 │ ├── 3Y0A3S1M │ │ ├── 17HSIYXQ │ │ ├── 3C71HLAH │ │ ├── 4FMGJMPX │ │ ├── 784MLE5E │ │ ├── 7K2HS4Y8 │ │ ├── 84XR0NUK │ │ ├── 9EO10QRH │ │ ├── AK1L1RB0 │ │ ├── BDYM2DL3 │ │ ├── EMAPY1SV │ │ ├── I0GJ1ZT2 │ │ ├── J634H910 │ │ ├── JQJIA3QC │ │ ├── L25P2X6S │ │ ├── LA28D194 │ │ ├── LKUM0ZLZ │ │ ├── PX7XX8MV │ │ ├── WXW4GEDU │ │ ├── Y41T1L0P │ │ └── YZOFT123 │ ├── 4YR6VE5U │ │ ├── 1DB6A3RZ │ │ ├── 4UOCNFI8 │ │ ├── 5714I59N │ │ ├── 74EIPRM5 │ │ ├── 9UGJX4Z2 │ │ ├── A8DWWULS │ │ ├── BT4Q0KSC │ │ ├── FPLW13DY │ │ ├── JDVT05Q1 │ │ ├── K80WPMFB │ │ ├── KOIIQDDB │ │ ├── KRTDDSYK │ │ ├── M4PSP87C │ │ ├── MWE4SJWL │ │ ├── O20W8JF2 │ │ ├── OJTT5YOZ │ │ ├── P7U25CJI │ │ ├── UFF3VJES │ │ ├── WFLCEXOU │ │ └── ZXWG1CJB │ ├── 5AE74CKX │ │ ├── 4E5VZT6C │ │ ├── 9MP89P4E │ │ ├── BP1QOD2S │ │ ├── CR8AY5W7 │ │ ├── DHI6XKWG │ │ ├── EBGAB2T7 │ │ ├── EUXTE3IX │ │ ├── F9T58X71 │ │ ├── FMZXZWMD │ │ ├── HKX85U5A │ │ ├── IXLBEBRX │ │ ├── LP29J6MU │ │ ├── PBMIEOJ1 │ │ ├── Q3VV2P04 │ │ ├── QYBFIDQA │ │ ├── T0ST0WFT │ │ ├── TOD5ZOWV │ │ ├── XBJ59Z81 │ │ ├── XVXM67UN │ │ └── Z8TPG2SQ │ ├── 5J065457 │ │ ├── 1EBY9SNN │ │ ├── 1W6RAWEU │ │ ├── 41W0HO2L │ │ ├── 6IS45I48 │ │ ├── 7UYWYDBZ │ │ ├── 9R6FWLZQ │ │ ├── 9SMDHC89 │ │ ├── C75ZYB8Q │ │ ├── HWR8ILW8 │ │ ├── M40WA6L0 │ │ ├── M8XE7P73 │ │ ├── P7ZSATBS │ │ ├── QZBKI0LI │ │ ├── S9796BM8 │ │ ├── SGCS15D7 │ │ ├── STYTHKQE │ │ ├── TNNLXAMK │ │ ├── U9KXZUZT │ │ ├── VS2QLP5T │ │ └── WW5L7JNK │ ├── ABBAXG64 │ │ ├── 3SF18NHO │ │ ├── 4VTQDZXG │ │ ├── 5D8MSKXV │ │ ├── 6IGISUOK │ │ ├── 6JJ8M6EQ │ │ ├── 6NZ8YTHN │ │ ├── AZF6YNNW │ │ ├── EDL1IX5Y │ │ ├── EPIGX1NO │ │ ├── KQFVQJ3J │ │ ├── N9ZX32OP │ │ ├── OM4BZRJ6 │ │ ├── P8H2QJZE │ │ ├── RXHHGT3D │ │ ├── TP72DLYC │ │ ├── VFFKFKFP │ │ ├── VOAZ2FLA │ │ ├── W569XUGK │ │ ├── XZ5KZZPR │ │ └── YGAD81HL │ ├── CJH28H7U │ │ ├── 0K8HTQUI │ │ ├── 0L51GUQ6 │ │ ├── 3Y6ULSYJ │ │ ├── 79VJFIU5 │ │ ├── 8O23G30S │ │ ├── 9KQEWTD4 │ │ ├── AK6PZX3H │ │ ├── BAL0FX4Y │ │ ├── C1KDRW2G │ │ ├── DQZAE7MY │ │ ├── EMOTUDML │ │ ├── HJ7SLXWJ │ │ ├── IHGA1LHQ │ │ ├── LF6NHZRK │ │ ├── OA9OWQNN │ │ ├── OI290XGJ │ │ ├── UTNI6PSD │ │ ├── W8XHJP69 │ │ ├── WHYUOJS2 │ │ └── ZOM1L6RA │ ├── DLD0NLN6 │ │ ├── 3O7SZPP5 │ │ ├── 5669QKVZ │ │ ├── 6O893R7P │ │ ├── 7O0E74NI │ │ ├── AL2HOE1I │ │ ├── BRKQC7KI │ │ ├── CYNFLG1O │ │ ├── E2DCKTAW │ │ ├── FUF4GEJ2 │ │ ├── J9K0N1G3 │ │ ├── JYP14B13 │ │ ├── MITS1KT3 │ │ ├── OO08I86R │ │ ├── OPTKWTEN │ │ ├── OTQLM9FR │ │ ├── RYRXFTD0 │ │ ├── U1HE6HJU │ │ ├── UFRWO7LV │ │ ├── WQYZVZ02 │ │ └── XM6M6XV3 │ ├── F8T1C2C8 │ │ ├── 24CHFLCM │ │ ├── 24UQMOA7 │ │ ├── 3MPI6ZGG │ │ ├── 5HQTP051 │ │ ├── C5L2LOAA │ │ ├── G20VWPOJ │ │ ├── GBIA0FJJ │ │ ├── I3QH2SGS │ │ ├── L9HIBPO9 │ │ ├── M2W3FH21 │ │ ├── NWAG08DF │ │ ├── PUKTT71A │ │ ├── R75LDKZA │ │ ├── TY2N5W2V │ │ ├── UMVACDSG │ │ ├── UOKCOUPN │ │ ├── WO7DKKIR │ │ ├── YB6CGUEN │ │ ├── YI9VPU71 │ │ └── YJ4H3LH9 │ ├── GMDGVMGE │ │ ├── 10KS7XSL │ │ ├── 4LMTFZCM │ │ ├── 5OWRFEZT │ │ ├── 6KPKMW7F │ │ ├── 7EA2V52Y │ │ ├── 931P2T2C │ │ ├── BH13PMF2 │ │ ├── DVRULQ4L │ │ ├── EYN874N3 │ │ ├── GCCH7GUL │ │ ├── HW9ZGUI0 │ │ ├── KDT49C2O │ │ ├── M6MO9M1W │ │ ├── OXNCWNKP │ │ ├── QDDZKQBI │ │ ├── QYKLAVOR │ │ ├── V8A4PPEG │ │ ├── X23268R9 │ │ ├── Y0WAA0QK │ │ └── ZKOYMDBL │ ├── K1V16TZ2 │ │ ├── 02KG7GI3 │ │ ├── 02M95EZJ │ │ ├── 3B2F652L │ │ ├── 3FSO4YLX │ │ ├── 82R7NE45 │ │ ├── 89JKXHMI │ │ ├── BUIYBJW6 │ │ ├── CB7VL2AM │ │ ├── E3VMO1UV │ │ ├── H782K0GF │ │ ├── IYLAWPCR │ │ ├── JMXU733Y │ │ ├── JNTGVLSL │ │ ├── LB4B6X6P │ │ ├── NMMNMEDT │ │ ├── PM7NRHP0 │ │ ├── S50ORS2M │ │ ├── T5D06H6O │ │ ├── X4O9C3E9 │ │ └── YLTYQ7PT │ ├── KTYT9DL4 │ │ ├── 041Q5VQ6 │ │ ├── 31H6U39X │ │ ├── 526KAB1Q │ │ ├── 66SLWGGM │ │ ├── 7QQAKH41 │ │ ├── 8SQP2JFV │ │ ├── 90ORMN66 │ │ ├── 95NBR36B │ │ ├── A202VRDJ │ │ ├── E2WWNK1U │ │ ├── FJATAT6I │ │ ├── FOGK2TD9 │ │ ├── GGK14ZEP │ │ ├── L9NCYUOA │ │ ├── MDZE1NQC │ │ ├── O08K936H │ │ ├── QBZ2NYYY │ │ ├── SSNMEO7G │ │ ├── X44EBTIV │ │ └── ZYSF9F0A │ ├── MQP1VBHQ │ │ ├── 36VMK9BG │ │ ├── 5ZCQW7TK │ │ ├── 6TQAQ9JL │ │ ├── 9KHTQSOG │ │ ├── A9ARPBTE │ │ ├── EJKM4P8J │ │ ├── GVAUVIPU │ │ ├── I7BYYSUH │ │ ├── IUKF08Y4 │ │ ├── JD8K3921 │ │ ├── LIVI4VP2 │ │ ├── MIN0CJNB │ │ ├── N56AGDMY │ │ ├── NTIJFZDS │ │ ├── S3CQF12S │ │ ├── SXRZ25DU │ │ ├── VYXH92ZI │ │ ├── W56UYZUK │ │ ├── XESS84R7 │ │ └── ZIIFJZRE │ ├── O587SSFG │ │ ├── 3E7ZTAVL │ │ ├── 3NI0KD8T │ │ ├── 4DXWEUAK │ │ ├── 4O0KVR5P │ │ ├── 5S7QF3H6 │ │ ├── 7IKIFVQC │ │ ├── 8Q8IDTC7 │ │ ├── CVDGAH14 │ │ ├── EXVHNHYF │ │ ├── F4K726ZE │ │ ├── G4DRQMVC │ │ ├── H7PWE6D1 │ │ ├── HTFON23U │ │ ├── LKLQLQ8B │ │ ├── M2D9A9GW │ │ ├── OHGWT0IT │ │ ├── OVB0C2DD │ │ ├── PKEIXGTL │ │ ├── U1Z144SU │ │ └── ZUIZ3BRS │ ├── ODRGACS5 │ │ ├── 0POE7NLS │ │ ├── 3WJNQHOI │ │ ├── 4LYTO0ZG │ │ ├── 6JFHFM48 │ │ ├── 80TD6MQ1 │ │ ├── 99KWRIDG │ │ ├── 9QNUXM4L │ │ ├── AZBQ6DI4 │ │ ├── BZE1NCWY │ │ ├── FH0FGQU9 │ │ ├── GN72VYNY │ │ ├── JSWT0A61 │ │ ├── L6RJI5MH │ │ ├── LDMDGEL4 │ │ ├── LQWDHMT1 │ │ ├── MLRX5NHC │ │ ├── NDR9IE07 │ │ ├── OB0TZRYT │ │ ├── X1SVRUTM │ │ └── X70F203P │ ├── QN7Q85Q3 │ │ ├── 32DJSRCD │ │ ├── 5E0OD9MJ │ │ ├── 6Y96J42D │ │ ├── 7UB67288 │ │ ├── 8DCJBGN8 │ │ ├── 9X0BSFFX │ │ ├── BDMSPZFU │ │ ├── C7LAWJCM │ │ ├── F5FFWSP3 │ │ ├── JBNLA5LS │ │ ├── JM035B27 │ │ ├── K5HIYP7U │ │ ├── KRNKFQTK │ │ ├── M0ODDGTQ │ │ ├── PLE8FFL4 │ │ ├── R513RF7X │ │ ├── RSA9B4XA │ │ ├── ST1FTYFZ │ │ ├── USP8NX9I │ │ └── ZE0LYP1J │ ├── R8XYBVWQ │ │ ├── 0XC8TJL6 │ │ ├── 3CWSG1VM │ │ ├── 5DY1KZDZ │ │ ├── 7JKVQ1V4 │ │ ├── G18VV3XH │ │ ├── I7BE5SNQ │ │ ├── IYT9TNZ3 │ │ ├── JCUBGZ0L │ │ ├── KUNZ9OP2 │ │ ├── M50MK22L │ │ ├── NNGY3F51 │ │ ├── NQ3BFZKH │ │ ├── QV763DK6 │ │ ├── SA13FEFE │ │ ├── U4CT6S3M │ │ ├── UK268DBR │ │ ├── VL8QUY6U │ │ ├── VS5RKUTC │ │ ├── YI5ISTTI │ │ └── YJPL7KY5 │ └── WKYEIC8N │ │ ├── 4NE1DLAV │ │ ├── 71PCO4II │ │ ├── 9KVDBM8O │ │ ├── ATP6Z1LV │ │ ├── AYHI7FZG │ │ ├── HI1HXC9E │ │ ├── ISW6FLPB │ │ ├── K8670JAD │ │ ├── KJ26BDR0 │ │ ├── LS1E6E8N │ │ ├── M45WG887 │ │ ├── N8O0W1UR │ │ ├── NXH2E4FB │ │ ├── O8C1K8CS │ │ ├── PXR9X9H1 │ │ ├── R3O1QJRE │ │ ├── THW3C7CC │ │ ├── TNGM39LQ │ │ ├── VWXNPY8W │ │ └── XA6HG1VW │ └── user2 │ ├── adgsfdgasf.js │ ├── fadf.x │ ├── janfjdkn.txt │ ├── notflag.txt │ └── sadsas.tx ├── miscellaneous ├── BroBot │ ├── .dockerignore │ ├── Dockerfile │ ├── README.md │ ├── bot.py │ ├── challenge.yml │ └── flag.txt ├── Escape Plan │ ├── .dockerignore │ ├── Dockerfile │ ├── README.md │ ├── challenge.yml │ ├── ctf.xinetd │ └── src │ │ ├── crypto.py │ │ ├── dotgit │ │ ├── COMMIT_EDITMSG │ │ ├── HEAD │ │ ├── config │ │ ├── description │ │ ├── hooks │ │ │ ├── applypatch-msg.sample │ │ │ ├── commit-msg.sample │ │ │ ├── fsmonitor-watchman.sample │ │ │ ├── post-update.sample │ │ │ ├── pre-applypatch.sample │ │ │ ├── pre-commit.sample │ │ │ ├── pre-push.sample │ │ │ ├── pre-rebase.sample │ │ │ ├── pre-receive.sample │ │ │ ├── prepare-commit-msg.sample │ │ │ └── update.sample │ │ ├── index │ │ ├── info │ │ │ └── exclude │ │ ├── logs │ │ │ ├── HEAD │ │ │ └── refs │ │ │ │ ├── heads │ │ │ │ └── master │ │ │ │ └── remotes │ │ │ │ └── origin │ │ │ │ ├── HEAD │ │ │ │ └── master │ │ ├── objects │ │ │ ├── 21 │ │ │ │ └── c14711539895c717dd14c6dbb234d590cf154c │ │ │ ├── 29 │ │ │ │ └── 3a96b5311e825bed1853dfe94d686128ec87f0 │ │ │ ├── 49 │ │ │ │ └── a38ff762edca98ce3135e2acfbcc8e05161b4f │ │ │ ├── 50 │ │ │ │ └── e641198ed71d79d4fe639424fafa189a78e64d │ │ │ ├── 51 │ │ │ │ └── 340badf5df1f62750499e5d4dc9c39256f585c │ │ │ ├── 53 │ │ │ │ └── ad3f0d5888b840c1fec596cab850b588a51d3a │ │ │ ├── 57 │ │ │ │ └── 41f50afaf7ecd534a2ba075137e9cfb2734a83 │ │ │ ├── 60 │ │ │ │ └── fb061f532b1b3a6d3d172829238739959e2521 │ │ │ ├── 63 │ │ │ │ └── 80637ec9636e30a8490a075832da357d48ea45 │ │ │ ├── 79 │ │ │ │ └── 933283f7dd64b33a0a25c03ab3d8f6de2d4a8d │ │ │ ├── 01 │ │ │ │ └── 7fa0c45fca1b3baeab576ffb13012cb02033d1 │ │ │ ├── 0b │ │ │ │ └── 3ca764bb608cfb9c4160dc9c3be70c2881138f │ │ │ ├── 2b │ │ │ │ └── d46f9367f9f5fd9deaf06bf1b8c4fea8c9686e │ │ │ ├── 3c │ │ │ │ ├── 112c7d5e6495dc6004391fdd165adfdaead1f5 │ │ │ │ └── 73168eeb062e429965c41d61bba35a1cc059b3 │ │ │ ├── 3d │ │ │ │ └── 089c6cbab514e92fad4abb2d81986ab3ba2d48 │ │ │ ├── 6b │ │ │ │ └── cb60fa2195023b2002264aaf749c751ec52f2d │ │ │ ├── ad │ │ │ │ └── 17209200d125c1bffd65a9192ae9a8d0c46f06 │ │ │ ├── b7 │ │ │ │ └── 7ecba6cab82b40d24f412b495b1b56370b7334 │ │ │ ├── ca │ │ │ │ └── 85cee2c97027145705b138c96b3dbbc4b69084 │ │ │ ├── ce │ │ │ │ └── f4581d455a0aa5beffc858a40ec7c329679651 │ │ │ ├── d8 │ │ │ │ └── f2b60a757370c943b55a71dd7ed91abe4779ae │ │ │ └── e0 │ │ │ │ └── 94aa7451d85dc3407202b123f729638555e524 │ │ ├── packed-refs │ │ └── refs │ │ │ ├── heads │ │ │ └── master │ │ │ └── remotes │ │ │ └── origin │ │ │ ├── HEAD │ │ │ └── master │ │ └── start.sh ├── Friends │ ├── Dockerfile │ ├── README.md │ ├── challenge.yml │ ├── ctf.xinetd │ └── src │ │ ├── namo.py │ │ ├── namo.txt │ │ └── start.sh ├── Machine Fix │ ├── README.md │ ├── challenge.yml │ ├── code.py │ └── sol.py ├── Mafia │ ├── .dockerignore │ ├── Dockerfile │ ├── README.md │ ├── ans.py │ ├── bin │ │ ├── Mafia │ │ └── ques.cpp │ ├── challenge.yml │ ├── ctf.xinetd │ ├── prob.pdf │ └── start.sh ├── No DIStractions │ ├── README.md │ └── challenge.yml ├── Prime Roll │ ├── README.md │ └── challenge.yml ├── Prison Break │ ├── .dockerignore │ ├── Dockerfile │ ├── README.md │ ├── challenge.yml │ ├── ctf.xinetd │ └── src │ │ ├── flag.txt │ │ ├── jail.py │ │ └── start.sh └── README.md ├── osint ├── Commitment │ ├── README.md │ └── challenge.yml ├── Flying Places │ ├── Flight.jpg │ ├── README.md │ └── challenge.yml ├── Lo Scampo │ ├── README.md │ └── challenge.yml ├── Pirates of the Memorial │ ├── README.md │ ├── challenge.yml │ └── storm.jpeg ├── README.md ├── Shaken │ ├── 300 M.jpg │ ├── README.md │ └── challenge.yml └── Stalin for time │ ├── README.md │ ├── Stalinfortimewebpage.html │ ├── challenge.yml │ └── dwayneanddavid.jpg ├── pwn ├── Global Warming │ ├── Dockerfile │ ├── README.md │ ├── bin │ │ ├── flag.txt │ │ ├── global-warming │ │ └── global-warming.c │ ├── challenge.yml │ ├── ctf.xinetd │ └── start.sh ├── README.md ├── Secret Society │ ├── Dockerfile │ ├── README.md │ ├── bin │ │ ├── flag.txt │ │ ├── prob.c │ │ └── secret-society │ ├── challenge.yml │ ├── ctf.xinetd │ └── start.sh ├── Smash │ ├── .dockerignore │ ├── Dockerfile │ ├── README.md │ ├── challenge.yml │ ├── ctf.xinetd │ ├── flag.txt │ ├── hello │ ├── libc.so.6 │ └── start.sh ├── pwn intended 0x1 │ ├── Dockerfile │ ├── README.md │ ├── bin │ │ ├── flag.txt │ │ ├── pwn-intended-0x1 │ │ └── pwn-intended-0x1.c │ ├── challenge.yml │ ├── ctf.xinetd │ ├── start.sh │ └── static │ │ └── img1.png ├── pwn intended 0x2 │ ├── Dockerfile │ ├── README.md │ ├── bin │ │ ├── flag.txt │ │ ├── pwn-intended-0x2 │ │ └── pwn-intended-0x2.c │ ├── challenge.yml │ ├── ctf.xinetd │ └── start.sh └── pwn intended 0x3 │ ├── Dockerfile │ ├── README.md │ ├── bin │ ├── flag.txt │ ├── pwn-intended-0x3 │ └── pwn-intended-0x3.c │ ├── challenge.yml │ ├── ctf.xinetd │ ├── start.sh │ └── static │ └── img1.png ├── reversing ├── Blaise │ ├── Dockerfile │ ├── README.md │ ├── bin │ │ ├── blaise │ │ ├── blaise.c │ │ └── flag.txt │ ├── challenge.yml │ ├── ctf.xinetd │ ├── solve.py │ └── start.sh ├── Esrever │ ├── README.md │ ├── challenge.yml │ ├── esrever.py │ ├── esrever.txt │ ├── generate.py │ └── solve.py ├── README.md ├── RicknMorty │ ├── Dockerfile │ ├── README.md │ ├── bin │ │ ├── RickNMorty │ │ ├── flag.txt │ │ └── run.c │ ├── challenge.yml │ ├── ctf.xinetd │ ├── solve.py │ └── start.sh ├── Scrambled Eggs │ ├── README.md │ ├── challenge.yml │ ├── scrambledeggs.py │ ├── scrambledeggs.txt │ └── scrambledeggssolve.py ├── Vietnam │ ├── Dockerfile │ ├── README.md │ ├── bin │ │ ├── flag.txt │ │ ├── program.c │ │ └── vietnam │ ├── challenge.yml │ ├── ctf.xinetd │ └── start.sh └── pydis2ctf │ ├── C1cipher.txt │ ├── C2cipher.txt │ ├── README.md │ ├── challenge.yml │ ├── encodedflag.txt │ └── solution.py └── web ├── Body Count ├── .dockerignore ├── Dockerfile ├── README.md ├── bin │ ├── README │ └── findaas ├── challenge.yml └── src │ ├── checkpass.php │ ├── index.php │ ├── robots.txt │ └── wc.php ├── CCC ├── .dockerignore ├── .env ├── Dockerfile ├── README.md ├── challenge.yml ├── package-lock.json ├── package.json ├── public │ ├── admins │ ├── css │ │ ├── custom-responsive-style.css │ │ ├── main.css │ │ ├── style.css │ │ └── util.css │ ├── dashboard.html │ ├── font │ │ ├── FuturaPTBold.otf │ │ ├── FuturaPTBook.otf │ │ ├── FuturaPTHeavy.otf │ │ ├── FuturaPTLight.otf │ │ └── FuturaPTMedium.otf │ ├── images │ │ ├── android-icon-144x144.png │ │ ├── android-icon-192x192.png │ │ ├── android-icon-36x36.png │ │ ├── android-icon-48x48.png │ │ ├── android-icon-72x72.png │ │ ├── android-icon-96x96.png │ │ ├── apple-icon-114x114.png │ │ ├── apple-icon-120x120.png │ │ ├── apple-icon-144x144.png │ │ ├── apple-icon-152x152.png │ │ ├── apple-icon-180x180.png │ │ ├── apple-icon-57x57.png │ │ ├── apple-icon-60x60.png │ │ ├── apple-icon-72x72.png │ │ ├── apple-icon-76x76.png │ │ ├── apple-icon-precomposed.png │ │ ├── apple-icon.png │ │ ├── bearbrand.jpg │ │ ├── blog-icon.png │ │ ├── brandname.jpg │ │ ├── designer.jpg │ │ ├── digital-marketing.jpg │ │ ├── ds-logo.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon-96x96.png │ │ ├── favicon.ico │ │ ├── favicons │ │ │ ├── android-icon-144x144.png │ │ │ ├── android-icon-192x192.png │ │ │ ├── android-icon-36x36.png │ │ │ ├── android-icon-48x48.png │ │ │ ├── android-icon-72x72.png │ │ │ ├── android-icon-96x96.png │ │ │ ├── apple-icon-114x114.png │ │ │ ├── apple-icon-120x120.png │ │ │ ├── apple-icon-144x144.png │ │ │ ├── apple-icon-152x152.png │ │ │ ├── apple-icon-180x180.png │ │ │ ├── apple-icon-57x57.png │ │ │ ├── apple-icon-60x60.png │ │ │ ├── apple-icon-72x72.png │ │ │ ├── apple-icon-76x76.png │ │ │ ├── apple-icon-precomposed.png │ │ │ ├── apple-icon.png │ │ │ ├── browserconfig.xml │ │ │ ├── favicon-16x16.png │ │ │ ├── favicon-32x32.png │ │ │ ├── favicon-96x96.png │ │ │ ├── favicon.ico │ │ │ ├── manifest.json │ │ │ ├── ms-icon-144x144.png │ │ │ ├── ms-icon-150x150.png │ │ │ ├── ms-icon-310x310.png │ │ │ └── ms-icon-70x70.png │ │ ├── gradient-background.png │ │ ├── hipster.jpg │ │ ├── logo.png │ │ ├── mobile-header.jpg │ │ ├── mountain.jpg │ │ ├── mouse-icon.png │ │ ├── ms-icon-144x144.png │ │ ├── ms-icon-150x150.png │ │ ├── ms-icon-310x310.png │ │ ├── ms-icon-70x70.png │ │ ├── services-icon.png │ │ ├── sponser.png │ │ ├── stores.jpg │ │ ├── testimonials-background.jpg │ │ ├── testimonials-profile-one.jpg │ │ ├── testimonials-profile-two.png │ │ ├── user-profile-one.png │ │ ├── user-profile-two.png │ │ ├── web-design.jpg │ │ └── web-hosting.jpg │ ├── index.html │ ├── login.html │ └── scripts │ │ ├── jquery-3.2.1.min.js │ │ └── plugin-active.js └── server.js ├── Cascade ├── .dockerignore ├── Dockerfile ├── README.md ├── challenge.yml ├── package-lock.json ├── package.json ├── public │ ├── index.html │ └── style.css └── server.js ├── File Library ├── .dockerignore ├── Dockerfile ├── README.md ├── a.cpp ├── challenge.yml ├── flag.txt ├── index.html ├── ok.js ├── package-lock.json ├── package.json └── server.js ├── Mr Rami ├── .dockerignore ├── Dockerfile ├── README.md ├── challenge.yml ├── flag.txt ├── index.html ├── requirements.txt ├── robots.txt └── server.py ├── Oreo ├── .dockerignore ├── Dockerfile ├── README.md ├── challenge.yml ├── package-lock.json ├── package.json ├── public │ └── index.html └── server.js ├── README.md ├── Secure Portal ├── .dockerignore ├── Dockerfile ├── README.md ├── challenge.yml ├── package-lock.json ├── package.json ├── server.js └── views │ └── index.ejs ├── The Confused Deputy ├── .dockerignore ├── Dockerfile ├── README.md ├── challenge.yml ├── package-lock.json ├── package.json ├── server.js ├── views │ ├── admin.html │ └── index.html └── visitor.js ├── The Usual Suspects ├── .dockerignore ├── Dockerfile ├── README.md ├── challenge.yml ├── cs.txt ├── rf.txt └── server.py └── Warm Up ├── .dockerignore ├── Dockerfile ├── README.md ├── challenge.yml ├── flag.php └── index.php /.github/workflows/dockerhub.yml: -------------------------------------------------------------------------------- 1 | name: Deploy challenge on gke 2 | on: 3 | push: 4 | branches: [ master ] 5 | jobs: 6 | deploy: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v2 10 | - run: git fetch --all --tag 11 | - name: Login to DockerHub Registry 12 | run: echo ${{ secrets.DOCKERHUB_PASSWORD }} | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin 13 | - uses: actions/setup-node@v1 14 | with: 15 | node-version: '12' 16 | - run: npm install -g ctfup 17 | - run: | 18 | ctfup -c ctfup.yml -d ${{ env.COMMITHASH }} -bo . 19 | env: 20 | COMMITHASH: $(git rev-list -n 1 latest) 21 | - run: | 22 | git config --global user.email "actions@action.com" 23 | git config --global user.name "github-action" 24 | git tag -fa latest -m "feat:Update latest tag" 25 | git push -f origin latest -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | **/.gdb_history 2 | **/peda-session* 3 | **/node_modules 4 | .vscode/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Computer Society of India - VIT University 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /crypto/Login Error/.dockerignore: -------------------------------------------------------------------------------- 1 | Dockerfile 2 | README.md 3 | challenge.yml 4 | -------------------------------------------------------------------------------- /crypto/Login Error/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | RUN apt-get update && apt-get install -y \ 4 | xinetd \ 5 | python3-pip \ 6 | python3-dev \ 7 | && rm -rf /var/lib/apt/lists/* 8 | 9 | RUN mkdir /ctf 10 | WORKDIR /ctf 11 | RUN useradd -M -d /ctf ctf 12 | 13 | RUN echo "Connection blocked" > /etc/banner_fail 14 | COPY ctf.xinetd /etc/xinetd.d/ctf 15 | COPY ./src /ctf/ 16 | 17 | RUN chown -R ctf:ctf /ctf && chmod -R 770 /ctf 18 | RUN su ctf -c "pip3 install pycryptodome==3.4.3" 19 | RUN pip3 install pycryptodome==3.4.3 20 | 21 | RUN chown -R root:ctf /ctf && \ 22 | chmod -R 750 /ctf 23 | 24 | 25 | ENTRYPOINT [] 26 | CMD ["/usr/sbin/xinetd", "-dontfork"] 27 | 28 | EXPOSE 9999 29 | -------------------------------------------------------------------------------- /crypto/Login Error/README.md: -------------------------------------------------------------------------------- 1 | # Login Error 2 | 3 | Author: [harsoh](https://github.com/harsoh) 4 | 5 | ## Description 6 | 7 | Challenge based on AES-CBC bit flipping attack. 8 | 9 | ## Requirements 10 | 11 | - Docker: [Dockerfile](./Dockerfile) 12 | 13 | ## Sources 14 | 15 | - [ques.py](./ques.py) 16 | - [sol.py](./sol.py) 17 | 18 | ``` 19 | We forgot our credentials, help us to get the flag. 20 | 21 | ``` 22 | 23 | ## Exploit 24 | 25 | The server is running a python script. The program tells that it uses AES and it is a very classic problem of changing the encryption so that some specific changes happen after decryption which can be done by bit flipping attack. The username is given to be similar to c?i and password to c?f, it is trivial that they are csi and ctf respectively. The changes need to happen in 2 encryptions, both at the 6th indices, like in any bit flipping attack we xor the current plaintext value at 6th index('?') and the wanted plaintext value at 6th index('s' and 't') and then xor the resultant value with 6th index of previous block. 26 |
27 | 28 | The flag is: 29 | 30 | ``` 31 | csictf{Sh4u!d_hav3_n0t_u5ed_CBC} 32 | ``` 33 | -------------------------------------------------------------------------------- /crypto/Login Error/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Login Error" 2 | author: "harsoh" 3 | 4 | category: Crypto 5 | 6 | description: | 7 | We forgot our credentials, help us to get the flag. 8 | 9 | nc chall.csivit.com 30431 10 | 11 | value: 500 12 | type: dynamic 13 | 14 | decay: 450 15 | 16 | minimum: 100 17 | 18 | flags: 19 | - csictf{Sh4u!d_hav3_n0t_u5ed_CBC} 20 | 21 | tags: 22 | - crypto 23 | - aes 24 | 25 | state: hidden 26 | 27 | version: "0.1" 28 | 29 | replicas: 2 30 | containers: 31 | server: 32 | build: . 33 | ports: 34 | - containerPort: 9999 35 | 36 | expose: 37 | - containerPort: 9999 38 | nodePort: 30431 39 | -------------------------------------------------------------------------------- /crypto/Login Error/ctf.xinetd: -------------------------------------------------------------------------------- 1 | service ctf 2 | { 3 | disable = no 4 | socket_type = stream 5 | protocol = tcp 6 | wait = no 7 | user = ctf 8 | type = UNLISTED 9 | port = 9999 10 | bind = 0.0.0.0 11 | server = /bin/sh 12 | server_args = /ctf/start.sh 13 | banner_fail = /etc/banner_fail 14 | # safety options 15 | per_source = 10 # the maximum instances of this service per source IP address 16 | rlimit_cpu = 1 # the maximum number of CPU seconds that the service may use 17 | #rlimit_as = 1024M # the Address Space resource limit for the service 18 | } 19 | -------------------------------------------------------------------------------- /crypto/Login Error/sol.py: -------------------------------------------------------------------------------- 1 | import binascii 2 | 3 | def decode(num): 4 | hexstring=input() 5 | hexstring.encode('utf-8') 6 | enc=binascii.unhexlify(hexstring) 7 | ch=enc[6] 8 | if(num==1): 9 | xor=ord('?')^ord('s') 10 | else: 11 | xor=ord('?')^ord('t') 12 | ch=ch^xor 13 | ch=hex(ch) 14 | ch=ch[2:] 15 | ch=binascii.unhexlify(ch) 16 | enc=enc[:6]+ch+enc[7:] 17 | ans=binascii.hexlify(enc) 18 | print(str(ans)[2:-1]) 19 | 20 | decode(1) 21 | decode(2) 22 | -------------------------------------------------------------------------------- /crypto/Login Error/src/start.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | cd /ctf 4 | /usr/bin/python3 ques.py 5 | -------------------------------------------------------------------------------- /crypto/Mein Kampf/README.md: -------------------------------------------------------------------------------- 1 | # Mein Kampf 2 | 3 | Author: [AJ1479](https://github.com/AJ1479) 4 | 5 | ## Description 6 | 7 | This is a simple crypto challenge which uses the Enigma Cipher. 8 | 9 | ## Requirements 10 | 11 | - Online Enigma Decoder 12 | 13 | ## Sources 14 | 15 | ``` 16 | "We have intercepted the enemy's communications, but unfortunately, some data was corrupted during transmission. Can you recover the message?" 17 | M4 18 | UKW $ 19 | Gamma 2 4 20 | $ 5 9 21 | $ 14 3 22 | $ 5 20 23 | fv cd hu ik es op yl wq jm 24 | 25 | Ciphertext: zkrtwvvvnrkulxhoywoj 26 | (Words in the flag are separated by underscores) 27 | ``` 28 | 29 | ## Exploit 30 | 31 | The model, reflector, and rotors and their positions, of the machine have been given to the players. You just have to use the online [Enigma decoder](https://cryptii.com/pipes/enigma-machine). You have to use brute force to find out the reflector type and the missing rotors, which you'll find out to be B, I, IV, and VII respectively. 32 |
33 | 34 | The flag is: 35 | 36 | ``` 37 | csictf{no_shit_sherlock} 38 | ``` -------------------------------------------------------------------------------- /crypto/Mein Kampf/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Mein Kampf" 2 | author: "AJ147" 3 | category: Crypto 4 | 5 | description: | 6 | "We have intercepted the enemy's communications, but unfortunately, some data was corrupted during transmission. Can you recover the message?" 7 | M4 8 | UKW $ 9 | Gamma 2 4 10 | $ 5 9 11 | $ 14 3 12 | $ 5 20 13 | fv cd hu ik es op yl wq jm 14 | 15 | "Ciphertext: zkrtwvvvnrkulxhoywoj" 16 | (Words in the flag are separated by underscores) 17 | 18 | value: 500 19 | type: dynamic 20 | 21 | decay: 450 22 | minimum: 100 23 | 24 | flags: 25 | - csictf{no_shit_sherlock} 26 | 27 | tags: 28 | - crypto 29 | 30 | files: 31 | 32 | state: hidden 33 | version: "0.1" 34 | -------------------------------------------------------------------------------- /crypto/Modern Clueless Child/Decryptor.py: -------------------------------------------------------------------------------- 1 | #DecryptingWithXOR 2 | 3 | istr = raw_input("Enter the cipher text : ") 4 | key = raw_input("Enter the key for xor-ing : ") 5 | output_str = "" 6 | 7 | input_str = istr.decode('hex') 8 | no_of_itr=len(input_str) 9 | for i in range(no_of_itr): 10 | current = input_str[i] 11 | current_key = key[i%len(key)] 12 | output_str += chr(ord(current) ^ ord(current_key)) 13 | print output_str -------------------------------------------------------------------------------- /crypto/Modern Clueless Child/Encryptor.py: -------------------------------------------------------------------------------- 1 | #EncryptingWithXOR 2 | 3 | input_str = raw_input("Enter the cipher text : ") 4 | key = raw_input("Enter the key for xor-ing : ") 5 | output_str = "" 6 | no_of_itr=len(input_str) 7 | 8 | 9 | for i in range(no_of_itr): 10 | current = input_str[i] 11 | current_key = key[i%len(key)] 12 | output_str += chr(ord(current) ^ ord(current_key)) 13 | 14 | final_str="" 15 | for character in output_str: 16 | final_str+= character.encode('hex') 17 | print final_str -------------------------------------------------------------------------------- /crypto/Modern Clueless Child/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Modern Clueless Child" 2 | author: "SrishtiGohain" 3 | category: Crypto 4 | 5 | description: | 6 | 'I was surfing the crimson wave and oh my gosh I was totally bugging. I also tried out the lilac hair trend but it didn't work out. 7 | That's not to say you are any better, you are a snob and a half. But let's get back to the main question here- 8 | Who am I? (You don't know my name)' 9 | 10 | Ciphertext = "52f41f58f51f47f57f49f48f5df46f6ef53f43f57f6cf50f6df53f53f40f58f51f6ef42f56f43f41f5ef5cf4e" (hex) 11 | Key = "12123" 12 | 13 | value: 500 14 | type: dynamic 15 | 16 | decay: 450 17 | minimum: 100 18 | 19 | flags: 20 | - csictf{you_are_a_basic_person} 21 | 22 | tags: 23 | - crypto 24 | 25 | state: hidden 26 | version: "0.1" 27 | -------------------------------------------------------------------------------- /crypto/Quick Math/README.md: -------------------------------------------------------------------------------- 1 | # Quick Math 2 | Author: [ashikka](https://github.com/ashikka) 3 | 4 | ## Description 5 | 6 | Hastad's attack and the Chinese Remainder Theorem. 7 | 8 | ## Requirements 9 | 10 | - RSA 11 | - Chinese Remainder Theorem 12 | 13 | ## Sources 14 | 15 | ``` 16 | Ben has encrypted a message with the same value of 'e' for 3 public moduli - 17 | n1 = 86812553978993 18 | n2 = 81744303091421 19 | n3 = 83695120256591 20 | and got the cipher texts - 21 | c1 = 8875674977048 22 | c2 = 70744354709710 23 | c3 = 29146719498409. 24 | Find the original message. (Wrap it with csictf{}) 25 | ``` 26 | 27 | 28 | ## Exploit 29 | 30 | In this challenge, on seeing the values: n, c, e, we can guess that it involves RSA encryption. We have to use The Chinese Remainder Theorem to find out the `p^e`, which is the original message raised to the power of a prime number `e` (in this case, 3). 31 | 32 | ``` 33 | p^e = 8875674977048 (mod 86812553978993) 34 | p^e = 70744354709710 (mod 81744303091421) 35 | p^e = 29146719498409 (mod 83695120256591) 36 | ``` 37 | 38 | You can use [dcode.fr](https://www.dcode.fr/chinese-remainder) to find the value of `p^e`. Now, we compute it's cube root to get a 12 digit string. This string has been encoded to hex, on decoding we get. 39 | 40 | ```python 41 | >>> bytes.fromhex('683435743464') 42 | b'h45t4d' 43 | ``` 44 | 45 | The flag is: 46 | 47 | ``` 48 | csictf{h45t4d} 49 | ``` 50 | -------------------------------------------------------------------------------- /crypto/Quick Math/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Quick Math" 2 | author: "ashikka" 3 | category: Crypto 4 | 5 | description: | 6 | Ben has encrypted a message with the same value of 'e' for 3 public moduli - 7 | n1 = 86812553978993 8 | n2 = 81744303091421 9 | n3 = 83695120256591 10 | and got the cipher texts - 11 | c1 = 8875674977048 12 | c2 = 70744354709710 13 | c3 = 29146719498409. 14 | Find the original message. (Wrap it with csictf{}) 15 | 16 | value: 500 17 | type: dynamic 18 | 19 | decay: 450 20 | minimum: 100 21 | 22 | flags: 23 | - csictf{h45t4d} 24 | 25 | tags: 26 | - crypto 27 | 28 | state: hidden 29 | version: "0.1" -------------------------------------------------------------------------------- /crypto/Quick Math/generate.py: -------------------------------------------------------------------------------- 1 | n1 = 86812553978993 2 | n2 = 81744303091421 3 | n3 = 83695120256591 4 | m = 683435743464 5 | e = 3 6 | c1 = pow(m,e,n1) 7 | c2 = pow(m,e,n2) 8 | c3 = pow(m,e,n3) 9 | print(c1,c2,c3) 10 | 11 | # 8875674977048 70744354709710 29146719498409 12 | print(319222184729548122617007524482681344** 1/3) -------------------------------------------------------------------------------- /crypto/README.md: -------------------------------------------------------------------------------- 1 | # Cryptography 2 | 3 | This directory consists of challenges related to `Cryptography`. Please follow the guidelines mentioned in the [template](../README.md) while making contributions. -------------------------------------------------------------------------------- /crypto/Rivest Shamir Adleman/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Rivest Shamir Adleman" 2 | author: "roerohan" 3 | category: Crypto 4 | 5 | description: These 3 guys encrypted my flag, but they didn't tell me how to decrypt it. 6 | 7 | value: 500 8 | type: dynamic 9 | 10 | decay: 450 11 | minimum: 100 12 | 13 | flags: 14 | - csictf{sh0uld'v3_t4k3n_b1gg3r_pr1m3s} 15 | 16 | tags: 17 | - crypto 18 | 19 | files: 20 | - "crypto/Rivest Shamir Adleman/enc.txt" 21 | 22 | state: hidden 23 | version: "0.1" 24 | -------------------------------------------------------------------------------- /crypto/Rivest Shamir Adleman/enc.txt: -------------------------------------------------------------------------------- 1 | n = 408579146706567976063586763758203051093687666875502812646277701560732347095463873824829467529879836457478436098685606552992513164224712398195503564207485938278827523972139196070431397049700119503436522251010430918143933255323117421712000644324381094600257291929523792609421325002527067471808992410166917641057703562860663026873111322556414272297111644069436801401012920448661637616392792337964865050210799542881102709109912849797010633838067759525247734892916438373776477679080154595973530904808231 2 | e = 65537 3 | c = 226582271940094442087193050781730854272200420106419489092394544365159707306164351084355362938310978502945875712496307487367548451311593283589317511213656234433015906518135430048027246548193062845961541375898496150123721180020417232872212026782286711541777491477220762823620612241593367070405349675337889270277102235298455763273194540359004938828819546420083966793260159983751717798236019327334525608143172073795095665271013295322241504491351162010517033995871502259721412160906176911277416194406909 4 | -------------------------------------------------------------------------------- /crypto/Rivest Shamir Adleman/generate.py: -------------------------------------------------------------------------------- 1 | n = 408579146706567976063586763758203051093687666875502812646277701560732347095463873824829467529879836457478436098685606552992513164224712398195503564207485938278827523972139196070431397049700119503436522251010430918143933255323117421712000644324381094600257291929523792609421325002527067471808992410166917641057703562860663026873111322556414272297111644069436801401012920448661637616392792337964865050210799542881102709109912849797010633838067759525247734892916438373776477679080154595973530904808231 2 | 3 | e = 65537 4 | 5 | # ASCII encoded 6 | # m = int(''.join(map(str, list('csictf{sh0uld\'v3_t4k3n_b1gg3r_pr1m3s}'.encode())))) 7 | 8 | # Hex encoded 9 | m = int(''.join(map(lambda x: hex(x)[2:], list('csictf{sh0uld\'v3_t4k3n_b1gg3r_pr1m3s}'.encode()))), 16) 10 | 11 | 12 | p = 15485863 13 | q = n // p 14 | 15 | phi = (p-1) * (q-1) 16 | 17 | c = pow(m, e, n) 18 | 19 | print('n = ' + str(n)) 20 | print('e = ' + str(e)) 21 | print('c = ' + str(c)) 22 | -------------------------------------------------------------------------------- /crypto/The Climb/README.md: -------------------------------------------------------------------------------- 1 | # The Climb 2 | 3 | Authors: [ashikka](https://github.com/ashikka) and [AJ1479](https://github.com/AJ1479) 4 | 5 | ## Description 6 | 7 | This is a crypto challenge to reverse the Hill Cipher program. 8 | 9 | ## Requirements 10 | 11 | - Java 12 | 13 | ## Sources 14 | 15 | - [The Climb](./theclimb.txt) 16 | - [The Climb](./theclimb.java) 17 | 18 | ``` 19 | "We are not lost, we're right here somewhere on this little blue line. Wait, why do I feel like I'm being watched?" 20 | (Don't forget to wrap the flag with csictf{}) 21 | 22 | ``` 23 | 24 | ## Exploit 25 | 26 | You just need to write a program to reverse the Hill Cipher, key point to be noted being inverting the ciphertext matrix. 27 | 28 | Solution program: 29 | - [The Climb solution](./theclimbsol.java) 30 |
31 | 32 | The flag is: 33 | 34 | ``` 35 | csictf{hillshaveeyes} 36 | ``` -------------------------------------------------------------------------------- /crypto/The Climb/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "The Climb" 2 | author: "ashikka and AJ1479" 3 | category: Crypto 4 | 5 | description: We are not lost, we're right here somewhere on this little blue line. Wait, why do I feel like I'm being watched? 6 | 7 | value: 500 8 | type: dynamic 9 | 10 | decay: 450 11 | minimum: 100 12 | 13 | flags: 14 | - csictf{hillshaveeyes} 15 | 16 | tags: 17 | - crypto 18 | 19 | files: 20 | - "crypto/The Climb/theclimb.txt" 21 | - "crypto/The Climb/theclimb.java" 22 | 23 | state: hidden 24 | version: "0.1" 25 | -------------------------------------------------------------------------------- /crypto/The Climb/theclimb.txt: -------------------------------------------------------------------------------- 1 | Encrypted text = lrzlhhombgichae -------------------------------------------------------------------------------- /crypto/little RSA/a.txt: -------------------------------------------------------------------------------- 1 | c=32949 2 | n=64741 3 | e=42667 4 | -------------------------------------------------------------------------------- /crypto/little RSA/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "little RSA" 2 | author: "Pragati" 3 | 4 | category: Crypto 5 | 6 | description: The flag.zip contains the flag I am looking for but it is password protected. The password is the encrypted message which has to be correctly decrypted so I can useit to open the zip file. I tried using RSA but the zip doesn't open by it. Can you help me get the flag please? 7 | 8 | value: 500 9 | type: dynamic 10 | 11 | decay: 450 12 | 13 | minimum: 100 14 | 15 | flags: 16 | - csictf{gr34t_m1nds_th1nk_4l1ke} 17 | 18 | tags: 19 | - crypto 20 | - RSA 21 | 22 | files: 23 | - "crypto/little RSA/a.txt" 24 | - "crypto/little RSA/flag.zip" 25 | 26 | state: hidden 27 | 28 | version: "0.1" 29 | -------------------------------------------------------------------------------- /crypto/little RSA/flag.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/crypto/little RSA/flag.zip -------------------------------------------------------------------------------- /ctfd-init: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | git clone https://github.com/csivitu/ctfcli /tmp/ctfcli 3 | 4 | cd /tmp/ctfcli 5 | python3 setup.py install 6 | cd - 7 | -------------------------------------------------------------------------------- /ctfup.yml: -------------------------------------------------------------------------------- 1 | categories: 2 | - 'crypto' 3 | - 'forensics' 4 | - 'linux' 5 | - 'reversing' 6 | - 'miscellaneous' 7 | - 'osint' 8 | - 'pwn' 9 | - 'web' 10 | registry: 'csictf' 11 | resources: 12 | limits: 13 | cpu: 100m 14 | memory: 150Mi 15 | requests: 16 | cpu: 10m 17 | memory: 30Mi -------------------------------------------------------------------------------- /feedback/Feedback/README.md: -------------------------------------------------------------------------------- 1 | # feedback 2 | 3 | Fill up the feedback form, get the flag. 4 | 5 | https://forms.gle/a1y8SVwNcpJrjS2T7 6 | 7 | The flag is: 8 | 9 | ``` 10 | csictf{th4nk5_f0r_pl4y1ng} 11 | ``` -------------------------------------------------------------------------------- /feedback/Feedback/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Feedback" 2 | author: "csictf" 3 | 4 | 5 | category: Miscellaneous 6 | 7 | description: | 8 | Thanks a lot for taking part in csictf 2020! 9 | 10 | https://forms.gle/a1y8SVwNcpJrjS2T7 11 | 12 | value: 10 13 | type: standard 14 | 15 | flags: 16 | - csictf{th4nk5_f0r_pl4y1ng} 17 | 18 | tags: 19 | - feedback 20 | 21 | state: hidden 22 | 23 | version: "0.1" 24 | -------------------------------------------------------------------------------- /forensics/Archenemy/README.md: -------------------------------------------------------------------------------- 1 | # Archenemy 2 | 3 | Author: [roerohan](https://github.com/roerohan) 4 | 5 | ## Description 6 | 7 | Steganography and bruteforce. 8 | 9 | ## Requirements 10 | 11 | - steghide 12 | - john (the ripper) 13 | 14 | ## Sources 15 | 16 | - [arched.png](./arched.png) 17 | 18 | ``` 19 | John likes Arch Linux. What is he hiding? 20 | ``` 21 | 22 | ## Exploit 23 | 24 | First, use `steghide` to extract the zip hidden in the `arched.png` file (which btw, is a jpg file), with a blank password. If you check the comment in the zip using `zipnote`, it shows `We will, we will, ROCKYOU!`. This is a hint that you have to use `rockyou.txt` to bruteforce the password for the zip. 25 |
26 | 27 | First, we convert the zip to a format readable by John The Ripper using `zip2john`. 28 | 29 | ```bash 30 | $ zip2john flag.zip > flag 31 | ver 2.0 efh 5455 efh 7875 flag.zip/meme.jpg PKZIP Encr: 2b chk, TS_chk, cmplen=27553, decmplen=27752, crc=8F2C73A9 32 | ``` 33 | 34 | Then use `john` with `rockyou.txt`. 35 | 36 | ```bash 37 | john --wordlist="rockyou.txt" flag 38 | ``` 39 | 40 | This shows you the password `kathmandu`. You get an image file `meme.jpg`, open it to see the flag. 41 |
42 | 43 | The flag is: 44 | 45 | ``` 46 | csictf{1_h0pe_y0u_don't_s33_m3_here} 47 | ``` -------------------------------------------------------------------------------- /forensics/Archenemy/arched.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/forensics/Archenemy/arched.png -------------------------------------------------------------------------------- /forensics/Archenemy/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Archenemy" 2 | author: "roerohan" 3 | category: Forensics 4 | 5 | description: John likes Arch Linux. What is he hiding? 6 | 7 | value: 500 8 | type: dynamic 9 | 10 | decay: 450 11 | minimum: 100 12 | 13 | flags: 14 | - csictf{1_h0pe_y0u_don't_s33_m3_here} 15 | 16 | tags: 17 | - forensics 18 | 19 | files: 20 | - "forensics/Archenemy/arched.png" 21 | 22 | 23 | state: hidden 24 | version: "0.1" 25 | -------------------------------------------------------------------------------- /forensics/Archenemy/flag.txt: -------------------------------------------------------------------------------- 1 | csictf{1_h0pe_y0u_don't_s33_m3_here} -------------------------------------------------------------------------------- /forensics/Gradient sky/README.md: -------------------------------------------------------------------------------- 1 | # Gradient sky 2 | 3 | Author :[tangobeer](https://github.com/ritwikgoel) 4 | 5 | ## Description 6 | 7 | Gradient Skies is a beginner level forensics CTF challenge aimed towards rookies which can be solved which can be solved with basic steganography. 8 | 9 | ## Sources 10 | 11 | - [poly.jpg](https://github.com/ritwikgoel/ctf-challenges/raw/master/forensics/Gradient%20sky/poly.jpg) 12 | 13 | ## Requirments 14 | 15 | - 7-zip/win-rar/Any Zip extractor/binwalk 16 | 17 | ## Exploit 18 | 19 | Gradient Skies is a begginer level forensics CTF challenge aimed towards rookies. You can use binwalk and look at the contents of the of the file. You will see the txt file which contains the flag. 20 | 21 | The flag is : 22 | 23 | ``` 24 | csictf{j0ker_w4snt_happy} 25 | ``` 26 | -------------------------------------------------------------------------------- /forensics/Gradient sky/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Gradient sky" 2 | author: "tangobeer" 3 | category: Forensics 4 | description: Gradient sky is a begginer level ctf challenge which is aimed towards rookies. 5 | value: 500 6 | type: dynamic 7 | decay: 450 8 | minimum: 100 9 | 10 | flags: 11 | - csictf{j0ker_w4snt_happy} 12 | 13 | files: 14 | - "forensics/Gradient sky/sky.jpg" 15 | tags: 16 | - forensics 17 | - steganography 18 | 19 | state: hidden 20 | version: "0.1" -------------------------------------------------------------------------------- /forensics/Gradient sky/sky.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/forensics/Gradient sky/sky.jpg -------------------------------------------------------------------------------- /forensics/In Your Eyes/README.md: -------------------------------------------------------------------------------- 1 | # In Your Eyes 2 | 3 | Author: [SrishtiGohain](https://github.com/SrishtiGohain) 4 | 5 | ## Description 6 | 7 | This is a forensics challenge that also uses Braille encoded text. 8 | 9 | ## Requirements 10 | 11 | - Hidden file extracting software 12 | 13 | ## Sources 14 | 15 | ``` 16 | " I talk of wondrous things I see, 17 | You picture purely out of imagination, 18 | You wonder how your light is spent, 19 | Days seem bright but you don't know for sure. 20 | I stand in your place and close my eyes, 21 | What do I see?" 22 | ``` 23 | 24 | ## Exploit 25 | 26 | Extract the hidden text file from the picture provided using Steganography software (like Quick Stego). You will see a hex string. Convert this to binary to get the Braille encoded flag. 27 | Each Braille character is representated by six bits (from L to R) except the curly braces and numbers which are representated by twelve bits each (in accordance with the Braille format). Convert the Braille characters to normal letters to obtain the flag. 28 | 29 |
30 | 31 | The flag is: 32 | 33 | ``` 34 | csictf{ucbr4ill3} 35 | ``` -------------------------------------------------------------------------------- /forensics/In Your Eyes/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "In Your Eyes" 2 | author: "SrishtiGohain" 3 | category: Forensics 4 | 5 | description: | 6 | 'I talk of wondrous things I see, 7 | You picture purely out of imagination, 8 | You wonder how your light is spent, 9 | Days seem bright but you don't know for sure. 10 | I stand in your place and close my eyes, 11 | What do I see? 12 | (Open your windows to see the secret message)' 13 | 14 | value: 500 15 | type: dynamic 16 | 17 | decay: 450 18 | minimum: 100 19 | 20 | flags: 21 | - csictf{ucbr4ill3} 22 | 23 | files: 24 | - "forensics/In Your Eyes/coolguy.bmp" 25 | 26 | tags: 27 | - forensics 28 | - steganography 29 | 30 | state: hidden 31 | version: "0.1" 32 | -------------------------------------------------------------------------------- /forensics/In Your Eyes/coolguy.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/forensics/In Your Eyes/coolguy.bmp -------------------------------------------------------------------------------- /forensics/Panda/README.md: -------------------------------------------------------------------------------- 1 | # Panda 2 | Author: [ashikka](https://github.com/ashikka) 3 | 4 | ## Description 5 | 6 | Steganography and bruteforce. 7 | 8 | ## Requirements 9 | 10 | - FlexHex 11 | - john (the ripper) 12 | 13 | ## Sources 14 | 15 | - [panda.zip](./panda.zip) 16 | 17 | 18 | ``` 19 | I wanted to send this file to AJ1479 but I did not want anyone else to see what's inside it, so I protected it with a pin. 20 | ``` 21 | 22 | 23 | ## Exploit 24 | 25 | You need to bruteforce 4 lettered pin `(2611)` using a tool like `john (the ripper)` to access the zipped file. Then, unzip the file to see two images, one of them distorted. You need to use a tool like `FlexHex` to compare the two images, to find out that the hexadecimal values that are different when concatenated comprise of the flag. 26 | 27 | The flag is: 28 | 29 | ``` 30 | csictf{kung_fu_p4nd4} 31 | ``` 32 | -------------------------------------------------------------------------------- /forensics/Panda/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Panda" 2 | author: "ashikka" 3 | category: Forensics 4 | 5 | description: I wanted to send this file to AJ1479 but I did not want anyone else to see what's inside it, so I protected it with a pin. 6 | 7 | value: 500 8 | type: dynamic 9 | 10 | decay: 450 11 | minimum: 100 12 | 13 | flags: 14 | - csictf{kung_fu_p4nd4} 15 | 16 | tags: 17 | - forensics 18 | 19 | files: 20 | - "forensics/Panda/panda.zip" 21 | 22 | 23 | state: hidden 24 | version: "0.1" -------------------------------------------------------------------------------- /forensics/Panda/panda.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/forensics/Panda/panda.zip -------------------------------------------------------------------------------- /forensics/README.md: -------------------------------------------------------------------------------- 1 | # Forensics 2 | 3 | This directory consists of challenges related to `Forensics`. Please follow the guidelines mentioned in the [template](../README.md) while making contributions. -------------------------------------------------------------------------------- /forensics/unseen/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "unseen" 2 | author: "21StWarlock" 3 | category: Forensics 4 | description: | 5 | With his dying breath, Prof. Ter Stegen hands us an image and a recording. He tells us that the image is least significant, but is a numerical key to the recording and the recording hides the answer. It may seem as though it's all for nothing, but trust me it's not. 6 | 7 | https://mega.nz/file/cmhnAQDB#9dbHojKcxzliZ5NAYtGBN7N8WHCqtoU7kKa5yuJzG0w 8 | https://mega.nz/file/h75UCIRJ#YGF3yCViKSQpwogmMgkdPQ1DXMez9Sv2DZBUWvCueSY 9 | 10 | 11 | value: 500 12 | type: dynamic 13 | decay: 450 14 | minimum: 100 15 | 16 | flags: 17 | - csictf{7h47_15_h0w_y0u_c4n_83c0m3_1nv151813} 18 | 19 | tags: 20 | - forensics 21 | 22 | state: hidden 23 | version: "0.1" 24 | -------------------------------------------------------------------------------- /forensics/unseen/flag.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 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /forensics/unseen/morse.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/forensics/unseen/morse.wav -------------------------------------------------------------------------------- /forensics/unseen/nyc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/forensics/unseen/nyc.png -------------------------------------------------------------------------------- /linux/AKA/.dockerignore: -------------------------------------------------------------------------------- 1 | README.md 2 | challenge.yml 3 | Dockerfile -------------------------------------------------------------------------------- /linux/AKA/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | RUN apt-get update && apt-get install -y \ 4 | xinetd \ 5 | cowsay \ 6 | && rm -rf /var/lib/apt/lists/* \ 7 | && cp /usr/games/cowsay /bin/ 8 | 9 | RUN mkdir /ctf 10 | WORKDIR /ctf 11 | RUN useradd -M -d /ctf ctf 12 | 13 | RUN chmod 600 /usr/bin/env 14 | 15 | RUN echo "Connection blocked" > /etc/banner_fail 16 | COPY ctf.xinetd /etc/xinetd.d/ctf 17 | COPY ./src /ctf/ 18 | 19 | RUN chown -R root:ctf /ctf && \ 20 | chmod -R 750 /ctf && \ 21 | chmod 740 /ctf/flag.txt 22 | 23 | ENTRYPOINT [] 24 | CMD ["/usr/sbin/xinetd", "-dontfork"] 25 | 26 | EXPOSE 9999 27 | -------------------------------------------------------------------------------- /linux/AKA/README.md: -------------------------------------------------------------------------------- 1 | # AKA 2 | 3 | Author: [AJ1479](https://github.com/AJ1479) 4 | 5 | ## Description 6 | 7 | This is a bash prison linux challenge. 8 | 9 | ## Requirements 10 | 11 | - Docker 12 | 13 | ## Sources 14 | 15 | ``` 16 | "Cows are following me everywhere I go. Help, I'm trapped!" 17 | ``` 18 | 19 | ## Exploit 20 | 21 | Just fix the alias of the cat command and get the flag. 22 |
23 | 24 | The flag is: 25 | 26 | ``` 27 | csictf{1_4m_cl4rk3_k3nt} 28 | ``` -------------------------------------------------------------------------------- /linux/AKA/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "AKA" 2 | author: "AJ1479" 3 | category: Linux 4 | 5 | description: | 6 | Cows are following me everywhere I go. Help, I'm trapped! 7 | 8 | nc chall.csivit.com 30611 9 | 10 | value: 500 11 | type: dynamic 12 | 13 | decay: 450 14 | minimum: 100 15 | 16 | flags: 17 | - csictf{1_4m_cl4rk3_k3nt} 18 | 19 | tags: 20 | - linux 21 | 22 | files: 23 | 24 | state: hidden 25 | version: "0.1" 26 | 27 | replicas: 2 28 | containers: 29 | server: 30 | build: . 31 | ports: 32 | - containerPort: 9999 33 | 34 | expose: 35 | - containerPort: 9999 36 | nodePort: 30611 -------------------------------------------------------------------------------- /linux/AKA/ctf.xinetd: -------------------------------------------------------------------------------- 1 | service ctf 2 | { 3 | disable = no 4 | socket_type = stream 5 | protocol = tcp 6 | wait = no 7 | user = ctf 8 | type = UNLISTED 9 | port = 9999 10 | bind = 0.0.0.0 11 | server = /bin/sh 12 | server_args = /ctf/start.sh 13 | banner_fail = /etc/banner_fail 14 | # safety options 15 | per_source = 10 # the maximum instances of this service per source IP address 16 | rlimit_cpu = 1 # the maximum number of CPU seconds that the service may use 17 | #rlimit_as = 1024M # the Address Space resource limit for the service 18 | } -------------------------------------------------------------------------------- /linux/AKA/src/flag.txt: -------------------------------------------------------------------------------- 1 | csictf{1_4m_cl4rk3_k3nt} 2 | -------------------------------------------------------------------------------- /linux/AKA/src/script.sh: -------------------------------------------------------------------------------- 1 | shopt -s expand_aliases 2 | alias cat="cowsay Don\'t look at me, I\'m just here to say moo." 3 | alias ls="cowsay Don\'t look at me, I\'m just here to say moo." 4 | alias grep="cowsay Don\'t look at me, I\'m just here to say moo." 5 | alias awk="cowsay Don\'t look at me, I\'m just here to say moo." 6 | alias pwd="cowsay Don\'t look at me, I\'m just here to say moo." 7 | alias cd="cowsay Don\'t look at me, I\'m just here to say moo." 8 | alias head="cowsay Don\'t look at me, I\'m just here to say moo." 9 | alias tail="cowsay Don\'t look at me, I\'m just here to say moo." 10 | alias less="cowsay Don\'t look at me, I\'m just here to say moo." 11 | alias more="cowsay Don\'t look at me, I\'m just here to say moo." 12 | alias sed="cowsay Don\'t look at me, I\'m just here to say moo." 13 | alias find="cowsay Don\'t look at me, I\'m just here to say moo." 14 | alias awk="cowsay Don\'t look at me, I\'m just here to say moo." 15 | 16 | while : 17 | do 18 | echo "user @ csictf: $ " 19 | read input 20 | eval $input 2>/dev/null 21 | done 22 | -------------------------------------------------------------------------------- /linux/AKA/src/start.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | cd /ctf 4 | /bin/bash script.sh -------------------------------------------------------------------------------- /linux/HTB 0x1/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "HTB 0x1" 2 | author: "thebongy and roerohan" 3 | category: Linux 4 | 5 | description: | 6 | I forgot my 'flag.txt' file on the server... 7 | 8 | Server is at 34.93.37.238. 9 | 10 | value: 500 11 | type: dynamic 12 | 13 | decay: 450 14 | minimum: 100 15 | 16 | flags: 17 | - csictf{4n0nym0u5_ftp_l0g1n} 18 | 19 | tags: 20 | - linux 21 | - hackthebox 22 | 23 | state: hidden 24 | version: "0.1" 25 | -------------------------------------------------------------------------------- /linux/HTB 0x2/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "HTB 0x2" 2 | author: "thebongy and roerohan" 3 | category: Linux 4 | 5 | description: | 6 | Server is at 34.93.215.188. 7 | 8 | value: 500 9 | type: dynamic 10 | 11 | decay: 450 12 | minimum: 100 13 | 14 | flags: 15 | - csictf{n0t_4ll_1nj3ct10n5_4re_SQLi} 16 | 17 | tags: 18 | - linux 19 | - hackthebox 20 | 21 | state: hidden 22 | version: "0.1" 23 | -------------------------------------------------------------------------------- /linux/HTB 0x2/models/db.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | 3 | mongoose.Promise = global.Promise; 4 | 5 | // csictf{exp0s3d_sec23ts} 6 | mongoose.connect('mongodb://web:9EAC744765EA6F26@34.93.215.188:27017/HTBDB', { 7 | useNewUrlParser: true, 8 | useCreateIndex: true, 9 | useUnifiedTopology: true, 10 | }); 11 | -------------------------------------------------------------------------------- /linux/HTB 0x2/models/user.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | 3 | const userSchema = mongoose.Schema({ 4 | username: String, 5 | password: String, 6 | }); 7 | 8 | module.exports = mongoose.model('User', userSchema); 9 | -------------------------------------------------------------------------------- /linux/HTB 0x2/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "htb-0x2", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "server.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "node server.js" 9 | }, 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "body-parser": "^1.19.0", 14 | "express": "^4.17.1", 15 | "express-handlebars": "^5.1.0", 16 | "express-session": "^1.17.1", 17 | "libxmljs2": "^0.26.0", 18 | "mongoose": "^5.9.25", 19 | "multer": "^1.4.2", 20 | "unzipper": "^0.8.0", 21 | "xml2json": "^0.12.0" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /linux/HTB 0x2/public/admin.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTB 0x2 8 | 9 | 10 |

Welcome, Admin

11 | 12 |

You can search your users here.

13 | 14 |
15 |
16 | json
17 | xml
18 | yaml
19 | toml
20 | brainfuck
21 | modiscript
22 | cpp
23 | emojilang
24 | csictf
25 | 26 |
27 | 28 | {{#if query}} 29 | You ran db.findOne( {{ query }} ) 30 | {{/if}} 31 |
32 |
33 | {{ template }} 34 | 35 | -------------------------------------------------------------------------------- /linux/HTB 0x2/public/home.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Zip file extractor 7 | 8 | 9 |

Zip file extractor

10 |

Give me a zip file, i'll extract it for you!

11 |
12 | 13 | 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /linux/HTB 0x2/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | csictf 2020 8 | 9 | 10 |
11 |
12 |
13 | 14 |
15 | 16 | -------------------------------------------------------------------------------- /linux/HTB 0x2/public/layouts/main.html: -------------------------------------------------------------------------------- 1 | {{{body}}} -------------------------------------------------------------------------------- /linux/HTB 0x2/routes/extract.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | 3 | const router = express.Router(); 4 | 5 | router.get() 6 | -------------------------------------------------------------------------------- /linux/HTB 0x2/routes/zip.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const multer = require('multer'); 3 | const fs = require('fs'); 4 | const unzipper = require('unzipper'); 5 | 6 | var upload = multer({ dest: '/home/administrator/uploads/zips' }) 7 | const router = express.Router(); 8 | 9 | router.post('/extract', upload.single('zipFile'), (req, res, next) => { 10 | console.log(req.file); 11 | fs.createReadStream(req.file.path).pipe(unzipper.Extract({ path: '/home/administrator/uploads/extracts' })) 12 | .on('error', (e) => { 13 | res.json({ 14 | success: false, 15 | error: e, 16 | }); 17 | }).on('finish', () => { 18 | res.json({ 19 | success: true 20 | }); 21 | }) 22 | }); 23 | 24 | module.exports = router; 25 | -------------------------------------------------------------------------------- /linux/HTB 0x3/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "HTB 0x3" 2 | author: "thebongy and roerohan" 3 | category: Linux 4 | 5 | description: | 6 | Server is at 34.93.215.188. 7 | 8 | value: 500 9 | type: dynamic 10 | 11 | decay: 450 12 | minimum: 100 13 | 14 | flags: 15 | - csictf{w3lc0m3_t0_th3_s3rv3r} 16 | 17 | tags: 18 | - linux 19 | - hackthebox 20 | 21 | state: hidden 22 | version: "0.1" 23 | -------------------------------------------------------------------------------- /linux/HTB 0x4/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "HTB 0x4" 2 | author: "thebongy and roerohan" 3 | category: Linux 4 | 5 | description: | 6 | Server is at 34.93.215.188. 7 | 8 | value: 500 9 | type: dynamic 10 | 11 | decay: 450 12 | minimum: 100 13 | 14 | flags: 15 | - csictf{m0ng0_c0llect10ns_yay} 16 | 17 | tags: 18 | - linux 19 | - hackthebox 20 | 21 | state: hidden 22 | version: "0.1" 23 | -------------------------------------------------------------------------------- /linux/HTB 0x5/README.md: -------------------------------------------------------------------------------- 1 | # HTB 0x5 2 | 3 | Author: [thebongy](https://github.com/thebongy) and [roerohan](https://github.com/roerohan) 4 | 5 | ## Description 6 | 7 | Hackthebox challenge 5. 8 | 9 | ## Requirements 10 | 11 | - Docker 12 | 13 | ## Sources 14 | 15 | ``` 16 | Server is at 34.93.215.188. 17 | ``` 18 | 19 | ## Exploit 20 | 21 | Refer to [HTB 0x3](../HTB%200x3) for the exploit! 22 | 23 | The flag is: 24 | 25 | ``` 26 | csictf{cu5t0m_4uth0rizat10n} 27 | ``` -------------------------------------------------------------------------------- /linux/HTB 0x5/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "HTB 0x5" 2 | author: "thebongy and roerohan" 3 | category: Linux 4 | 5 | description: | 6 | Server is at 34.93.215.188. 7 | 8 | value: 500 9 | type: dynamic 10 | 11 | decay: 450 12 | minimum: 100 13 | 14 | flags: 15 | - csictf{cu5t0m_4uth0rizat10n} 16 | 17 | tags: 18 | - linux 19 | - hackthebox 20 | 21 | state: hidden 22 | version: "0.1" 23 | -------------------------------------------------------------------------------- /linux/HTB 0x6/README.md: -------------------------------------------------------------------------------- 1 | # HTB 0x6 2 | 3 | Author: [thebongy](https://github.com/thebongy) and [roerohan](https://github.com/roerohan) 4 | 5 | ## Description 6 | 7 | Hackthebox challenge 6. 8 | 9 | ## Requirements 10 | 11 | - Docker 12 | 13 | ## Sources 14 | 15 | ``` 16 | Server is at 34.93.215.188. 17 | ``` 18 | 19 | ## Exploit 20 | 21 | You need to log in to the server using [HTB 0x2](../HTB%200x2), then you can check out the source file in `/home/administrator/website/models/db.js` to get this flag. (You can really just `grep` all flags btw XD) You also get the mongo URL which you'll need in [HTB 0x4](../HTB%200x4). 22 | 23 | The flag is: 24 | 25 | ``` 26 | csictf{exp0s3d_sec23ts} 27 | ``` -------------------------------------------------------------------------------- /linux/HTB 0x6/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "HTB 0x6" 2 | author: "thebongy and roerohan" 3 | category: Linux 4 | 5 | description: | 6 | Server is at 34.93.215.188. 7 | 8 | value: 500 9 | type: dynamic 10 | 11 | decay: 450 12 | minimum: 100 13 | 14 | flags: 15 | - csictf{exp0s3d_sec23ts} 16 | 17 | tags: 18 | - linux 19 | - hackthebox 20 | 21 | state: hidden 22 | version: "0.1" 23 | -------------------------------------------------------------------------------- /linux/README.md: -------------------------------------------------------------------------------- 1 | # Linux 2 | 3 | This directory consists of challenges related to `Linux`. Please follow the guidelines mentioned in the [template](../README.md) while making contributions. -------------------------------------------------------------------------------- /linux/Where am I/.dockerignore: -------------------------------------------------------------------------------- 1 | Dockerfile 2 | README.md 3 | challenge.yml -------------------------------------------------------------------------------- /linux/Where am I/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:latest 2 | RUN apk add --no-cache openssh busybox-extras rsync git 3 | RUN ssh-keygen -A 4 | RUN ssh-keygen -N "" -f ~/.ssh/id_rsa 5 | RUN adduser --disabled-password --gecos "" ctf 6 | RUN mkdir chroot 7 | RUN rsync -aqz --exclude /chroot / /chroot 2>/dev/null || : 8 | RUN git clone https://github.com/ytdl-node/ytdl.git /chroot/home/ctf/ytdl 9 | RUN chown root:root -R /chroot/home/ctf 10 | RUN cp /chroot/root/.ssh/id_rsa.pub /chroot/root/.ssh/authorized_keys 11 | RUN chmod -R 555 /chroot 12 | RUN chmod 666 /chroot/dev/null 13 | COPY flag.txt flag.txt 14 | COPY script.sh script.sh 15 | RUN chmod +x script.sh 16 | RUN echo 'command="cat /flag.txt"' $(cat ~/.ssh/id_rsa.pub) > ~/.ssh/authorized_keys 17 | RUN echo "root:$(($RANDOM))" | chpasswd 18 | ENTRYPOINT [] 19 | CMD ["/bin/ash", "-c", "/usr/sbin/sshd -D & nc -lkp 9999 -e /script.sh"] 20 | EXPOSE 9999 21 | -------------------------------------------------------------------------------- /linux/Where am I/README.md: -------------------------------------------------------------------------------- 1 | 2 | # Where am I 3 | 4 | Authors: [alias-rahil](https://github.com/alias-rahil) 5 | 6 | ## Description 7 | 8 | A linux chroot jail challenge. 9 | 10 | # Requirements 11 | 12 | - Docker 13 | 14 | ## Sources 15 | 16 | - None 17 | 18 | ``` 19 | Something is not right? I feel like I am in a prison! 20 | 21 | Hint 1: My friend once escaped a jail using ssh, I wonder how? 22 | ``` 23 | 24 | # Exploit 25 | 26 | It is a simple chroot escape challenge. The user will be given a shell where he can run commands. He should be able to notice that there there is a pair of ssh keys present inside `/root/.ssh` folder. He will then use the command `ssh -i /root/.ssh/id_rsa -o StrictHostKeyChecking=no root@localhost` to get the flag. 27 | 28 | The Flag is: 29 | ``` 30 | csictf{n1c3_d093_w0w_5uch_55h} 31 | ``` 32 | -------------------------------------------------------------------------------- /linux/Where am I/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Where am I" 2 | author: "alias-rahil" 3 | category: Linux 4 | 5 | description: | 6 | Something is not right? I feel like I am in a prison! 7 | 8 | nc chall.csivit.com 30623 9 | 10 | value: 500 11 | type: dynamic 12 | 13 | decay: 450 14 | minimum: 100 15 | 16 | flags: 17 | - csictf{n1c3_d093_w0w_5uch_55h} 18 | 19 | tags: 20 | - linux 21 | - jail 22 | 23 | state: hidden 24 | version: "0.1" 25 | 26 | replicas: 2 27 | containers: 28 | server: 29 | build: . 30 | ports: 31 | - containerPort: 9999 32 | 33 | expose: 34 | - containerPort: 9999 35 | nodePort: 30623 36 | -------------------------------------------------------------------------------- /linux/Where am I/flag.txt: -------------------------------------------------------------------------------- 1 | csictf{n1c3_d093_w0w_5uch_55h} -------------------------------------------------------------------------------- /linux/Where am I/script.sh: -------------------------------------------------------------------------------- 1 | #!/bin/ash 2 | echo "Where am I?" 3 | chroot /chroot /bin/ash -c 'su - ctf' -------------------------------------------------------------------------------- /linux/find32/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | RUN apt-get update && apt-get install -y openssh-server 4 | RUN mkdir /var/run/sshd 5 | 6 | RUN mkdir /user1 && mkdir /user2 7 | RUN useradd -M -d /user1 user1 8 | RUN useradd -M -d /user2 user2 9 | 10 | 11 | RUN echo 'user1:find32' | chpasswd 12 | RUN echo 'user2:AAE976A5232713355D58584CFE5A5' | chpasswd 13 | 14 | RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd 15 | RUN sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config 16 | RUN sed -i 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/' /etc/ssh/sshd_config 17 | 18 | RUN chmod go-rx /usr/bin/passwd 19 | 20 | COPY ./user1/* /user1/ 21 | COPY ./user2/* /user2/ 22 | 23 | RUN chown -R root:user1 /user1 24 | RUN chown -R root:user2 /user2 25 | 26 | RUN chmod -R 750 /user1 && chmod -R 750 /user2 27 | 28 | RUN chmod 1733 /tmp /var/tmp /dev/shm 29 | 30 | EXPOSE 22 31 | CMD ["/usr/sbin/sshd", "-D"] 32 | -------------------------------------------------------------------------------- /linux/find32/README.md: -------------------------------------------------------------------------------- 1 | # find32 2 | 3 | Author: [Pragati1610](https://github.com/Pragati1610) 4 | 5 | ## Description 6 | 7 | This is a linux based finding challenge. 8 | 9 | ## Sources 10 | 11 | ``` 12 | I should have really named my files better. I thought I've hidden the flag, now I can't find it myself. 13 | (Wrap your flag in csictf{}) 14 | 15 | ssh user1@chall.csivit.com -p 30630 16 | Password is find32 17 | ``` 18 | 19 | ## Exploit 20 | 21 | Login to the server using `ssh`. 22 | 23 | ```bash 24 | $ ssh user1@chall.csivit.com -p 30630 25 | ``` 26 | 27 | You see a lot of folders. Try to grep `csictf` in them. 28 | 29 | ```bash 30 | $ grep -irs csictf 31 | ........csictf{not_the_flag}{user2:AAE976A5232713355D58584CFE5A5}....... 32 | ``` 33 | 34 | This shows the password for `user2`. 35 | 36 | ```bash 37 | $ su user2 38 | Password: 39 | user2@1d864575646e:/user1$ cd /user2 40 | user2@1d864575646e:~$ 41 | ``` 42 | 43 | Now, you see some text files, but you don't find anything when you grep `csictf`. You can see that all the files are same. Or are they? 44 | 45 | ```bash 46 | user2@1d864575646e:~$ diff adgsfdgasf.d sadsas.tx 47 | 42391a42392 48 | > th15_15_unu5u41 49 | ``` 50 | 51 | When you run `diff` on pairs of files, you see they're same, expcept `sadsas.tx`. Wrap this text in `csictf{}` and get the flag. 52 | 53 | The flag is: 54 | ``` 55 | csictf{th15_15_unu5u41} 56 | ``` -------------------------------------------------------------------------------- /linux/find32/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "find32" 2 | author: "Pragati1610" 3 | category: Linux 4 | 5 | description: | 6 | I should have really named my files better. I thought I've hidden the flag, now I can't find it myself. 7 | (Wrap your flag in csictf{}) 8 | 9 | ssh user1@chall.csivit.com -p 30630 10 | Password is find32 11 | 12 | value: 500 13 | type: dynamic 14 | 15 | decay: 450 16 | minimum: 100 17 | 18 | flags: 19 | - csictf{th15_15_unu5u41} 20 | 21 | tags: 22 | - linux 23 | 24 | state: hidden 25 | version: "0.1" 26 | 27 | replicas: 2 28 | containers: 29 | server: 30 | build: . 31 | ports: 32 | - containerPort: 22 33 | 34 | expose: 35 | - containerPort: 22 36 | nodePort: 30630 37 | -------------------------------------------------------------------------------- /miscellaneous/BroBot/.dockerignore: -------------------------------------------------------------------------------- 1 | Dockerfile 2 | README.md 3 | challenge.yml -------------------------------------------------------------------------------- /miscellaneous/BroBot/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.7-slim 2 | RUN adduser --disabled-password --gecos "" ctf 3 | WORKDIR /ctf 4 | COPY bot.py bot.py 5 | COPY flag.txt flag.txt 6 | RUN chmod 744 flag.txt && \ 7 | chmod 700 bot.py 8 | RUN pip install python-telegram-bot 9 | RUN apt update && apt install -y \ 10 | espeak \ 11 | && rm -rf /var/lib/apt/lists/* 12 | ENTRYPOINT [] 13 | CMD ["python", "bot.py"] -------------------------------------------------------------------------------- /miscellaneous/BroBot/README.md: -------------------------------------------------------------------------------- 1 | 2 | # BroBot 3 | 4 | Authors: [alias-rahil](https://github.com/alias-rahil) 5 | 6 | ## Description 7 | 8 | A code injection challenge! 9 | 10 | # Requirements 11 | 12 | - Python 13 | - Espeak 14 | - Docker 15 | 16 | ## Sources 17 | 18 | - None 19 | 20 | ``` 21 | This BoT can speak, can you ask him the flag? https://telegram.me/csictf_brobot/ 22 | ``` 23 | 24 | # Exploit 25 | 26 | The user will be given the link to a telegram bot which can convert text to voice. The user can get repo link of the bot by using the `/about` command. He will notice a line `fs.write(f"echo '{text}'")` in the code. The exploit is sending `'; cat flag.txt; echo '` to the bot in the `/text2voice` command. The bot will send the flag as voice. 27 | 28 | The Flag is: 29 | ``` 30 | csictf{ai_will_take_over_the_world} 31 | ``` 32 | -------------------------------------------------------------------------------- /miscellaneous/BroBot/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "BroBot" 2 | author: "alias-rahil" 3 | category: Miscellaneous 4 | 5 | description: "This BoT can speak, can you ask him the flag? https://telegram.me/csictf_brobot/" 6 | 7 | value: 500 8 | type: dynamic 9 | 10 | decay: 450 11 | minimum: 100 12 | 13 | flags: 14 | - csictf{ai_will_take_over_the_world} 15 | 16 | tags: 17 | - python 18 | - miscellaneous 19 | - bot 20 | 21 | state: hidden 22 | version: "0.1" 23 | 24 | replicas: 1 25 | containers: 26 | server: 27 | build: . 28 | -------------------------------------------------------------------------------- /miscellaneous/BroBot/flag.txt: -------------------------------------------------------------------------------- 1 | csictf{ai_will_take_over_the_world} -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/.dockerignore: -------------------------------------------------------------------------------- 1 | Dockerfile 2 | README.md 3 | challenge.yml -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.7-slim 2 | 3 | RUN apt-get update && apt-get install -y \ 4 | xinetd \ 5 | && rm -rf /var/lib/apt/lists/* 6 | 7 | RUN mkdir /ctf 8 | WORKDIR /ctf 9 | RUN useradd -M -d /ctf ctf 10 | 11 | RUN chmod 1733 /tmp /var/tmp /dev/shm 12 | 13 | RUN echo "Connection blocked" > /etc/banner_fail 14 | COPY ctf.xinetd /etc/xinetd.d/ctf 15 | COPY ./src /ctf/ 16 | RUN mv /ctf/dotgit /ctf/.git 17 | 18 | RUN chown -R root:ctf /ctf && \ 19 | chmod -R 750 /ctf && \ 20 | chmod -R 740 /ctf/.git/* 21 | 22 | ENTRYPOINT [] 23 | CMD ["/usr/sbin/xinetd", "-dontfork"] 24 | 25 | EXPOSE 9999 26 | -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/README.md: -------------------------------------------------------------------------------- 1 | 2 | # Escape Plan 3 | 4 | Authors: [alias-rahil](https://github.com/alias-rahil) 5 | 6 | ## Description 7 | 8 | Another pyjail challenge with a little twist at the end to find the flag. 9 | 10 | # Requirements 11 | 12 | - Python 13 | - Docker 14 | 15 | ## Sources 16 | 17 | - None 18 | 19 | ``` 20 | I found a script that solves ciphers, they say it's pretty secure! 21 | ``` 22 | 23 | # Exploit 24 | 25 | It is a python file running on a netcat listener which can encode/decode crypto ciphers. The user can notice that it can not only call the cipher functions mentioned in the examples but can also run all the python built-in functions. He will then use `__import__('os').system('sh')` to spawn a shell. After finding the repository link from `.git/config`, he should be able to find the flag by checking the older commits. The flag is in a `.env` file, which was deleted in the later conmits. 26 | 27 | The Flag is: 28 | ``` 29 | csictf{2077m4y32_h45_35c4p3d} 30 | ``` 31 | -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Escape Plan" 2 | author: "alias-rahil" 3 | category: Miscellaneous 4 | 5 | description: | 6 | I found a script that solves ciphers, they say it's pretty secure! 7 | 8 | nc chall.csivit.com 30419 9 | 10 | value: 500 11 | type: dynamic 12 | 13 | decay: 450 14 | minimum: 100 15 | 16 | flags: 17 | - csictf{2077m4y32_h45_35c4p3d} 18 | 19 | tags: 20 | - python 21 | - miscellaneous 22 | - jail 23 | 24 | state: hidden 25 | version: "0.1" 26 | 27 | replicas: 2 28 | containers: 29 | server: 30 | build: . 31 | ports: 32 | - containerPort: 9999 33 | 34 | expose: 35 | - containerPort: 9999 36 | nodePort: 30419 37 | -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/ctf.xinetd: -------------------------------------------------------------------------------- 1 | service ctf 2 | { 3 | disable = no 4 | socket_type = stream 5 | protocol = tcp 6 | wait = no 7 | user = ctf 8 | type = UNLISTED 9 | port = 9999 10 | bind = 0.0.0.0 11 | server = /bin/sh 12 | server_args = /ctf/start.sh 13 | banner_fail = /etc/banner_fail 14 | # safety options 15 | per_source = 10 # the maximum instances of this service per source IP address 16 | rlimit_cpu = 1 # the maximum number of CPU seconds that the service may use 17 | #rlimit_as = 1024M # the Address Space resource limit for the service 18 | } -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/COMMIT_EDITMSG: -------------------------------------------------------------------------------- 1 | fix: message 2 | -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/HEAD: -------------------------------------------------------------------------------- 1 | ref: refs/heads/master 2 | -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/config: -------------------------------------------------------------------------------- 1 | [core] 2 | repositoryformatversion = 0 3 | filemode = true 4 | bare = false 5 | logallrefupdates = true 6 | [remote "origin"] 7 | url = https://github.com/alias-rahil/crypto-cli 8 | fetch = +refs/heads/*:refs/remotes/origin/* 9 | [branch "master"] 10 | remote = origin 11 | merge = refs/heads/master 12 | -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/description: -------------------------------------------------------------------------------- 1 | Unnamed repository; edit this file 'description' to name the repository. 2 | -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/hooks/applypatch-msg.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to check the commit log message taken by 4 | # applypatch from an e-mail message. 5 | # 6 | # The hook should exit with non-zero status after issuing an 7 | # appropriate message if it wants to stop the commit. The hook is 8 | # allowed to edit the commit message file. 9 | # 10 | # To enable this hook, rename this file to "applypatch-msg". 11 | 12 | . git-sh-setup 13 | commitmsg="$(git rev-parse --git-path hooks/commit-msg)" 14 | test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} 15 | : 16 | -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/hooks/commit-msg.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to check the commit log message. 4 | # Called by "git commit" with one argument, the name of the file 5 | # that has the commit message. The hook should exit with non-zero 6 | # status after issuing an appropriate message if it wants to stop the 7 | # commit. The hook is allowed to edit the commit message file. 8 | # 9 | # To enable this hook, rename this file to "commit-msg". 10 | 11 | # Uncomment the below to add a Signed-off-by line to the message. 12 | # Doing this in a hook is a bad idea in general, but the prepare-commit-msg 13 | # hook is more suited to it. 14 | # 15 | # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') 16 | # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" 17 | 18 | # This example catches duplicate Signed-off-by lines. 19 | 20 | test "" = "$(grep '^Signed-off-by: ' "$1" | 21 | sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { 22 | echo >&2 Duplicate Signed-off-by lines. 23 | exit 1 24 | } 25 | -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/hooks/post-update.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to prepare a packed repository for use over 4 | # dumb transports. 5 | # 6 | # To enable this hook, rename this file to "post-update". 7 | 8 | exec git update-server-info 9 | -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/hooks/pre-applypatch.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to verify what is about to be committed 4 | # by applypatch from an e-mail message. 5 | # 6 | # The hook should exit with non-zero status after issuing an 7 | # appropriate message if it wants to stop the commit. 8 | # 9 | # To enable this hook, rename this file to "pre-applypatch". 10 | 11 | . git-sh-setup 12 | precommit="$(git rev-parse --git-path hooks/pre-commit)" 13 | test -x "$precommit" && exec "$precommit" ${1+"$@"} 14 | : 15 | -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/hooks/pre-receive.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to make use of push options. 4 | # The example simply echoes all push options that start with 'echoback=' 5 | # and rejects all pushes when the "reject" push option is used. 6 | # 7 | # To enable this hook, rename this file to "pre-receive". 8 | 9 | if test -n "$GIT_PUSH_OPTION_COUNT" 10 | then 11 | i=0 12 | while test "$i" -lt "$GIT_PUSH_OPTION_COUNT" 13 | do 14 | eval "value=\$GIT_PUSH_OPTION_$i" 15 | case "$value" in 16 | echoback=*) 17 | echo "echo from the pre-receive-hook: ${value#*=}" >&2 18 | ;; 19 | reject) 20 | exit 1 21 | esac 22 | i=$((i + 1)) 23 | done 24 | fi 25 | -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/index: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/index -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/info/exclude: -------------------------------------------------------------------------------- 1 | # git ls-files --others --exclude-from=.git/info/exclude 2 | # Lines that start with '#' are comments. 3 | # For a project mostly in C, the following would be a good set of 4 | # exclude patterns (uncomment them if you want to use them): 5 | # *.[oa] 6 | # *~ 7 | -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/logs/HEAD: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 2bd46f9367f9f5fd9deaf06bf1b8c4fea8c9686e Your Name 1593766044 +0530 clone: from https://github.com/alias-rahil/crypto-cli 2 | 2bd46f9367f9f5fd9deaf06bf1b8c4fea8c9686e 5741f50afaf7ecd534a2ba075137e9cfb2734a83 Your Name 1593766066 +0530 commit: feat: remove gitignore 3 | 5741f50afaf7ecd534a2ba075137e9cfb2734a83 21c14711539895c717dd14c6dbb234d590cf154c Your Name 1593926934 +0530 commit: fix: message 4 | -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/logs/refs/heads/master: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 2bd46f9367f9f5fd9deaf06bf1b8c4fea8c9686e Your Name 1593766044 +0530 clone: from https://github.com/alias-rahil/crypto-cli 2 | 2bd46f9367f9f5fd9deaf06bf1b8c4fea8c9686e 5741f50afaf7ecd534a2ba075137e9cfb2734a83 Your Name 1593766066 +0530 commit: feat: remove gitignore 3 | 5741f50afaf7ecd534a2ba075137e9cfb2734a83 21c14711539895c717dd14c6dbb234d590cf154c Your Name 1593926934 +0530 commit: fix: message 4 | -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/logs/refs/remotes/origin/HEAD: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 2bd46f9367f9f5fd9deaf06bf1b8c4fea8c9686e Your Name 1593766044 +0530 clone: from https://github.com/alias-rahil/crypto-cli 2 | -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/logs/refs/remotes/origin/master: -------------------------------------------------------------------------------- 1 | 2bd46f9367f9f5fd9deaf06bf1b8c4fea8c9686e 5741f50afaf7ecd534a2ba075137e9cfb2734a83 Your Name 1593766082 +0530 update by push 2 | 5741f50afaf7ecd534a2ba075137e9cfb2734a83 21c14711539895c717dd14c6dbb234d590cf154c Your Name 1593926949 +0530 update by push 3 | -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/01/7fa0c45fca1b3baeab576ffb13012cb02033d1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/01/7fa0c45fca1b3baeab576ffb13012cb02033d1 -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/0b/3ca764bb608cfb9c4160dc9c3be70c2881138f: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/0b/3ca764bb608cfb9c4160dc9c3be70c2881138f -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/21/c14711539895c717dd14c6dbb234d590cf154c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/21/c14711539895c717dd14c6dbb234d590cf154c -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/29/3a96b5311e825bed1853dfe94d686128ec87f0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/29/3a96b5311e825bed1853dfe94d686128ec87f0 -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/2b/d46f9367f9f5fd9deaf06bf1b8c4fea8c9686e: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/2b/d46f9367f9f5fd9deaf06bf1b8c4fea8c9686e -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/3c/112c7d5e6495dc6004391fdd165adfdaead1f5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/3c/112c7d5e6495dc6004391fdd165adfdaead1f5 -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/3c/73168eeb062e429965c41d61bba35a1cc059b3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/3c/73168eeb062e429965c41d61bba35a1cc059b3 -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/3d/089c6cbab514e92fad4abb2d81986ab3ba2d48: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/3d/089c6cbab514e92fad4abb2d81986ab3ba2d48 -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/49/a38ff762edca98ce3135e2acfbcc8e05161b4f: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/49/a38ff762edca98ce3135e2acfbcc8e05161b4f -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/50/e641198ed71d79d4fe639424fafa189a78e64d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/50/e641198ed71d79d4fe639424fafa189a78e64d -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/51/340badf5df1f62750499e5d4dc9c39256f585c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/51/340badf5df1f62750499e5d4dc9c39256f585c -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/53/ad3f0d5888b840c1fec596cab850b588a51d3a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/53/ad3f0d5888b840c1fec596cab850b588a51d3a -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/57/41f50afaf7ecd534a2ba075137e9cfb2734a83: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/57/41f50afaf7ecd534a2ba075137e9cfb2734a83 -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/60/fb061f532b1b3a6d3d172829238739959e2521: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/60/fb061f532b1b3a6d3d172829238739959e2521 -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/63/80637ec9636e30a8490a075832da357d48ea45: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/63/80637ec9636e30a8490a075832da357d48ea45 -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/6b/cb60fa2195023b2002264aaf749c751ec52f2d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/6b/cb60fa2195023b2002264aaf749c751ec52f2d -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/79/933283f7dd64b33a0a25c03ab3d8f6de2d4a8d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/79/933283f7dd64b33a0a25c03ab3d8f6de2d4a8d -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/ad/17209200d125c1bffd65a9192ae9a8d0c46f06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/ad/17209200d125c1bffd65a9192ae9a8d0c46f06 -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/b7/7ecba6cab82b40d24f412b495b1b56370b7334: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/b7/7ecba6cab82b40d24f412b495b1b56370b7334 -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/ca/85cee2c97027145705b138c96b3dbbc4b69084: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/ca/85cee2c97027145705b138c96b3dbbc4b69084 -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/ce/f4581d455a0aa5beffc858a40ec7c329679651: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/ce/f4581d455a0aa5beffc858a40ec7c329679651 -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/d8/f2b60a757370c943b55a71dd7ed91abe4779ae: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/d8/f2b60a757370c943b55a71dd7ed91abe4779ae -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/objects/e0/94aa7451d85dc3407202b123f729638555e524: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Escape Plan/src/dotgit/objects/e0/94aa7451d85dc3407202b123f729638555e524 -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/packed-refs: -------------------------------------------------------------------------------- 1 | # pack-refs with: peeled fully-peeled sorted 2 | 2bd46f9367f9f5fd9deaf06bf1b8c4fea8c9686e refs/remotes/origin/master 3 | -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/refs/heads/master: -------------------------------------------------------------------------------- 1 | 21c14711539895c717dd14c6dbb234d590cf154c 2 | -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/refs/remotes/origin/HEAD: -------------------------------------------------------------------------------- 1 | ref: refs/remotes/origin/master 2 | -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/dotgit/refs/remotes/origin/master: -------------------------------------------------------------------------------- 1 | 21c14711539895c717dd14c6dbb234d590cf154c 2 | -------------------------------------------------------------------------------- /miscellaneous/Escape Plan/src/start.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | cd /ctf 4 | /usr/local/bin/python crypto.py 5 | -------------------------------------------------------------------------------- /miscellaneous/Friends/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.7-slim 2 | 3 | RUN apt-get update && apt-get install -y \ 4 | xinetd \ 5 | && rm -rf /var/lib/apt/lists/* 6 | 7 | RUN mkdir /ctf 8 | WORKDIR /ctf 9 | RUN useradd -M -d /ctf ctf 10 | 11 | RUN echo "Connection blocked" > /etc/banner_fail 12 | COPY ctf.xinetd /etc/xinetd.d/ctf 13 | COPY ./src /ctf/ 14 | 15 | RUN chown -R root:ctf /ctf && \ 16 | chmod -R 750 /ctf 17 | 18 | ENTRYPOINT [] 19 | CMD ["/usr/sbin/xinetd", "-dontfork"] 20 | 21 | EXPOSE 9999 22 | -------------------------------------------------------------------------------- /miscellaneous/Friends/README.md: -------------------------------------------------------------------------------- 1 | # Friends 2 | Author: [ashikka](https://github.com/ashikka) and [roerohan](https://github.com/roerohan) 3 | 4 | ## Description 5 | 6 | Python NaN property 7 | 8 | ## Requirements 9 | 10 | - Python 11 | - [Dockerfile](.\Dockerfile) 12 | 13 | ## Sources 14 | 15 | ``` 16 | I made a really complicated math function. Check it out. 17 | ``` 18 | - [namo.py](./src/namo.py) 19 | 20 | ## Exploit 21 | 22 | After trying some inputs, you realize that `fancy()` and `notfancy()` are mathematical inverses of each other. So, essentially the number being returned is the number itself. Therefore, the condition `x == mathStuff(x)` is never satisfied. 23 | 24 | ```python 25 | >>> x = float('nan') 26 | >>> x + x 27 | nan 28 | >>> x - x 29 | nan 30 | >>> round(x, 0) 31 | nan 32 | >>> x == x 33 | False 34 | 35 | ``` 36 | You see that all relational operations with `NaN` return `False`. Therefore if your pass `NaN` as the input, you can view the file `namo.txt`. `namo.txt` contains a script which is written in an esoteric language called modiscript. It contains multiple `if-else` statements which check the number input and return the corresponding character at that index in the flag. 37 | You can try it out [here](https://modiscript.netlify.app/). 38 | 39 | The flag is: 40 | 41 | ``` 42 | csictf{my_n4n_15_4_gr34t_c00k} 43 | ``` 44 | -------------------------------------------------------------------------------- /miscellaneous/Friends/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Friends" 2 | author: "ashikka and roerohan" 3 | category: Miscellaneous 4 | 5 | description: | 6 | I made a really complicated math function. Check it out. 7 | 8 | nc chall.csivit.com 30425 9 | 10 | value: 500 11 | type: dynamic 12 | 13 | decay: 450 14 | minimum: 100 15 | 16 | flags: 17 | - csictf{my_n4n_15_4_gr34t_c00k} 18 | 19 | files: 20 | - "miscellaneous/Friends/src/namo.py" 21 | 22 | tags: 23 | - miscellaneous 24 | 25 | state: hidden 26 | version: "0.1" 27 | 28 | replicas: 2 29 | containers: 30 | server: 31 | build: . 32 | ports: 33 | - containerPort: 9999 34 | 35 | expose: 36 | - containerPort: 9999 37 | nodePort: 30425 -------------------------------------------------------------------------------- /miscellaneous/Friends/ctf.xinetd: -------------------------------------------------------------------------------- 1 | service ctf 2 | { 3 | disable = no 4 | socket_type = stream 5 | protocol = tcp 6 | wait = no 7 | user = ctf 8 | type = UNLISTED 9 | port = 9999 10 | bind = 0.0.0.0 11 | server = /bin/sh 12 | server_args = /ctf/start.sh 13 | banner_fail = /etc/banner_fail 14 | # safety options 15 | per_source = 10 # the maximum instances of this service per source IP address 16 | rlimit_cpu = 1 # the maximum number of CPU seconds that the service may use 17 | #rlimit_as = 1024M # the Address Space resource limit for the service 18 | } -------------------------------------------------------------------------------- /miscellaneous/Friends/src/namo.py: -------------------------------------------------------------------------------- 1 | import math 2 | import sys 3 | 4 | def fancy(x): 5 | a = (1/2) * x 6 | b = (1/2916) * ((27 * x - 155) ** 2) 7 | c = 4096 / 729 8 | d = (b - c) ** (1/2) 9 | e = (a - d - 155/54) ** (1/3) 10 | f = (a + d - 155/54) ** (1/3) 11 | g = e + f + 5/3 12 | return g 13 | 14 | def notfancy(x): 15 | return x**3 - 5*x**2 + 3*x + 10 16 | 17 | def mathStuff(x): 18 | if (x < 3 or x > 100): 19 | exit() 20 | 21 | y = fancy(notfancy(x)) 22 | 23 | if isinstance(y, complex): 24 | y = float(y.real) 25 | 26 | y = round(y, 0) 27 | return y 28 | 29 | print("Enter a number: ") 30 | sys.stdout.flush() 31 | x = round(float(input()), 0) 32 | if x == mathStuff(x): 33 | print('Fail') 34 | sys.stdout.flush() 35 | else: 36 | print(open('namo.txt').read()) 37 | sys.stdout.flush() 38 | -------------------------------------------------------------------------------- /miscellaneous/Friends/src/start.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | cd /ctf 4 | /usr/local/bin/python namo.py 5 | -------------------------------------------------------------------------------- /miscellaneous/Machine Fix/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Machine Fix" 2 | author: "harsoh" 3 | 4 | category: Miscellaneous 5 | 6 | description: | 7 | We ran a code on a machine a few years ago. It is still running however we forgot what it was meant for. It completed n=523693181734689806809285195318 iterations of the loop and broke down. We want the answer but cannot wait a few more years. Find the answer after n iterations to get the flag. 8 | 9 | The flag would be of the format csictf{answer_you_get_from_above}. 10 | 11 | value: 500 12 | type: dynamic 13 | 14 | decay: 450 15 | 16 | minimum: 100 17 | 18 | flags: 19 | - csictf{785539772602034710213927792950} 20 | 21 | tags: 22 | - miscellaneous 23 | - algo 24 | 25 | files: 26 | - "miscellaneous/Machine Fix/code.py" 27 | 28 | state: hidden 29 | 30 | version: "0.1" 31 | -------------------------------------------------------------------------------- /miscellaneous/Machine Fix/code.py: -------------------------------------------------------------------------------- 1 | def convert (n): 2 | if n == 0: 3 | return '0' 4 | nums = [] 5 | while n: 6 | n, r = divmod(n, 3) 7 | nums.append(str(r)) 8 | return ''.join(reversed(nums)) 9 | 10 | count=0 11 | n=1 12 | while(n<=523693181734689806809285195318): 13 | str1=convert(n) 14 | str2=convert(n-1) 15 | str2='0'*(len(str1)-len(str2))+str2 16 | for i in range(len(str1)): 17 | if(str1[i]!=str2[i]): 18 | count+=1 19 | n+=1 20 | 21 | print(count) -------------------------------------------------------------------------------- /miscellaneous/Machine Fix/sol.py: -------------------------------------------------------------------------------- 1 | n=int(input()) 2 | x=1 3 | ans=0 4 | while(x<=n): 5 | ans+=n//x 6 | x*=3 7 | print(ans) -------------------------------------------------------------------------------- /miscellaneous/Mafia/.dockerignore: -------------------------------------------------------------------------------- 1 | Dockerfile 2 | README.md 3 | challenge.yml 4 | -------------------------------------------------------------------------------- /miscellaneous/Mafia/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | lib32z1 xinetd 5 | 6 | RUN useradd -m ctf 7 | 8 | WORKDIR /home/ctf 9 | 10 | RUN cp -R /lib* /home/ctf && \ 11 | cp -R /usr/lib* /home/ctf 12 | 13 | RUN mkdir /home/ctf/dev && \ 14 | mknod /home/ctf/dev/null c 1 3 && \ 15 | mknod /home/ctf/dev/zero c 1 5 && \ 16 | mknod /home/ctf/dev/random c 1 8 && \ 17 | mknod /home/ctf/dev/urandom c 1 9 && \ 18 | chmod 666 /home/ctf/dev/* 19 | 20 | RUN mkdir /home/ctf/bin && \ 21 | cp /bin/sh /home/ctf/bin && \ 22 | cp /bin/ls /home/ctf/bin && \ 23 | cp /bin/cat /home/ctf/bin 24 | 25 | COPY ./ctf.xinetd /etc/xinetd.d/ctf 26 | COPY ./start.sh /start.sh 27 | RUN echo "Blocked by ctf_xinetd" > /etc/banner_fail 28 | 29 | RUN chmod +x /start.sh 30 | 31 | COPY ./bin/ /home/ctf/ 32 | RUN chown -R root:ctf /home/ctf && \ 33 | chmod -R 750 /home/ctf 34 | 35 | CMD ["/start.sh"] 36 | 37 | EXPOSE 9999 38 | -------------------------------------------------------------------------------- /miscellaneous/Mafia/ans.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | curr_max=1 4 | for i in range(1,301): 5 | print(1,i,curr_max) 6 | sys.stdout.flush() 7 | ch=input() 8 | if(ch=='G'): 9 | low = curr_max+1 10 | high = 1000000 11 | mid = 0 12 | 13 | while(low<=high): 14 | mid = (high + low) // 2 15 | print(1,i,mid) 16 | sys.stdout.flush() 17 | ch2=input() 18 | if(ch2=='G'): 19 | low = mid + 1 20 | elif(ch2=='L'): 21 | high = mid - 1 22 | else: 23 | if(mid>curr_max): 24 | curr_max=mid 25 | break 26 | 27 | print(2,curr_max) 28 | -------------------------------------------------------------------------------- /miscellaneous/Mafia/bin/Mafia: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Mafia/bin/Mafia -------------------------------------------------------------------------------- /miscellaneous/Mafia/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Mafia" 2 | author: "harsoh" 3 | 4 | category: Miscellaneous 5 | 6 | description: | 7 | The CTF Mafia wants to remove the competition (i.e.you) to again have monopoly over flags. Bribe the Mafia to get away unscathed and with the flag. 8 | 9 | nc chall.csivit.com 30721 10 | 11 | value: 500 12 | type: dynamic 13 | 14 | decay: 450 15 | 16 | minimum: 100 17 | 18 | flags: 19 | - csictf{y0u_ar5_t8e_k!ng_0f_rAnd0mne55} 20 | 21 | tags: 22 | - miscellaneous 23 | - algo 24 | 25 | files: 26 | - "miscellaneous/Mafia/prob.pdf" 27 | 28 | state: hidden 29 | 30 | version: "0.1" 31 | 32 | replicas: 2 33 | containers: 34 | server: 35 | build: . 36 | ports: 37 | - containerPort: 9999 38 | 39 | expose: 40 | - containerPort: 9999 41 | nodePort: 30721 42 | -------------------------------------------------------------------------------- /miscellaneous/Mafia/ctf.xinetd: -------------------------------------------------------------------------------- 1 | 2 | service ctf 3 | { 4 | disable = no 5 | socket_type = stream 6 | protocol = tcp 7 | wait = no 8 | user = root 9 | type = UNLISTED 10 | port = 9999 11 | bind = 0.0.0.0 12 | server = /usr/sbin/chroot 13 | server_args = --userspec=1000:1000 /home/ctf ./Mafia 14 | banner_fail = /etc/banner_fail 15 | # safety options 16 | per_source = 10 # the maximum instances of this service per source IP address 17 | rlimit_cpu = 1 # the maximum number of CPU seconds that the service may use 18 | #rlimit_as = 1024M # the Address Space resource limit for the service 19 | } 20 | -------------------------------------------------------------------------------- /miscellaneous/Mafia/prob.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/miscellaneous/Mafia/prob.pdf -------------------------------------------------------------------------------- /miscellaneous/Mafia/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | /etc/init.d/xinetd start; 4 | sleep infinity; 5 | -------------------------------------------------------------------------------- /miscellaneous/No DIStractions/README.md: -------------------------------------------------------------------------------- 1 | # No 'DIS'tractions 2 | 3 | Author: [Shiv10](https://github.com/Shiv10) 4 | 5 | ## Description 6 | 7 | This challenge is integrated with the discord bot made for the csictf 2020. The user will have to send a '.flag' command to the bot and the bot will send them the flag. 8 | 9 | ## Requirements 10 | 11 | - Discord 12 | 13 | ## Sources 14 | 15 | 16 | 17 | ``` 18 | I see all, I read all, but I shall not speak until I am asked to. Ask me, and thou shall recieve. 19 | 20 | 21 | Hint 1: It's all in the name - Points 100 22 | Hint 2: Siri and Alexa might be smarter than me, but they won't tell you the answer for this question, I will. - Points 200 23 | ``` 24 | 25 | ## Exploit 26 | 27 | 28 | The challenge requires the user to figure out that they have to send a private message to the bot in order to recieve the flag. Texting the bot on any of the text channels will not work and the bot will send the flag only when the user messages the bot privately. If you message the bot on an of the text channels, you get a response which hints you towards messaging the bot personally. 29 |
30 | 31 | 32 | The flag is: 33 | 34 | ``` 35 | csictf{m0r3_huMaN_than_Y0u} 36 | ``` -------------------------------------------------------------------------------- /miscellaneous/No DIStractions/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "No DIStractions" 2 | author: "Shiv10" 3 | 4 | 5 | category: Miscellaneous 6 | 7 | description: | 8 | I see all, I read all, but I shall not speak until I am 'commanded' to do so. Ask me, and thou shall recieve. 9 | 10 | value: 500 11 | type: dynamic 12 | 13 | decay: 450 14 | 15 | minimum: 100 16 | 17 | 18 | flags: 19 | - csictf{m0r3_huMaN_than_Y0u} 20 | 21 | 22 | tags: 23 | - discord 24 | 25 | 26 | state: hidden 27 | 28 | version: "0.1" -------------------------------------------------------------------------------- /miscellaneous/Prime Roll/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Prime Roll" 2 | author: "harsoh" 3 | 4 | category: Miscellaneous 5 | 6 | description: | 7 | We built a random number generator and it just rolls dice in the background and prints the result of the roll. We love prime numbers so a dice with (10^9)+7 (a famous prime number) sides is used. To simulate random behaviour, the machine rolls the dice n number of times, where n equals the 2^((10^9)+7) (th) prime number. We want to know the probability of the largest result among all these rolls being a prime number too. You can stop the machine from rolling dices till the Heat Death of the universe by telling us the answer beforehand. Calculate the first 10 digits after the decimal place. 8 | 9 | The flag will look like -> csictf{first_10_digits_after_the_decimal_point} 10 | 11 | value: 500 12 | type: dynamic 13 | 14 | decay: 450 15 | 16 | minimum: 100 17 | 18 | flags: 19 | - csictf{9999999999} 20 | 21 | tags: 22 | - miscellaneous 23 | - algo 24 | 25 | state: hidden 26 | 27 | version: "0.1" 28 | -------------------------------------------------------------------------------- /miscellaneous/Prison Break/.dockerignore: -------------------------------------------------------------------------------- 1 | Dockerfile 2 | README.md 3 | challenge.yml 4 | -------------------------------------------------------------------------------- /miscellaneous/Prison Break/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:2.7-slim 2 | 3 | RUN apt-get update && apt-get install -y \ 4 | xinetd \ 5 | && rm -rf /var/lib/apt/lists/* 6 | 7 | RUN mkdir /ctf 8 | WORKDIR /ctf 9 | RUN useradd -M -d /ctf ctf 10 | 11 | RUN echo "Connection blocked" > /etc/banner_fail 12 | COPY ctf.xinetd /etc/xinetd.d/ctf 13 | COPY ./src /ctf/ 14 | 15 | RUN chown -R root:ctf /ctf && \ 16 | chmod -R 750 /ctf && \ 17 | chmod 740 /ctf/flag.txt 18 | 19 | ENTRYPOINT [] 20 | CMD ["/usr/sbin/xinetd", "-dontfork"] 21 | 22 | EXPOSE 9999 23 | -------------------------------------------------------------------------------- /miscellaneous/Prison Break/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Prison Break" 2 | author: "roerohan" 3 | category: Miscellaneous 4 | 5 | description: | 6 | I saw them put someone in jail. Can you find out who it is? 7 | They said this is the best prison ever built. You sure can't break it, can you? 8 | 9 | nc chall.csivit.com 30407 10 | 11 | value: 500 12 | type: dynamic 13 | 14 | decay: 450 15 | minimum: 100 16 | 17 | flags: 18 | - csictf{m1ch34l_sc0fi3ld_fr0m_pr1s0n_br34k} 19 | 20 | tags: 21 | - miscellaneous 22 | - jail 23 | 24 | state: hidden 25 | version: "0.1" 26 | 27 | replicas: 2 28 | containers: 29 | server: 30 | build: . 31 | ports: 32 | - containerPort: 9999 33 | 34 | expose: 35 | - containerPort: 9999 36 | nodePort: 30407 37 | -------------------------------------------------------------------------------- /miscellaneous/Prison Break/ctf.xinetd: -------------------------------------------------------------------------------- 1 | service ctf 2 | { 3 | disable = no 4 | socket_type = stream 5 | protocol = tcp 6 | wait = no 7 | user = ctf 8 | type = UNLISTED 9 | port = 9999 10 | bind = 0.0.0.0 11 | server = /bin/sh 12 | server_args = /ctf/start.sh 13 | banner_fail = /etc/banner_fail 14 | # safety options 15 | per_source = 10 # the maximum instances of this service per source IP address 16 | rlimit_cpu = 1 # the maximum number of CPU seconds that the service may use 17 | #rlimit_as = 1024M # the Address Space resource limit for the service 18 | } -------------------------------------------------------------------------------- /miscellaneous/Prison Break/src/flag.txt: -------------------------------------------------------------------------------- 1 | The flag is in the source code. -------------------------------------------------------------------------------- /miscellaneous/Prison Break/src/jail.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | import sys 4 | 5 | class Sandbox(object): 6 | def execute(self, code_string): 7 | exec(code_string) 8 | sys.stdout.flush() 9 | 10 | sandbox = Sandbox() 11 | 12 | _raw_input = raw_input 13 | 14 | main = sys.modules["__main__"].__dict__ 15 | orig_builtins = main["__builtins__"].__dict__ 16 | 17 | builtins_whitelist = set(( 18 | #exceptions 19 | 'ArithmeticError', 'AssertionError', 'AttributeError', 'Exception', 20 | 21 | #constants 22 | 'False', 'None', 'True', 23 | 24 | #types 25 | 'basestring', 'bytearray', 'bytes', 'complex', 'dict', 26 | 27 | #functions 28 | 'abs', 'bin', 'dir', 'help' 29 | 30 | # blocked: eval, execfile, exit, file, quit, reload, import, etc. 31 | )) 32 | 33 | for builtin in orig_builtins.keys(): 34 | if builtin not in builtins_whitelist: 35 | del orig_builtins[builtin] 36 | 37 | print("Find the flag.") 38 | sys.stdout.flush() 39 | 40 | def flag_function(): 41 | flag = "csictf{m1ch34l_sc0fi3ld_fr0m_pr1s0n_br34k}" 42 | 43 | while 1: 44 | try: 45 | sys.stdout.write(">>> ") 46 | sys.stdout.flush() 47 | code = _raw_input() 48 | sandbox.execute(code) 49 | 50 | except Exception: 51 | print("You have encountered an error.") 52 | sys.stdout.flush() 53 | -------------------------------------------------------------------------------- /miscellaneous/Prison Break/src/start.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | cd /ctf 4 | /usr/local/bin/python jail.py -------------------------------------------------------------------------------- /miscellaneous/README.md: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | 3 | This directory consists of challenges that are `Miscellaneous`. Please follow the guidelines mentioned in the [template](../README.md) while making contributions. -------------------------------------------------------------------------------- /osint/Commitment/README.md: -------------------------------------------------------------------------------- 1 | # Commitment 2 | Author: [ashikka](https://github.com/ashikka) 3 | 4 | ## Description 5 | 6 | General github knowledge and Sherlock 7 | 8 | ## Requirements 9 | 10 | - Github 11 | - Sherlock 12 | 13 | ## Sources 14 | 15 | - [hoshimaseok](https://github.com/hoshimaseok) 16 | 17 | 18 | ``` 19 | hoshimaseok is up to no good. Track him down. 20 | ``` 21 | 22 | 23 | ## Exploit 24 | 25 | You need to search all accounts on the internet using the username `hoshimaseok` using the tool [Sherlock](https://github.com/sherlock-project/sherlock). Once you land on the github account, you see there is one repository named `SomethingFishy`. In this repository, on the branch `dev`, there are many folders, full of random code, that doesn't really make any sense. On scouring through the commit history, you stumble across something unsual. The `.gitignore` file has been updated twice. 26 |
27 | 28 | Now, when you open this commit, you find out that the user had mistakenly pushed his `.env` file with the flag and had forgotten to add `.env` to the `.gitignore` file. 29 |
30 | 31 | 32 | The flag is: 33 | 34 | ``` 35 | csictf{sc4r3d_0f_c0mm1tm3nt} 36 | ``` 37 | -------------------------------------------------------------------------------- /osint/Commitment/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Commitment" 2 | author: "ashikka" 3 | category: OSINT 4 | 5 | description: hoshimaseok is up to no good. Track him down. 6 | 7 | value: 500 8 | type: dynamic 9 | 10 | decay: 450 11 | minimum: 100 12 | 13 | flags: 14 | - csictf{sc4r3d_0f_c0mm1tm3nt} 15 | 16 | tags: 17 | - osint 18 | 19 | state: hidden 20 | version: "0.1" -------------------------------------------------------------------------------- /osint/Flying Places/Flight.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/osint/Flying Places/Flight.jpg -------------------------------------------------------------------------------- /osint/Flying Places/README.md: -------------------------------------------------------------------------------- 1 | # Flying Places 2 | 3 | Author: [parthkgh24](https://github.com/parthkgh24) 4 | 5 | ## Description 6 | This is an osint challenge. 7 | 8 | ## Requirements 9 | 10 | - None 11 | 12 | ## Sources 13 | ``` 14 | A reporter wanted to know where this flight is headed. Where does he (the reporter) live? 15 | ``` 16 | 17 | 18 | ## Exploit 19 | 20 | This picture is from Jack Ma's Twitter account which shows a flight carrying masks to be sent to the US. On going through the comments, someone named Sergio Quintana asks where the flight is headed. On going through his account, we can see that he lives in San Francisco. 21 | 22 | The flag is: 23 | 24 | ``` 25 | csictf{san_francisco} 26 | ``` 27 | 28 | -------------------------------------------------------------------------------- /osint/Flying Places/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Flying Places" 2 | author: :"Parth" 3 | category: "OSINT" 4 | 5 | description: | 6 | A reporter wanted to know where this flight is headed. Where does he (the reporter) live? 7 | 8 | value: 500 9 | type: dynamic 10 | 11 | 12 | decay: 450 13 | 14 | 15 | minimum: 100 16 | 17 | flags: 18 | - csictf{san_francisco} 19 | 20 | tags: 21 | - "osint" 22 | - "research" 23 | 24 | files: 25 | - "osint/Flying Places/Flight.jpg" 26 | 27 | state: hidden 28 | 29 | version: "0.1" -------------------------------------------------------------------------------- /osint/Lo Scampo/README.md: -------------------------------------------------------------------------------- 1 | # Lo Scampo 2 | 3 | Author: [SrishtiGohain](https:github.com/SrishtiGohain) 4 | 5 | ## Description 6 | 7 | This is a simple OSINT challenge. 8 | 9 | ## Requirements 10 | 11 | - none 12 | 13 | ## Sources 14 | 15 | ``` 16 | Malcolm X took Broiestevane to a Day of the Dead themed party but she never returned. Her only friends, Mr Bean and the Pink Panther realised that she was missing when she didn't show up for an exam. Broistevane liked posting pictures, where was the party held? 17 | (Don't forget to wrap your answer in csictf{}) 18 | ``` 19 | 20 | ## Exploit 21 | 22 | Go to Mr Bean's Instagram account. Go through the posts until you come across [this](https://www.instagram.com/p/CBBAgC9ohzT/), a video of Mr Bean and the Pink Panther giving an exam. In the comments section of this post, you'll find people asking if Mr Bean has found Broiestevane yet, with links to her account. Go to her [account](https://www.instagram.com/broiestevane/?hl=en), you'll see that her final posts are from a party (apparently). In her bio, there is a [link](https://www.instagram.com/p/B3pJE1CgMvI/) to the Day of the Dead party held at The Liberty Hotel. 23 | 24 | The flag is: 25 | ``` 26 | csictf{liberty_hotel} 27 | ``` 28 | -------------------------------------------------------------------------------- /osint/Lo Scampo/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Lo Scampo" 2 | author: "SrishtiGohain" 3 | category: OSINT 4 | 5 | description: | 6 | 'Malcolm X took Broiestevane to a Day of the Dead themed party but she never returned. Her only friends, Mr Bean and the Pink Panther realised that she was missing when she didn't show up for an exam. Broiestevane liked posting pictures, where was the party held? 7 | (Don't forget to wrap your answer in csictf{})' 8 | 9 | value: 500 10 | type: dynamic 11 | 12 | decay: 450 13 | minimum: 100 14 | 15 | flags: 16 | - csictf{liberty_hotel} 17 | - csictf{liberty_hotel_boston} 18 | 19 | tags: 20 | - osint 21 | 22 | state: hidden 23 | version: "0.1" -------------------------------------------------------------------------------- /osint/Pirates of the Memorial/README.md: -------------------------------------------------------------------------------- 1 | # Pirates of the Memorial 2 | 3 | Author: [roerohan](https://github.com/roerohan) 4 | 5 | ## Description 6 | 7 | An OSINT challenge where you scour the internet to find the owner of this image. 8 | 9 | ## Requirements 10 | 11 | - Internet 12 | 13 | ## Sources 14 | 15 | - [storm.jpeg](./storm.jpeg) 16 | 17 | ``` 18 | The original photographer of this picture commented the flag on his post. Find the flag. 19 | ``` 20 | 21 | ## Exploit 22 | 23 | When you search the image on `Google`, you find out that it's a picture of `Victoria Memorial`. Then you see some tweets with that picture by `Rishi Bargee`. When you open it, you see there's a comment asking who took this picture, and someone has replied that it was taken by `Arunopal Banerjee`. When you search him up, you find his `Facebook` and `Instagram`, etc. You can see that he's mostly active and posting on his instagram channel. 24 |
25 | 26 | Now, when you search through his channel, you find the same picture, in [this](https://www.instagram.com/p/B3oKrLQgpko/?utm_source=ig_web_copy_link) post. Scrolling through the comments, you find the flag. 27 |
28 | 29 | The flag is: 30 | 31 | ``` 32 | csictf{pl4g14r1sm_1s_b4d} 33 | ``` -------------------------------------------------------------------------------- /osint/Pirates of the Memorial/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Pirates of the Memorial" 2 | author: "roerohan" 3 | category: OSINT 4 | 5 | description: | 6 | The original photographer of this picture commented the flag on his post. Find the flag. 7 | 8 | value: 500 9 | type: dynamic 10 | 11 | decay: 450 12 | minimum: 100 13 | 14 | flags: 15 | - csictf{pl4g14r1sm_1s_b4d} 16 | 17 | files: 18 | - "osint/Pirates of the Memorial/storm.jpeg" 19 | 20 | tags: 21 | - osint 22 | 23 | state: hidden 24 | version: "0.1" 25 | -------------------------------------------------------------------------------- /osint/Pirates of the Memorial/storm.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/osint/Pirates of the Memorial/storm.jpeg -------------------------------------------------------------------------------- /osint/README.md: -------------------------------------------------------------------------------- 1 | # OSINT (Open Source Intelligence) 2 | 3 | This directory consists of challenges related to `OSINT`. Please follow the guidelines mentioned in the [template](../README.md) while making contributions. -------------------------------------------------------------------------------- /osint/Shaken/300 M.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/osint/Shaken/300 M.jpg -------------------------------------------------------------------------------- /osint/Shaken/README.md: -------------------------------------------------------------------------------- 1 | # Flying Places 2 | 3 | Author: [parthkgh24](https://github.com/parthkgh24) 4 | 5 | ## Description 6 | This is an osint challenge. 7 | 8 | ## Requirements 9 | 10 | - None 11 | 12 | ## Sources 13 | ``` 14 | I love this watch. It's been with me all over the world, from Istanbul to Shanghai to Macau.I wear it with suits quite a lot. My boss liked it too. I remember wearing it when she died. What is her successor's name? 15 | ``` 16 | 17 | 18 | ## Exploit 19 | 20 | The question mentions wearing the watch in Istanbul, Shanghai and Macau. On searching these locations, the results all show flight tickets but on moving in a few more pages, results for Skyfall start to appear. Even quicker if you put the word movie as part of the search history. The suits, along with the death of the boss all point toward James Bond, namely in Skyfall. Once the person is recognized as James Bond, it becomes easy to find his boss in Skyfall (M), and her successor. 21 | 22 | The flag is: 23 | 24 | ``` 25 | csictf{gareth_mallory} 26 | ``` 27 | 28 | -------------------------------------------------------------------------------- /osint/Shaken/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Shaken" 2 | author: "Parth" 3 | category: "OSINT" 4 | 5 | description: | 6 | I love this watch. It's been with me all over the world, from Istanbul to Shanghai to Macau.I wear it with suits quite a lot. My boss liked it too. I remember wearing it when she died. What is her successor's name? 7 | 8 | value: 500 9 | type: dynamic 10 | 11 | 12 | decay: 450 13 | 14 | 15 | minimum: 100 16 | 17 | flags: 18 | - csictf{gareth_mallory} 19 | 20 | tags: 21 | - "osint" 22 | - "research" 23 | 24 | state: hidden 25 | 26 | version: "0.1" 27 | -------------------------------------------------------------------------------- /osint/Stalin for time/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Stalin for time" 2 | author: :"Parth" 3 | category: "OSINT" 4 | 5 | description: | 6 | "There are 3 parts to this challenge. Who took it? What was "taken"? 7 | Note The format of the flag is csictf{answer1_answer2}" 8 | 9 | value: 500 10 | type: dynamic 11 | 12 | 13 | decay: 450 14 | 15 | 16 | minimum: 100 17 | 18 | flags: 19 | - csictf{yevgeny_khaldei_adrianov_compass} 20 | 21 | tags: 22 | - "osint" 23 | - "research" 24 | 25 | files: 26 | - "osint/Stalin for time/Stalinfortimewebpage.html" 27 | - "osint/Stalin for time/dwayneanddavid.jpg" 28 | 29 | state: hidden 30 | 31 | version: "0.1" 32 | -------------------------------------------------------------------------------- /osint/Stalin for time/dwayneanddavid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/osint/Stalin for time/dwayneanddavid.jpg -------------------------------------------------------------------------------- /pwn/Global Warming/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | lib32z1 xinetd 5 | 6 | RUN useradd -m ctf 7 | 8 | WORKDIR /home/ctf 9 | 10 | RUN cp -R /lib* /home/ctf && \ 11 | cp -R /usr/lib* /home/ctf 12 | 13 | RUN mkdir /home/ctf/dev && \ 14 | mknod /home/ctf/dev/null c 1 3 && \ 15 | mknod /home/ctf/dev/zero c 1 5 && \ 16 | mknod /home/ctf/dev/random c 1 8 && \ 17 | mknod /home/ctf/dev/urandom c 1 9 && \ 18 | chmod 666 /home/ctf/dev/* 19 | 20 | RUN mkdir /home/ctf/bin && \ 21 | cp /bin/sh /home/ctf/bin && \ 22 | cp /bin/ls /home/ctf/bin && \ 23 | cp /bin/cat /home/ctf/bin 24 | 25 | COPY ./ctf.xinetd /etc/xinetd.d/ctf 26 | COPY ./start.sh /start.sh 27 | RUN echo "Blocked by ctf_xinetd" > /etc/banner_fail 28 | 29 | RUN chmod +x /start.sh 30 | 31 | COPY ./bin/ /home/ctf/ 32 | RUN chown -R root:ctf /home/ctf && \ 33 | chmod -R 750 /home/ctf && \ 34 | chmod 740 /home/ctf/flag.txt 35 | 36 | CMD ["/start.sh"] 37 | 38 | EXPOSE 9999 -------------------------------------------------------------------------------- /pwn/Global Warming/bin/flag.txt: -------------------------------------------------------------------------------- 1 | csictf{n0_5tr1ng5_@tt@ch3d} -------------------------------------------------------------------------------- /pwn/Global Warming/bin/global-warming: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/pwn/Global Warming/bin/global-warming -------------------------------------------------------------------------------- /pwn/Global Warming/bin/global-warming.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | int admin = 0; 6 | 7 | void login(char username[10], char *pass) 8 | { 9 | 10 | printf(pass); 11 | if (admin == 0xb4dbabe3) 12 | { 13 | system("cat flag.txt"); 14 | } 15 | else 16 | { 17 | printf("You cannot login as admin."); 18 | } 19 | } 20 | 21 | int main() 22 | { 23 | setbuf(stdout, NULL); 24 | setbuf(stdin, NULL); 25 | setbuf(stderr, NULL); 26 | 27 | char pass[1024]; 28 | fgets(pass, sizeof(pass), stdin); 29 | 30 | login("User", pass); 31 | } 32 | -------------------------------------------------------------------------------- /pwn/Global Warming/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Global Warming" 2 | author: "AJ1479" 3 | category: Pwn 4 | 5 | description: | 6 | Greta Thunberg 1 Administration 0 7 | 8 | nc chall.csivit.com 30023 9 | 10 | 11 | value: 500 12 | type: dynamic 13 | 14 | decay: 450 15 | minimum: 100 16 | 17 | flags: 18 | - csictf{n0_5tr1ng5_@tt@ch3d} 19 | 20 | files: 21 | - "pwn/Global Warming/bin/global-warming" 22 | 23 | tags: 24 | - pwn 25 | 26 | state: hidden 27 | version: "0.1" 28 | 29 | replicas: 2 30 | containers: 31 | server: 32 | build: . 33 | ports: 34 | - containerPort: 9999 35 | 36 | expose: 37 | - containerPort: 9999 38 | nodePort: 30023 39 | -------------------------------------------------------------------------------- /pwn/Global Warming/ctf.xinetd: -------------------------------------------------------------------------------- 1 | service ctf 2 | { 3 | disable = no 4 | socket_type = stream 5 | protocol = tcp 6 | wait = no 7 | user = root 8 | type = UNLISTED 9 | port = 9999 10 | bind = 0.0.0.0 11 | server = /usr/sbin/chroot 12 | server_args = --userspec=1000:1000 /home/ctf ./global-warming 13 | banner_fail = /etc/banner_fail 14 | # safety options 15 | per_source = 10 # the maximum instances of this service per source IP address 16 | rlimit_cpu = 1 # the maximum number of CPU seconds that the service may use 17 | #rlimit_as = 1024M # the Address Space resource limit for the service 18 | } -------------------------------------------------------------------------------- /pwn/Global Warming/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | /etc/init.d/xinetd start; 4 | sleep infinity; 5 | -------------------------------------------------------------------------------- /pwn/README.md: -------------------------------------------------------------------------------- 1 | # Pwn 2 | 3 | This directory consists of challenges related to `Pwn`. Please follow the guidelines mentioned in the [template](../README.md) while making contributions. -------------------------------------------------------------------------------- /pwn/Secret Society/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | lib32z1 xinetd 5 | 6 | RUN useradd -m ctf 7 | 8 | WORKDIR /home/ctf 9 | 10 | RUN cp -R /lib* /home/ctf && \ 11 | cp -R /usr/lib* /home/ctf 12 | 13 | RUN mkdir /home/ctf/dev && \ 14 | mknod /home/ctf/dev/null c 1 3 && \ 15 | mknod /home/ctf/dev/zero c 1 5 && \ 16 | mknod /home/ctf/dev/random c 1 8 && \ 17 | mknod /home/ctf/dev/urandom c 1 9 && \ 18 | chmod 666 /home/ctf/dev/* 19 | 20 | RUN mkdir /home/ctf/bin && \ 21 | cp /bin/sh /home/ctf/bin && \ 22 | cp /bin/ls /home/ctf/bin && \ 23 | cp /bin/cat /home/ctf/bin 24 | 25 | COPY ./ctf.xinetd /etc/xinetd.d/ctf 26 | COPY ./start.sh /start.sh 27 | RUN echo "Blocked by ctf_xinetd" > /etc/banner_fail 28 | 29 | RUN chmod +x /start.sh 30 | 31 | COPY ./bin/ /home/ctf/ 32 | RUN chown -R root:ctf /home/ctf && \ 33 | chmod -R 750 /home/ctf && \ 34 | chmod 740 /home/ctf/flag.txt 35 | 36 | CMD ["/start.sh"] 37 | 38 | EXPOSE 9999 -------------------------------------------------------------------------------- /pwn/Secret Society/README.md: -------------------------------------------------------------------------------- 1 | # Secret Society 2 | 3 | Author: [harsoh](https://github.com/harsoh) 4 | 5 | ## Description 6 | 7 | Challenge based on buffer overflow exploit. 8 | 9 | ## Requirements 10 | 11 | - Docker: [Dockerfile](./Dockerfile) 12 | 13 | ## Sources 14 | 15 | - [prob.c](./prob.c) 16 | 17 | ``` 18 | Wanna enter the Secret Society? Well you have to find the secret code first! 19 | 20 | ``` 21 | 22 | ## Exploit 23 | 24 | The question asks us for the secret phrase and that is the only thing we can enter. So to get the flag we have to exploit it somehow. The first thing to notice is that the secret_phrase buffer comes just after the flag buffer. Noticing that the strcat function can cause an overflow leads to the answer. We need to do a stack flood, i.e. just input alot of random bits and the strcat function would append some string to to the secret_phrase buffer and push the null byte to the flag buffer and thus printing out the secret phrase along with the flag. 25 | 26 | ``` 27 | $ python2 -c "print 'a'*1000" | ./Secret Society 28 | ``` 29 | 30 |
31 | 32 | The flag is: 33 | 34 | ``` 35 | csivit{Bu!!er_e3pl01ts_ar5_5asy} 36 | ``` 37 | -------------------------------------------------------------------------------- /pwn/Secret Society/bin/flag.txt: -------------------------------------------------------------------------------- 1 | csivit{Bu!!er_e3pl01ts_ar5_5asy} 2 | -------------------------------------------------------------------------------- /pwn/Secret Society/bin/prob.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | 8 | int main(int argc, char **argv){ 9 | 10 | setvbuf(stdout, NULL, _IONBF, 0); 11 | 12 | gid_t gid = getegid(); 13 | setresgid(gid, gid, gid); 14 | 15 | FILE *file; 16 | char flag[50]; 17 | char secret_phrase[128]; 18 | 19 | memset(flag, 0, sizeof(flag)); 20 | memset(secret_phrase, 0, sizeof(secret_phrase)); 21 | 22 | printf("What is the secret phrase?\n"); 23 | 24 | fgets(secret_phrase, sizeof(secret_phrase), stdin); 25 | char *end = strchr(secret_phrase, '\n'); 26 | if (end != NULL) { 27 | *end = '\x00'; 28 | } 29 | 30 | strcat(secret_phrase, ", we are everywhere."); 31 | 32 | file = fopen("flag.txt", "r"); 33 | if (file == NULL) { 34 | printf("You are a double agent, it's game over for you."); 35 | exit(0); 36 | } 37 | 38 | 39 | fgets(flag, sizeof(flag), file); 40 | 41 | printf("Shhh... don't tell anyone else about "); 42 | puts(secret_phrase); 43 | 44 | return 0; 45 | } -------------------------------------------------------------------------------- /pwn/Secret Society/bin/secret-society: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/pwn/Secret Society/bin/secret-society -------------------------------------------------------------------------------- /pwn/Secret Society/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Secret Society" 2 | author: "harsoh" 3 | 4 | category: Pwn 5 | 6 | description: | 7 | Wanna enter the Secret Society? Well you have to find the secret code first! 8 | 9 | nc chall.csivit.com 30041 10 | 11 | value: 500 12 | type: dynamic 13 | 14 | decay: 450 15 | 16 | minimum: 100 17 | 18 | flags: 19 | - csivit{Bu!!er_e3pl01ts_ar5_5asy} 20 | 21 | tags: 22 | - pwn 23 | 24 | files: 25 | - "pwn/Secret Society/bin/secret-society" 26 | 27 | state: hidden 28 | 29 | version: "0.1" 30 | 31 | replicas: 2 32 | containers: 33 | server: 34 | build: . 35 | ports: 36 | - containerPort: 9999 37 | 38 | expose: 39 | - containerPort: 9999 40 | nodePort: 30041 41 | -------------------------------------------------------------------------------- /pwn/Secret Society/ctf.xinetd: -------------------------------------------------------------------------------- 1 | service ctf 2 | { 3 | disable = no 4 | socket_type = stream 5 | protocol = tcp 6 | wait = no 7 | user = root 8 | type = UNLISTED 9 | port = 9999 10 | bind = 0.0.0.0 11 | server = /usr/sbin/chroot 12 | server_args = --userspec=1000:1000 /home/ctf ./secret-society 13 | banner_fail = /etc/banner_fail 14 | # safety options 15 | per_source = 10 # the maximum instances of this service per source IP address 16 | rlimit_cpu = 1 # the maximum number of CPU seconds that the service may use 17 | #rlimit_as = 1024M # the Address Space resource limit for the service 18 | } -------------------------------------------------------------------------------- /pwn/Secret Society/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | /etc/init.d/xinetd start; 4 | sleep infinity; 5 | -------------------------------------------------------------------------------- /pwn/Smash/.dockerignore: -------------------------------------------------------------------------------- 1 | README.md 2 | Dockerfile 3 | challenge.yml 4 | libc.so.6 -------------------------------------------------------------------------------- /pwn/Smash/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | lib32z1 \ 5 | xinetd \ 6 | && rm -rf /var/lib/apt/lists/* 7 | 8 | RUN useradd -m ctf 9 | 10 | WORKDIR /ctf 11 | 12 | RUN echo "Connection blocked" > /etc/banner_fail 13 | COPY ctf.xinetd /etc/xinetd.d/ctf 14 | COPY . . 15 | 16 | RUN chmod -R 755 /ctf 17 | 18 | ENTRYPOINT [] 19 | CMD ["/usr/sbin/xinetd", "-dontfork"] 20 | 21 | EXPOSE 9999 -------------------------------------------------------------------------------- /pwn/Smash/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Smash" 2 | author: "alias-rahil" 3 | category: Pwn 4 | 5 | description: | 6 | My first C program that says hello, do you want to try it? 7 | 8 | https://mega.nz/file/UmoyyapQ#jMcq5WmcV-kPusmokMH-okJX6czkgkmMuItRaHWBbU0 9 | 10 | nc chall.csivit.com 30046 11 | 12 | value: 500 13 | type: dynamic 14 | 15 | decay: 450 16 | minimum: 100 17 | 18 | flags: 19 | - csictf{5up32_m4210_5m45h_8202} 20 | 21 | files: 22 | - "pwn/Smash/hello" 23 | 24 | tags: 25 | - pwn 26 | - binary 27 | 28 | state: hidden 29 | version: "0.1" 30 | 31 | replicas: 2 32 | containers: 33 | server: 34 | build: . 35 | ports: 36 | - containerPort: 9999 37 | 38 | expose: 39 | - containerPort: 9999 40 | nodePort: 30046 41 | -------------------------------------------------------------------------------- /pwn/Smash/ctf.xinetd: -------------------------------------------------------------------------------- 1 | 2 | service ctf 3 | { 4 | disable = no 5 | socket_type = stream 6 | protocol = tcp 7 | wait = no 8 | user = ctf 9 | type = UNLISTED 10 | port = 9999 11 | bind = 0.0.0.0 12 | server = /bin/sh 13 | server_args = /ctf/start.sh 14 | banner_fail = /etc/banner_fail 15 | # safety options 16 | per_source = 10 # the maximum instances of this service per source IP address 17 | rlimit_cpu = 1 # the maximum number of CPU seconds that the service may use 18 | #rlimit_as = 1024M # the Address Space resource limit for the service 19 | } -------------------------------------------------------------------------------- /pwn/Smash/flag.txt: -------------------------------------------------------------------------------- 1 | csictf{5up32_m4210_5m45h_8202} -------------------------------------------------------------------------------- /pwn/Smash/hello: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/pwn/Smash/hello -------------------------------------------------------------------------------- /pwn/Smash/libc.so.6: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/pwn/Smash/libc.so.6 -------------------------------------------------------------------------------- /pwn/Smash/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | cd /ctf 3 | ./hello -------------------------------------------------------------------------------- /pwn/pwn intended 0x1/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | lib32z1 xinetd 5 | 6 | RUN useradd -m ctf 7 | 8 | WORKDIR /home/ctf 9 | 10 | RUN cp -R /lib* /home/ctf && \ 11 | cp -R /usr/lib* /home/ctf 12 | 13 | RUN mkdir /home/ctf/dev && \ 14 | mknod /home/ctf/dev/null c 1 3 && \ 15 | mknod /home/ctf/dev/zero c 1 5 && \ 16 | mknod /home/ctf/dev/random c 1 8 && \ 17 | mknod /home/ctf/dev/urandom c 1 9 && \ 18 | chmod 666 /home/ctf/dev/* 19 | 20 | RUN mkdir /home/ctf/bin && \ 21 | cp /bin/sh /home/ctf/bin && \ 22 | cp /bin/ls /home/ctf/bin && \ 23 | cp /bin/cat /home/ctf/bin 24 | 25 | COPY ./ctf.xinetd /etc/xinetd.d/ctf 26 | COPY ./start.sh /start.sh 27 | RUN echo "Blocked by ctf_xinetd" > /etc/banner_fail 28 | 29 | RUN chmod +x /start.sh 30 | 31 | COPY ./bin/ /home/ctf/ 32 | RUN chown -R root:ctf /home/ctf && \ 33 | chmod -R 750 /home/ctf && \ 34 | chmod 740 /home/ctf/flag.txt 35 | 36 | CMD ["/start.sh"] 37 | 38 | EXPOSE 9999 -------------------------------------------------------------------------------- /pwn/pwn intended 0x1/bin/flag.txt: -------------------------------------------------------------------------------- 1 | csictf{y0u_ov3rfl0w3d_th@t_c0ff33_l1ke_@_buff3r} -------------------------------------------------------------------------------- /pwn/pwn intended 0x1/bin/pwn-intended-0x1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/pwn/pwn intended 0x1/bin/pwn-intended-0x1 -------------------------------------------------------------------------------- /pwn/pwn intended 0x1/bin/pwn-intended-0x1.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main() 4 | { 5 | int floor = 0; 6 | char coffee[30]; 7 | 8 | setbuf(stdout, NULL); 9 | setbuf(stdin, NULL); 10 | setbuf(stderr, NULL); 11 | 12 | puts("Please pour me some coffee:"); 13 | gets(coffee); 14 | 15 | puts("\nThanks!\n"); 16 | 17 | if (floor != 0) 18 | { 19 | puts("Oh no, you spilled some coffee on the floor! Use the flag to clean it."); 20 | system("cat flag.txt"); 21 | } 22 | } -------------------------------------------------------------------------------- /pwn/pwn intended 0x1/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "pwn intended 0x1" 2 | author: "roerohan" 3 | category: Pwn 4 | 5 | description: | 6 | I really want to have some coffee! 7 | 8 | nc chall.csivit.com 30001 9 | 10 | value: 500 11 | type: dynamic 12 | 13 | decay: 450 14 | minimum: 100 15 | 16 | flags: 17 | - csictf{y0u_ov3rfl0w3d_th@t_c0ff33_l1ke_@_buff3r} 18 | 19 | files: 20 | - "pwn/pwn intended 0x1/bin/pwn-intended-0x1" 21 | 22 | tags: 23 | - pwn 24 | 25 | state: hidden 26 | version: "0.1" 27 | 28 | replicas: 2 29 | containers: 30 | server: 31 | build: . 32 | ports: 33 | - containerPort: 9999 34 | 35 | expose: 36 | - containerPort: 9999 37 | nodePort: 30001 38 | -------------------------------------------------------------------------------- /pwn/pwn intended 0x1/ctf.xinetd: -------------------------------------------------------------------------------- 1 | service ctf 2 | { 3 | disable = no 4 | socket_type = stream 5 | protocol = tcp 6 | wait = no 7 | user = root 8 | type = UNLISTED 9 | port = 9999 10 | bind = 0.0.0.0 11 | server = /usr/sbin/chroot 12 | server_args = --userspec=1000:1000 /home/ctf ./pwn-intended-0x1 13 | banner_fail = /etc/banner_fail 14 | # safety options 15 | per_source = 10 # the maximum instances of this service per source IP address 16 | rlimit_cpu = 1 # the maximum number of CPU seconds that the service may use 17 | #rlimit_as = 1024M # the Address Space resource limit for the service 18 | } -------------------------------------------------------------------------------- /pwn/pwn intended 0x1/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | /etc/init.d/xinetd start; 4 | sleep infinity; 5 | -------------------------------------------------------------------------------- /pwn/pwn intended 0x1/static/img1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/pwn/pwn intended 0x1/static/img1.png -------------------------------------------------------------------------------- /pwn/pwn intended 0x2/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | lib32z1 xinetd 5 | 6 | RUN useradd -m ctf 7 | 8 | WORKDIR /home/ctf 9 | 10 | RUN cp -R /lib* /home/ctf && \ 11 | cp -R /usr/lib* /home/ctf 12 | 13 | RUN mkdir /home/ctf/dev && \ 14 | mknod /home/ctf/dev/null c 1 3 && \ 15 | mknod /home/ctf/dev/zero c 1 5 && \ 16 | mknod /home/ctf/dev/random c 1 8 && \ 17 | mknod /home/ctf/dev/urandom c 1 9 && \ 18 | chmod 666 /home/ctf/dev/* 19 | 20 | RUN mkdir /home/ctf/bin && \ 21 | cp /bin/sh /home/ctf/bin && \ 22 | cp /bin/ls /home/ctf/bin && \ 23 | cp /bin/cat /home/ctf/bin 24 | 25 | COPY ./ctf.xinetd /etc/xinetd.d/ctf 26 | COPY ./start.sh /start.sh 27 | RUN echo "Blocked by ctf_xinetd" > /etc/banner_fail 28 | 29 | RUN chmod +x /start.sh 30 | 31 | COPY ./bin/ /home/ctf/ 32 | RUN chown -R root:ctf /home/ctf && \ 33 | chmod -R 750 /home/ctf && \ 34 | chmod 740 /home/ctf/flag.txt 35 | 36 | CMD ["/start.sh"] 37 | 38 | EXPOSE 9999 -------------------------------------------------------------------------------- /pwn/pwn intended 0x2/bin/flag.txt: -------------------------------------------------------------------------------- 1 | csictf{c4n_y0u_re4lly_telep0rt?} -------------------------------------------------------------------------------- /pwn/pwn intended 0x2/bin/pwn-intended-0x2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/pwn/pwn intended 0x2/bin/pwn-intended-0x2 -------------------------------------------------------------------------------- /pwn/pwn intended 0x2/bin/pwn-intended-0x2.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main() { 4 | int check = 0; 5 | char teleport[30]; 6 | 7 | setbuf(stdout, NULL); 8 | setbuf(stdin, NULL); 9 | setbuf(stderr, NULL); 10 | 11 | puts("Welcome to csictf! Where are you headed?"); 12 | gets(teleport); 13 | 14 | puts("Safe Journey!"); 15 | if (check == 0xcafebabe) { 16 | puts("You've reached your destination, here's a flag!"); 17 | system("/bin/cat flag.txt"); 18 | } 19 | } -------------------------------------------------------------------------------- /pwn/pwn intended 0x2/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "pwn intended 0x2" 2 | author: "roerohan" 3 | category: Pwn 4 | 5 | description: | 6 | Travelling through spacetime! 7 | 8 | nc chall.csivit.com 30007 9 | 10 | value: 500 11 | type: dynamic 12 | 13 | decay: 450 14 | minimum: 100 15 | 16 | flags: 17 | - csictf{c4n_y0u_re4lly_telep0rt?} 18 | 19 | files: 20 | - "pwn/pwn intended 0x2/bin/pwn-intended-0x2" 21 | 22 | tags: 23 | - pwn 24 | 25 | state: hidden 26 | version: "0.1" 27 | 28 | replicas: 2 29 | containers: 30 | server: 31 | build: . 32 | ports: 33 | - containerPort: 9999 34 | 35 | expose: 36 | - containerPort: 9999 37 | nodePort: 30007 38 | -------------------------------------------------------------------------------- /pwn/pwn intended 0x2/ctf.xinetd: -------------------------------------------------------------------------------- 1 | service ctf 2 | { 3 | disable = no 4 | socket_type = stream 5 | protocol = tcp 6 | wait = no 7 | user = root 8 | type = UNLISTED 9 | port = 9999 10 | bind = 0.0.0.0 11 | server = /usr/sbin/chroot 12 | server_args = --userspec=1000:1000 /home/ctf ./pwn-intended-0x2 13 | banner_fail = /etc/banner_fail 14 | # safety options 15 | per_source = 10 # the maximum instances of this service per source IP address 16 | rlimit_cpu = 1 # the maximum number of CPU seconds that the service may use 17 | #rlimit_as = 1024M # the Address Space resource limit for the service 18 | } -------------------------------------------------------------------------------- /pwn/pwn intended 0x2/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | /etc/init.d/xinetd start; 4 | sleep infinity; 5 | -------------------------------------------------------------------------------- /pwn/pwn intended 0x3/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | lib32z1 xinetd 5 | 6 | RUN useradd -m ctf 7 | 8 | WORKDIR /home/ctf 9 | 10 | RUN cp -R /lib* /home/ctf && \ 11 | cp -R /usr/lib* /home/ctf 12 | 13 | RUN mkdir /home/ctf/dev && \ 14 | mknod /home/ctf/dev/null c 1 3 && \ 15 | mknod /home/ctf/dev/zero c 1 5 && \ 16 | mknod /home/ctf/dev/random c 1 8 && \ 17 | mknod /home/ctf/dev/urandom c 1 9 && \ 18 | chmod 666 /home/ctf/dev/* 19 | 20 | RUN mkdir /home/ctf/bin && \ 21 | cp /bin/sh /home/ctf/bin && \ 22 | cp /bin/ls /home/ctf/bin && \ 23 | cp /bin/cat /home/ctf/bin 24 | 25 | COPY ./ctf.xinetd /etc/xinetd.d/ctf 26 | COPY ./start.sh /start.sh 27 | RUN echo "Blocked by ctf_xinetd" > /etc/banner_fail 28 | 29 | RUN chmod +x /start.sh 30 | 31 | COPY ./bin/ /home/ctf/ 32 | RUN chown -R root:ctf /home/ctf && \ 33 | chmod -R 750 /home/ctf && \ 34 | chmod 740 /home/ctf/flag.txt 35 | 36 | CMD ["/start.sh"] 37 | 38 | EXPOSE 9999 -------------------------------------------------------------------------------- /pwn/pwn intended 0x3/bin/flag.txt: -------------------------------------------------------------------------------- 1 | csictf{ch4lleng1ng_th3_v3ry_l4ws_0f_phys1cs} -------------------------------------------------------------------------------- /pwn/pwn intended 0x3/bin/pwn-intended-0x3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/pwn/pwn intended 0x3/bin/pwn-intended-0x3 -------------------------------------------------------------------------------- /pwn/pwn intended 0x3/bin/pwn-intended-0x3.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main() { 5 | char teleport[30]; 6 | 7 | setbuf(stdout, NULL); 8 | setbuf(stdin, NULL); 9 | setbuf(stderr, NULL); 10 | 11 | puts("Welcome to csictf! Time to teleport again."); 12 | gets(teleport); 13 | } 14 | 15 | int flag() { 16 | puts("Well, that was quick. Here's your flag:"); 17 | system("cat flag.txt"); 18 | exit(0); 19 | } -------------------------------------------------------------------------------- /pwn/pwn intended 0x3/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "pwn intended 0x3" 2 | author: "roerohan" 3 | category: Pwn 4 | 5 | description: | 6 | Teleportation is not possible, or is it? 7 | 8 | nc chall.csivit.com 30013 9 | 10 | value: 500 11 | type: dynamic 12 | 13 | decay: 450 14 | minimum: 100 15 | 16 | flags: 17 | - csictf{ch4lleng1ng_th3_v3ry_l4ws_0f_phys1cs} 18 | 19 | files: 20 | - "pwn/pwn intended 0x3/bin/pwn-intended-0x3" 21 | 22 | tags: 23 | - pwn 24 | 25 | state: hidden 26 | version: "0.1" 27 | 28 | replicas: 2 29 | containers: 30 | server: 31 | build: . 32 | ports: 33 | - containerPort: 9999 34 | 35 | expose: 36 | - containerPort: 9999 37 | nodePort: 30013 38 | -------------------------------------------------------------------------------- /pwn/pwn intended 0x3/ctf.xinetd: -------------------------------------------------------------------------------- 1 | service ctf 2 | { 3 | disable = no 4 | socket_type = stream 5 | protocol = tcp 6 | wait = no 7 | user = root 8 | type = UNLISTED 9 | port = 9999 10 | bind = 0.0.0.0 11 | server = /usr/sbin/chroot 12 | server_args = --userspec=1000:1000 /home/ctf ./pwn-intended-0x3 13 | banner_fail = /etc/banner_fail 14 | # safety options 15 | per_source = 10 # the maximum instances of this service per source IP address 16 | rlimit_cpu = 1 # the maximum number of CPU seconds that the service may use 17 | #rlimit_as = 1024M # the Address Space resource limit for the service 18 | } -------------------------------------------------------------------------------- /pwn/pwn intended 0x3/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | /etc/init.d/xinetd start; 4 | sleep infinity; 5 | -------------------------------------------------------------------------------- /pwn/pwn intended 0x3/static/img1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/pwn/pwn intended 0x3/static/img1.png -------------------------------------------------------------------------------- /reversing/Blaise/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | lib32z1 xinetd 5 | 6 | RUN useradd -m ctf 7 | 8 | WORKDIR /home/ctf 9 | 10 | RUN cp -R /lib* /home/ctf && \ 11 | cp -R /usr/lib* /home/ctf 12 | 13 | RUN mkdir /home/ctf/dev && \ 14 | mknod /home/ctf/dev/null c 1 3 && \ 15 | mknod /home/ctf/dev/zero c 1 5 && \ 16 | mknod /home/ctf/dev/random c 1 8 && \ 17 | mknod /home/ctf/dev/urandom c 1 9 && \ 18 | chmod 666 /home/ctf/dev/* 19 | 20 | RUN mkdir /home/ctf/bin && \ 21 | cp /bin/sh /home/ctf/bin && \ 22 | cp /bin/ls /home/ctf/bin && \ 23 | cp /bin/cat /home/ctf/bin 24 | 25 | COPY ./ctf.xinetd /etc/xinetd.d/ctf 26 | COPY ./start.sh /start.sh 27 | RUN echo "Blocked by ctf_xinetd" > /etc/banner_fail 28 | 29 | RUN chmod +x /start.sh 30 | 31 | COPY ./bin/ /home/ctf/ 32 | RUN chown -R root:ctf /home/ctf && \ 33 | chmod -R 750 /home/ctf && \ 34 | chmod 740 /home/ctf/flag.txt 35 | 36 | CMD ["/start.sh"] 37 | 38 | EXPOSE 9999 -------------------------------------------------------------------------------- /reversing/Blaise/bin/blaise: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/reversing/Blaise/bin/blaise -------------------------------------------------------------------------------- /reversing/Blaise/bin/blaise.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | int display_number(int lower, int upper) { 6 | int random = (rand() % (upper - lower + 1)) + lower; 7 | printf("%d\n", random); 8 | return random; 9 | } 10 | 11 | long f(int n) 12 | { 13 | long res = 1; 14 | for (int i = 2; i <= n; i++) 15 | res = res * i; 16 | return res; 17 | } 18 | 19 | int C(int a, int b) 20 | { 21 | return f(a) / (f(b) * f(a - b)); 22 | } 23 | 24 | int process(int random) { 25 | int done = 1; 26 | for (int i = 0; i <= random; i++) { 27 | int inp; 28 | scanf("%d", &inp); 29 | 30 | if (inp != C(random, i)) { 31 | done = 0; 32 | } 33 | } 34 | 35 | if (done == 1) { 36 | system("cat flag.txt"); 37 | } 38 | return 0; 39 | } 40 | 41 | int main() { 42 | setbuf(stdout, NULL); 43 | setbuf(stdin, NULL); 44 | setbuf(stderr, NULL); 45 | int lower = 15; 46 | int upper = 20; 47 | 48 | srand(time(0)); 49 | int random = display_number(lower, upper); 50 | 51 | process(random); 52 | return 0; 53 | } 54 | -------------------------------------------------------------------------------- /reversing/Blaise/bin/flag.txt: -------------------------------------------------------------------------------- 1 | csictf{y0u_d1sc0v3r3d_th3_p4sc4l's_tr14ngl3} -------------------------------------------------------------------------------- /reversing/Blaise/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Blaise" 2 | author: "roerohan" 3 | category: Reversing 4 | 5 | description: | 6 | I recovered a binary from my teacher's computer. I tried to reverse it but I couldn't. 7 | 8 | nc chall.csivit.com 30808 9 | 10 | value: 500 11 | type: dynamic 12 | 13 | decay: 450 14 | minimum: 100 15 | 16 | flags: 17 | - csictf{y0u_d1sc0v3r3d_th3_p4sc4l's_tr14ngl3} 18 | 19 | files: 20 | - "reversing/Blaise/bin/blaise" 21 | 22 | tags: 23 | - binary 24 | - reversing 25 | 26 | state: hidden 27 | version: "0.1" 28 | 29 | replicas: 2 30 | containers: 31 | server: 32 | build: . 33 | ports: 34 | - containerPort: 9999 35 | 36 | expose: 37 | - containerPort: 9999 38 | nodePort: 30808 39 | -------------------------------------------------------------------------------- /reversing/Blaise/ctf.xinetd: -------------------------------------------------------------------------------- 1 | service ctf 2 | { 3 | disable = no 4 | socket_type = stream 5 | protocol = tcp 6 | wait = no 7 | user = root 8 | type = UNLISTED 9 | port = 9999 10 | bind = 0.0.0.0 11 | server = /usr/sbin/chroot 12 | server_args = --userspec=1000:1000 /home/ctf ./blaise 13 | banner_fail = /etc/banner_fail 14 | # safety options 15 | per_source = 10 # the maximum instances of this service per source IP address 16 | rlimit_cpu = 1 # the maximum number of CPU seconds that the service may use 17 | #rlimit_as = 1024M # the Address Space resource limit for the service 18 | } -------------------------------------------------------------------------------- /reversing/Blaise/solve.py: -------------------------------------------------------------------------------- 1 | from pwn import * 2 | 3 | r = remote('localhost', 3000) 4 | n = int(r.recv(100).decode()) 5 | 6 | def nCr(n, r): 7 | return str(int(fact(n) / (fact(r) * fact(n - r)))) 8 | 9 | def fact(n): 10 | res = 1 11 | for i in range(2, n+1): 12 | res = res * i 13 | return res 14 | 15 | for i in range(n+1): 16 | print(nCr(n,i)) 17 | r.sendline(nCr(n,i)) 18 | 19 | print(r.recv().decode()) 20 | -------------------------------------------------------------------------------- /reversing/Blaise/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | /etc/init.d/xinetd start; 4 | sleep infinity; 5 | -------------------------------------------------------------------------------- /reversing/Esrever/README.md: -------------------------------------------------------------------------------- 1 | # Esrever 2 | 3 | Author: [roerohan](https://github.com/roerohan) 4 | 5 | ## Description 6 | 7 | This is a reversing challenge. 8 | 9 | ## Requirements 10 | 11 | - Python 12 | 13 | ## Sources 14 | 15 | - [esrever.py](./esrever.py) 16 | - [esrever.txt](./esrever.txt) 17 | 18 | ``` 19 | I encrypted my flag so that nobody can see it, but now I realize I don't know how to decrypt it. Can you help me? 20 | ``` 21 | 22 | ## Exploit 23 | 24 | This challenge seems to have a lot of random numbers, but the encryption is entirely predictable. The solution script is specified in [solve.py](./solve.py). 25 | 26 | ```bash 27 | $ python solve.py | grep csictf 28 | csictfaesreverisjustreverseinreverserightc 29 | ``` 30 | 31 | You can now just guess that `{` became `a` and `}` became `c` due to `enc1()`, since it shifts every character in the range of `'a'` to `'z'`. 32 | 33 | The flag is: 34 | 35 | ``` 36 | csictf{esreverisjustreverseinreverseright} 37 | ``` -------------------------------------------------------------------------------- /reversing/Esrever/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Esrever" 2 | author: "roerohan" 3 | category: Reversing 4 | 5 | description: I encrypted my flag so that nobody can see it, but now I realize I don't know how to decrypt it. Can you help me? 6 | 7 | value: 500 8 | type: dynamic 9 | 10 | decay: 450 11 | minimum: 100 12 | 13 | flags: 14 | - csictf{esreverisjustreverseinreverseright} 15 | 16 | tags: 17 | - crypto 18 | - reversing 19 | 20 | files: 21 | - "reversing/Esrever/esrever.py" 22 | - "reversing/Esrever/esrever.txt" 23 | 24 | state: hidden 25 | version: "0.1" 26 | -------------------------------------------------------------------------------- /reversing/Esrever/esrever.py: -------------------------------------------------------------------------------- 1 | import random 2 | 3 | # TODO: Remember to remove real flag before deploying 4 | flag = 'csictf{fake_flag}' 5 | 6 | key = 'fake_key' 7 | 8 | def enc1(text): 9 | r = random.randint(1,25) 10 | return bytes.fromhex(''.join([hex(((ord(i) - ord('a') - r) % 26) + ord('a'))[2:] for i in text])).decode('ascii') 11 | 12 | def enc2(text, key): 13 | k = [key[i % len(key)] for i in range(len(text))] 14 | return ''.join([chr(ord(text[i]) ^ ord(k[i]) + ord('a')) for i in range(len(text))]) 15 | 16 | def enc3(text): 17 | mapping = [28, 33, 6, 17, 7, 41, 27, 29, 31, 30, 39, 21, 34, 15, 3, 5, 13, 10, 19, 38, 40, 14, 26, 25, 32, 0, 36, 8, 18, 4, 1, 11, 24, 2, 37, 20, 23, 35, 22, 12, 16, 9] 18 | 19 | temp = [None]*len(text) 20 | for i in range(len(text)): 21 | temp[mapping[i]] = text[i] 22 | 23 | return ''.join(temp) 24 | 25 | def enc4(text): 26 | mapping = [23, 9, 5, 6, 22, 28, 25, 30, 15, 8, 16, 19, 24, 11, 10, 7, 2, 14, 18, 1, 29, 21, 12, 4, 20, 0, 26, 13, 17, 3, 27] 27 | 28 | temp = [None]*len(text) 29 | for i in range(len(text)): 30 | temp[i] = text[mapping[i]] 31 | 32 | return ''.join(temp) 33 | 34 | encryptedText = enc1(flag) 35 | encryptedKey = enc1(key) 36 | for i in range(random.randint(1,100)): 37 | encryptedText = enc1(encryptedText) 38 | encryptedKey = enc1(key) 39 | 40 | print('Encrypted Key = ' + enc4(enc4(encryptedKey))) 41 | print('Encrypted Text = ' + enc3(enc3(enc2(enc1(encryptedText), key)))) 42 | -------------------------------------------------------------------------------- /reversing/Esrever/esrever.txt: -------------------------------------------------------------------------------- 1 | Encrypted Key = ieluvnvfgvfahuxhvfphbppnbgrfcrn 2 | Encrypted Text = »·­ª»£µ±¬¥¼±ºµ±¿·£¦­´¯ª¨¥«¥¦«´¸¦¡¸¢²§¤¦¦¹¨ 3 | -------------------------------------------------------------------------------- /reversing/README.md: -------------------------------------------------------------------------------- 1 | # Reversing 2 | 3 | This directory consists of challenges related to `Reversing`. Please follow the guidelines mentioned in the [template](../README.md) while making contributions. -------------------------------------------------------------------------------- /reversing/RicknMorty/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | lib32z1 xinetd 5 | 6 | RUN useradd -m ctf 7 | 8 | WORKDIR /home/ctf 9 | 10 | RUN cp -R /lib* /home/ctf && \ 11 | cp -R /usr/lib* /home/ctf 12 | 13 | RUN mkdir /home/ctf/dev && \ 14 | mknod /home/ctf/dev/null c 1 3 && \ 15 | mknod /home/ctf/dev/zero c 1 5 && \ 16 | mknod /home/ctf/dev/random c 1 8 && \ 17 | mknod /home/ctf/dev/urandom c 1 9 && \ 18 | chmod 666 /home/ctf/dev/* 19 | 20 | RUN mkdir /home/ctf/bin && \ 21 | cp /bin/sh /home/ctf/bin && \ 22 | cp /bin/ls /home/ctf/bin && \ 23 | cp /bin/cat /home/ctf/bin 24 | 25 | COPY ./ctf.xinetd /etc/xinetd.d/ctf 26 | COPY ./start.sh /start.sh 27 | RUN echo "Blocked by ctf_xinetd" > /etc/banner_fail 28 | 29 | RUN chmod +x /start.sh 30 | 31 | COPY ./bin/ /home/ctf/ 32 | RUN chown -R root:ctf /home/ctf && \ 33 | chmod -R 750 /home/ctf && \ 34 | chmod 740 /home/ctf/flag.txt 35 | 36 | CMD ["/start.sh"] 37 | 38 | EXPOSE 9999 39 | -------------------------------------------------------------------------------- /reversing/RicknMorty/bin/RickNMorty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/reversing/RicknMorty/bin/RickNMorty -------------------------------------------------------------------------------- /reversing/RicknMorty/bin/flag.txt: -------------------------------------------------------------------------------- 1 | csictf{h3_7u2n3d_h1m531f_1n70_4_p1ck13} 2 | -------------------------------------------------------------------------------- /reversing/RicknMorty/bin/run.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #define ll long long 6 | 7 | ll function2(ll n) 8 | { 9 | if (n == 0) 10 | return 1; 11 | return n * function2(n - 1); 12 | } 13 | 14 | ll function1(ll a, ll b) 15 | { 16 | int hcf = 0; 17 | for (int i = 1; i <= a || i <= b; i++) 18 | { 19 | if (a % i == 0 && b % i == 0) 20 | hcf = i; 21 | } 22 | return hcf; 23 | } 24 | 25 | int retrandom(int lower, int upper) 26 | { 27 | return (rand() % (upper - lower + 1)) + lower; 28 | } 29 | 30 | int main() 31 | { 32 | ll a, b, i, hcf; 33 | 34 | setbuf(stdin, NULL); 35 | setbuf(stdout, NULL); 36 | setbuf(stderr, NULL); 37 | 38 | time_t t, start, end; 39 | srand((unsigned)time(&t)); 40 | time(&start); 41 | int done = 1; 42 | for (int x = 0; x < (5 + rand() % 3); x++) 43 | { 44 | a = 6 + rand() % 10; 45 | b = 6 + rand() % 10; 46 | printf("%d %d\n", a, b); 47 | ll inp; 48 | scanf("%lld", &inp); 49 | if (inp != function2(function1(a, b) + 3)) 50 | { 51 | done = 0; 52 | } 53 | } 54 | time(&end); 55 | double time_taken = (end - start); 56 | printf("fun() took %f seconds to execute \n", time_taken); 57 | if (done == 1 && time_taken <= 30) 58 | { 59 | printf("Hey, you got me!\n"); 60 | system("cat flag.txt"); 61 | } else { 62 | printf("Nahh."); 63 | } 64 | 65 | return 0; 66 | } 67 | -------------------------------------------------------------------------------- /reversing/RicknMorty/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "RicknMorty" 2 | author: "21StWarlock#1598" 3 | category: Reversing 4 | 5 | description: | 6 | Rick has been captured by the council of Rick's and in this dimension Morty has to save him, the chamber holding Rick needs a key. Can you help him find the key? 7 | 8 | nc chall.csivit.com 30827 9 | 10 | value: 500 11 | type: dynamic 12 | 13 | decay: 450 14 | minimum: 100 15 | 16 | flags: 17 | - csictf{h3_7u2n3d_h1m531f_1n70_4_p1ck13} 18 | 19 | files: 20 | - "reversing/RicknMorty/bin/RickNMorty" 21 | 22 | tags: 23 | - binary 24 | - reversing 25 | 26 | state: hidden 27 | version: "0.1" 28 | 29 | replicas: 2 30 | containers: 31 | server: 32 | build: . 33 | ports: 34 | - containerPort: 9999 35 | 36 | expose: 37 | - containerPort: 9999 38 | nodePort: 30827 39 | -------------------------------------------------------------------------------- /reversing/RicknMorty/ctf.xinetd: -------------------------------------------------------------------------------- 1 | service ctf 2 | { 3 | disable = no 4 | socket_type = stream 5 | protocol = tcp 6 | wait = no 7 | user = root 8 | type = UNLISTED 9 | port = 9999 10 | bind = 0.0.0.0 11 | server = /usr/sbin/chroot 12 | server_args = --userspec=1000:1000 /home/ctf ./RickNMorty 13 | banner_fail = /etc/banner_fail 14 | # safety options 15 | per_source = 10 # the maximum instances of this service per source IP address 16 | rlimit_cpu = 1 # the maximum number of CPU seconds that the service may use 17 | #rlimit_as = 1024M # the Address Space resource limit for the service 18 | } 19 | -------------------------------------------------------------------------------- /reversing/RicknMorty/solve.py: -------------------------------------------------------------------------------- 1 | from pwn import * 2 | from math import gcd 3 | 4 | r = remote('ctf-chall-dev.csivit.com', 30827) 5 | 6 | def fact(n): 7 | if n == 1: 8 | return 1 9 | else: 10 | return n * fact(n-1) 11 | 12 | for i in range(10): 13 | inp=r.recv(100).decode() 14 | 15 | print(inp) 16 | 17 | if 'csictf' in inp or 'Nahh' in inp: 18 | break 19 | else: 20 | try: 21 | a, b = list(map(int, inp.split(" "))) 22 | 23 | print(a, b) 24 | x=fact(gcd(a,b)+3) 25 | print("a = {}, b = {}, x = {}".format(a, b, x)) 26 | r.sendline(str(x)) 27 | except ValueError: 28 | pass 29 | -------------------------------------------------------------------------------- /reversing/RicknMorty/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | /etc/init.d/xinetd start; 4 | sleep infinity; 5 | -------------------------------------------------------------------------------- /reversing/Scrambled Eggs/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Scrambled Eggs" 2 | author: "AJ1479" 3 | category: Reversing 4 | 5 | description: | 6 | I like my eggs sunny side up, but I ended up scrambling them. 7 | 8 | value: 500 9 | type: dynamic 10 | 11 | decay: 450 12 | minimum: 100 13 | 14 | flags: 15 | - csictf{all_the_kings_horses} 16 | 17 | tags: 18 | - crypto 19 | - reversing 20 | 21 | files: 22 | - "reversing/Scrambled Eggs/scrambledeggs.py" 23 | - "reversing/Scrambled Eggs/scrambledeggs.txt" 24 | 25 | state: hidden 26 | version: "0.1" 27 | -------------------------------------------------------------------------------- /reversing/Scrambled Eggs/scrambledeggs.txt: -------------------------------------------------------------------------------- 1 | Encrytped key1 = xtfsyhhlizoiyx 2 | Encrypted key2 = eudlqgluduggdluqmocgyukhbqkx 3 | Encrypted flag = lvvrafwgtocdrdzfdqotiwvrcqnd -------------------------------------------------------------------------------- /reversing/Vietnam/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | RUN apt-get update -y && apt-get install -y \ 4 | lib32z1 xinetd 5 | 6 | RUN useradd -m ctf 7 | 8 | WORKDIR /home/ctf 9 | 10 | RUN cp -R /lib* /home/ctf && \ 11 | cp -R /usr/lib* /home/ctf 12 | 13 | RUN mkdir /home/ctf/dev && \ 14 | mknod /home/ctf/dev/null c 1 3 && \ 15 | mknod /home/ctf/dev/zero c 1 5 && \ 16 | mknod /home/ctf/dev/random c 1 8 && \ 17 | mknod /home/ctf/dev/urandom c 1 9 && \ 18 | chmod 666 /home/ctf/dev/* 19 | 20 | RUN mkdir /home/ctf/bin && \ 21 | cp /bin/sh /home/ctf/bin && \ 22 | cp /bin/ls /home/ctf/bin && \ 23 | cp /bin/cat /home/ctf/bin 24 | 25 | COPY ./ctf.xinetd /etc/xinetd.d/ctf 26 | COPY ./start.sh /start.sh 27 | RUN echo "Blocked by ctf_xinetd" > /etc/banner_fail 28 | 29 | RUN chmod +x /start.sh 30 | 31 | COPY ./bin/ /home/ctf/ 32 | RUN chown -R root:ctf /home/ctf && \ 33 | chmod -R 750 /home/ctf && \ 34 | chmod 740 /home/ctf/flag.txt 35 | 36 | CMD ["/start.sh"] 37 | 38 | EXPOSE 9999 -------------------------------------------------------------------------------- /reversing/Vietnam/bin/flag.txt: -------------------------------------------------------------------------------- 1 | csictf{l00k_4t_th3_t0w3rs_0f_h4n01} 2 | -------------------------------------------------------------------------------- /reversing/Vietnam/bin/vietnam: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/reversing/Vietnam/bin/vietnam -------------------------------------------------------------------------------- /reversing/Vietnam/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Vietnam" 2 | author: 3 | category: Reversing 4 | 5 | description: | 6 | The Viet Cong in transmitting a secret message. They built a password checker so that only a selected few can view the secret message. We've recovered the binary, we need you to find out what they're trying to say. 7 | 8 | nc chall.csivit.com 30814 9 | 10 | value: 500 11 | type: dynamic 12 | 13 | decay: 450 14 | minimum: 100 15 | 16 | flags: 17 | - csictf{l00k_4t_th3_t0w3rs_0f_h4n01} 18 | 19 | tags: 20 | - reversing 21 | 22 | files: 23 | - "reversing/Vietnam/bin/vietnam" 24 | 25 | state: hidden 26 | version: "0.1" 27 | 28 | replicas: 2 29 | containers: 30 | server: 31 | build: . 32 | ports: 33 | - containerPort: 9999 34 | 35 | expose: 36 | - containerPort: 9999 37 | nodePort: 30814 38 | -------------------------------------------------------------------------------- /reversing/Vietnam/ctf.xinetd: -------------------------------------------------------------------------------- 1 | service ctf 2 | { 3 | disable = no 4 | socket_type = stream 5 | protocol = tcp 6 | wait = no 7 | user = root 8 | type = UNLISTED 9 | port = 9999 10 | bind = 0.0.0.0 11 | server = /usr/sbin/chroot 12 | server_args = --userspec=1000:1000 /home/ctf ./vietnam 13 | banner_fail = /etc/banner_fail 14 | # safety options 15 | per_source = 10 # the maximum instances of this service per source IP address 16 | rlimit_cpu = 1 # the maximum number of CPU seconds that the service may use 17 | #rlimit_as = 1024M # the Address Space resource limit for the service 18 | } -------------------------------------------------------------------------------- /reversing/Vietnam/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | /etc/init.d/xinetd start; 4 | sleep infinity; 5 | -------------------------------------------------------------------------------- /reversing/pydis2ctf/README.md: -------------------------------------------------------------------------------- 1 | # pydis2ctf 2 | 3 | Authors: [21StWarlock#1598](21StWarlock#1598) 4 | 5 | Disassemble Python byte code and reverse the obtained python code. 6 | 7 | # Requirements 8 | 9 | - Python 3 10 | - Basic Knowledge of Python Byte Code 11 | 12 | ## Sources 13 | 14 | - [C1cipher](./C1cipher) 15 | - [C2cipher](./C2cipher) 16 | - [encodedflag.txt](./encodedflag.txt) 17 | 18 | 19 | ``` 20 | I learnt Python in school but I have no clue what this is! 21 | Hint 1: python disassembly is easy - Points 100 22 | Hint 2: pip install Assembly - Points 200 23 | ``` 24 | 25 | ## Exploit 26 | 27 | There are two ciphers in [C1cipher](./C1cipher) and [C2cipher](./C2cipher) and you have two convery both the ciphers into python code the solution is in [Solution](./solution.py). 28 | 29 | The flag is: 30 | ``` 31 | csictf{T#a+_wA5_g0oD_d155aSe^^bLy} 32 | ``` 33 | -------------------------------------------------------------------------------- /reversing/pydis2ctf/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "pydis2ctf" 2 | author: "21StWarlock#1598" 3 | category: Reversing 4 | description: I learnt Python in school but I have no clue what this is! 5 | 6 | value: 500 7 | type: dynamic 8 | decay: 450 9 | minimum: 100 10 | 11 | flags: 12 | - csictf{T#a+_wA5_g0oD_d155aSe^^bLy} 13 | 14 | files: 15 | - "reversing/pydis2ctf/encodedflag.txt" 16 | - "reversing/pydis2ctf/C1cipher.txt" 17 | - "reversing/pydis2ctf/C2cipher.txt" 18 | 19 | tags: 20 | - reversing 21 | - ciphers 22 | 23 | state: hidden 24 | version: "0.1" 25 | -------------------------------------------------------------------------------- /reversing/pydis2ctf/encodedflag.txt: -------------------------------------------------------------------------------- 1 | '¤Ä°¤ÆªÔ\x86$\xa04\x9cÌ`H\x9c¬>¼f\x9c¦@HH\xa0\x84¨\x9a\x9a¢vÐØ' -------------------------------------------------------------------------------- /reversing/pydis2ctf/solution.py: -------------------------------------------------------------------------------- 1 | # solution to cipher one : 2 | 3 | # after converting to python code: 4 | def substitution_cipher(text): 5 | ret_text="" 6 | for i in list(text): 7 | ret_text += chr(2*ord(i)-len(text)) 8 | return ret_text 9 | 10 | #reversing : 11 | def reverse_substitution_cipher(text): 12 | ret_text="" 13 | for i in list(text): 14 | ret_text += chr((ord(i)+len(text))//2) 15 | return ret_text 16 | 17 | # solution to cipher two : 18 | 19 | # after converting to python code: 20 | 21 | def XOR(inpString): 22 | xorKey = 'S' 23 | length = len(inpString) 24 | for i in range(length): 25 | inpString = (inpString[:i] + chr(ord(inpString[i]) ^ ord(xorKey)) + inpString[i + 1:]) 26 | 27 | 28 | return inpString 29 | 30 | # reversing(as the following function is XOR its reverse is itself) : 31 | -------------------------------------------------------------------------------- /web/Body Count/.dockerignore: -------------------------------------------------------------------------------- 1 | README.md 2 | Dockerfile 3 | challenge.yml -------------------------------------------------------------------------------- /web/Body Count/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:7.4-apache 2 | 3 | # Use the default production configuration 4 | RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" 5 | 6 | ENV PASSWORD w0rdc0unt123 7 | COPY src/ /var/www/html 8 | 9 | RUN chmod 1733 /tmp /var/tmp /dev/shm 10 | 11 | RUN mkdir /ctf 12 | RUN useradd -M -d /ctf ctf 13 | RUN echo ctf:csictf | chpasswd 14 | 15 | COPY bin/ /ctf 16 | 17 | RUN mkdir -p /ctf/dream/theatre 18 | RUN mkdir -p /ctf/dream/on/off/something 19 | RUN mkdir -p /ctf/avenged/sevenfold/ 20 | RUN mkdir -p /ctf/led/zeppelin 21 | RUN mkdir -p /ctf/avenged/some/folder/name 22 | RUN mkdir -p /ctf/system/of/a/down 23 | RUN echo csictf{1nj3ct10n_15_p41nfu1} > /ctf/system/of/a/down/flag.txt 24 | 25 | RUN chown -R root:ctf /ctf && \ 26 | chmod -R 755 /ctf 27 | 28 | RUN chmod -R 440 /ctf/system/of/a/down/flag.txt 29 | 30 | EXPOSE 80 31 | -------------------------------------------------------------------------------- /web/Body Count/bin/README: -------------------------------------------------------------------------------- 1 | My password hash is 6f246c872cbf0b7fd7530b7aa235e67e. -------------------------------------------------------------------------------- /web/Body Count/bin/findaas: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | echo "Enter a filename and find it here!" 4 | 5 | find . -name $1 -------------------------------------------------------------------------------- /web/Body Count/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Body Count" 2 | author: "AJ1479 and roerohan" 3 | category: Web 4 | 5 | description: | 6 | Here's a character count service for you! 7 | 8 | http://chall.csivit.com:30202 9 | 10 | value: 500 11 | type: dynamic 12 | 13 | decay: 450 14 | minimum: 100 15 | 16 | flags: 17 | - csictf{1nj3ct10n_15_p41nfu1} 18 | 19 | tags: 20 | - web 21 | 22 | state: hidden 23 | version: "0.1" 24 | 25 | replicas: 2 26 | containers: 27 | server: 28 | build: . 29 | ports: 30 | - containerPort: 80 31 | 32 | expose: 33 | - containerPort: 80 34 | nodePort: 30202 -------------------------------------------------------------------------------- /web/Body Count/src/checkpass.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | wc as a service 9 | 16 | 17 | 18 | 19 | 26 | 27 |

Character Count as a Service

28 |
29 | 30 |
31 | 32 |
33 | The Character Count is: " . exec('printf \'' . $text . '\' | wc -c') . ""; 37 | } 38 | ?> 39 | 40 | 41 | -------------------------------------------------------------------------------- /web/CCC/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | package-lock.json 3 | README.md 4 | Dockerfile 5 | challenge.yml 6 | -------------------------------------------------------------------------------- /web/CCC/.env: -------------------------------------------------------------------------------- 1 | JWT_SECRET=Th1sSECr3TMu5TN0Tb3L43KEDEv3RRRRRR!!1 2 | -------------------------------------------------------------------------------- /web/CCC/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:12-buster-slim 2 | 3 | WORKDIR /app 4 | COPY package.json . 5 | 6 | ENV NODE_ENV production 7 | ENV PORT 9999 8 | RUN npm install 9 | 10 | COPY . . 11 | 12 | EXPOSE 9999 13 | 14 | CMD ["node", "/app/server.js"] 15 | -------------------------------------------------------------------------------- /web/CCC/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "CCC" 2 | author: "roerohan" 3 | category: Web 4 | 5 | description: | 6 | You can steal a car if you steal its key. 7 | 8 | http://chall.csivit.com:30215 9 | 10 | value: 500 11 | type: dynamic 12 | 13 | decay: 450 14 | minimum: 100 15 | 16 | flags: 17 | - csictf{1n_th3_3nd_1t_d0esn't_3v3n_m4tt3r} 18 | 19 | tags: 20 | - web 21 | 22 | state: hidden 23 | version: "0.1" 24 | 25 | replicas: 2 26 | containers: 27 | server: 28 | build: . 29 | ports: 30 | - containerPort: 9999 31 | 32 | expose: 33 | - containerPort: 9999 34 | nodePort: 30215 -------------------------------------------------------------------------------- /web/CCC/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "auth", 3 | "version": "1.0.0", 4 | "description": "// JWT // Traversal", 5 | "main": "server.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "node server.js" 9 | }, 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "body-parser": "^1.19.0", 14 | "dotenv": "^8.2.0", 15 | "express": "^4.17.1", 16 | "jsonwebtoken": "^8.5.1" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /web/CCC/public/admins: -------------------------------------------------------------------------------- 1 | csivitu/authorized_users/blob/master/ -------------------------------------------------------------------------------- /web/CCC/public/font/FuturaPTBold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/font/FuturaPTBold.otf -------------------------------------------------------------------------------- /web/CCC/public/font/FuturaPTBook.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/font/FuturaPTBook.otf -------------------------------------------------------------------------------- /web/CCC/public/font/FuturaPTHeavy.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/font/FuturaPTHeavy.otf -------------------------------------------------------------------------------- /web/CCC/public/font/FuturaPTLight.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/font/FuturaPTLight.otf -------------------------------------------------------------------------------- /web/CCC/public/font/FuturaPTMedium.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/font/FuturaPTMedium.otf -------------------------------------------------------------------------------- /web/CCC/public/images/android-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/android-icon-144x144.png -------------------------------------------------------------------------------- /web/CCC/public/images/android-icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/android-icon-192x192.png -------------------------------------------------------------------------------- /web/CCC/public/images/android-icon-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/android-icon-36x36.png -------------------------------------------------------------------------------- /web/CCC/public/images/android-icon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/android-icon-48x48.png -------------------------------------------------------------------------------- /web/CCC/public/images/android-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/android-icon-72x72.png -------------------------------------------------------------------------------- /web/CCC/public/images/android-icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/android-icon-96x96.png -------------------------------------------------------------------------------- /web/CCC/public/images/apple-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/apple-icon-114x114.png -------------------------------------------------------------------------------- /web/CCC/public/images/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/apple-icon-120x120.png -------------------------------------------------------------------------------- /web/CCC/public/images/apple-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/apple-icon-144x144.png -------------------------------------------------------------------------------- /web/CCC/public/images/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/apple-icon-152x152.png -------------------------------------------------------------------------------- /web/CCC/public/images/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/apple-icon-180x180.png -------------------------------------------------------------------------------- /web/CCC/public/images/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/apple-icon-57x57.png -------------------------------------------------------------------------------- /web/CCC/public/images/apple-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/apple-icon-60x60.png -------------------------------------------------------------------------------- /web/CCC/public/images/apple-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/apple-icon-72x72.png -------------------------------------------------------------------------------- /web/CCC/public/images/apple-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/apple-icon-76x76.png -------------------------------------------------------------------------------- /web/CCC/public/images/apple-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/apple-icon-precomposed.png -------------------------------------------------------------------------------- /web/CCC/public/images/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/apple-icon.png -------------------------------------------------------------------------------- /web/CCC/public/images/bearbrand.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/bearbrand.jpg -------------------------------------------------------------------------------- /web/CCC/public/images/blog-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/blog-icon.png -------------------------------------------------------------------------------- /web/CCC/public/images/brandname.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/brandname.jpg -------------------------------------------------------------------------------- /web/CCC/public/images/designer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/designer.jpg -------------------------------------------------------------------------------- /web/CCC/public/images/digital-marketing.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/digital-marketing.jpg -------------------------------------------------------------------------------- /web/CCC/public/images/ds-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/ds-logo.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicon-16x16.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicon-32x32.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicon-96x96.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicon.ico -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/android-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/android-icon-144x144.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/android-icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/android-icon-192x192.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/android-icon-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/android-icon-36x36.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/android-icon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/android-icon-48x48.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/android-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/android-icon-72x72.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/android-icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/android-icon-96x96.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/apple-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/apple-icon-114x114.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/apple-icon-120x120.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/apple-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/apple-icon-144x144.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/apple-icon-152x152.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/apple-icon-180x180.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/apple-icon-57x57.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/apple-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/apple-icon-60x60.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/apple-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/apple-icon-72x72.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/apple-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/apple-icon-76x76.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/apple-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/apple-icon-precomposed.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/apple-icon.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | #ffffff -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/favicon-16x16.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/favicon-32x32.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/favicon-96x96.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/favicon.ico -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "App", 3 | "icons": [ 4 | { 5 | "src": "\/android-icon-36x36.png", 6 | "sizes": "36x36", 7 | "type": "image\/png", 8 | "density": "0.75" 9 | }, 10 | { 11 | "src": "\/android-icon-48x48.png", 12 | "sizes": "48x48", 13 | "type": "image\/png", 14 | "density": "1.0" 15 | }, 16 | { 17 | "src": "\/android-icon-72x72.png", 18 | "sizes": "72x72", 19 | "type": "image\/png", 20 | "density": "1.5" 21 | }, 22 | { 23 | "src": "\/android-icon-96x96.png", 24 | "sizes": "96x96", 25 | "type": "image\/png", 26 | "density": "2.0" 27 | }, 28 | { 29 | "src": "\/android-icon-144x144.png", 30 | "sizes": "144x144", 31 | "type": "image\/png", 32 | "density": "3.0" 33 | }, 34 | { 35 | "src": "\/android-icon-192x192.png", 36 | "sizes": "192x192", 37 | "type": "image\/png", 38 | "density": "4.0" 39 | } 40 | ] 41 | } -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/ms-icon-144x144.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/ms-icon-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/ms-icon-150x150.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/ms-icon-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/ms-icon-310x310.png -------------------------------------------------------------------------------- /web/CCC/public/images/favicons/ms-icon-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/favicons/ms-icon-70x70.png -------------------------------------------------------------------------------- /web/CCC/public/images/gradient-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/gradient-background.png -------------------------------------------------------------------------------- /web/CCC/public/images/hipster.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/hipster.jpg -------------------------------------------------------------------------------- /web/CCC/public/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/logo.png -------------------------------------------------------------------------------- /web/CCC/public/images/mobile-header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/mobile-header.jpg -------------------------------------------------------------------------------- /web/CCC/public/images/mountain.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/mountain.jpg -------------------------------------------------------------------------------- /web/CCC/public/images/mouse-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/mouse-icon.png -------------------------------------------------------------------------------- /web/CCC/public/images/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/ms-icon-144x144.png -------------------------------------------------------------------------------- /web/CCC/public/images/ms-icon-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/ms-icon-150x150.png -------------------------------------------------------------------------------- /web/CCC/public/images/ms-icon-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/ms-icon-310x310.png -------------------------------------------------------------------------------- /web/CCC/public/images/ms-icon-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/ms-icon-70x70.png -------------------------------------------------------------------------------- /web/CCC/public/images/services-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/services-icon.png -------------------------------------------------------------------------------- /web/CCC/public/images/sponser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/sponser.png -------------------------------------------------------------------------------- /web/CCC/public/images/stores.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/stores.jpg -------------------------------------------------------------------------------- /web/CCC/public/images/testimonials-background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/testimonials-background.jpg -------------------------------------------------------------------------------- /web/CCC/public/images/testimonials-profile-one.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/testimonials-profile-one.jpg -------------------------------------------------------------------------------- /web/CCC/public/images/testimonials-profile-two.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/testimonials-profile-two.png -------------------------------------------------------------------------------- /web/CCC/public/images/user-profile-one.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/user-profile-one.png -------------------------------------------------------------------------------- /web/CCC/public/images/user-profile-two.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/user-profile-two.png -------------------------------------------------------------------------------- /web/CCC/public/images/web-design.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/web-design.jpg -------------------------------------------------------------------------------- /web/CCC/public/images/web-hosting.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csivitu/ctf-challenges/33ef02b4ecec332c6e7d5f5511a930747645ba8f/web/CCC/public/images/web-hosting.jpg -------------------------------------------------------------------------------- /web/CCC/public/scripts/plugin-active.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | // Closes the sidebar menu 3 | $(".menu-toggle").click(function(e) { 4 | e.preventDefault(); 5 | $("#sidebar-wrapper").toggleClass("active"); 6 | $(".menu-toggle > .fa-bars, .menu-toggle > .fa-times").toggleClass("fa-bars fa-times"); 7 | $(this).toggleClass("active"); 8 | }); 9 | // Smoothscroll script 10 | $(".smooth-scroll").click(function(e) { 11 | e.preventDefault(); 12 | var dis = $(this), 13 | target = dis.attr("href"), 14 | offset = parseInt($(target).offset().top), 15 | header = $(".sidebar-nav"); 16 | dis.addClass("active").parent().siblings().find(".smooth-scroll").removeClass("active"); 17 | $('html,body').stop().animate({ scrollTop: offset }, 200); 18 | }); 19 | // Closes responsive menu when a scroll trigger link is clicked 20 | $('#sidebar-wrapper').click(function() { 21 | $("#sidebar-wrapper").removeClass("active"); 22 | $(".menu-toggle").removeClass("active"); 23 | $(".menu-toggle > .fa-bars, .menu-toggle > .fa-times").toggleClass("fa-bars fa-times"); 24 | }); 25 | if ($(window).width() > 991) { 26 | $(window).on("load", function (e) { 27 | $("body").addClass("active"); 28 | }) 29 | } 30 | }); 31 | 32 | -------------------------------------------------------------------------------- /web/Cascade/.dockerignore: -------------------------------------------------------------------------------- 1 | README.md 2 | challenge.yml 3 | Dockerfile 4 | package-lock.json 5 | -------------------------------------------------------------------------------- /web/Cascade/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:12-buster-slim 2 | 3 | WORKDIR /app 4 | COPY package.json . 5 | 6 | ENV NODE_ENV production 7 | ENV PORT 9999 8 | RUN npm install 9 | 10 | COPY . . 11 | 12 | EXPOSE 9999 13 | 14 | CMD ["node", "/app/server.js"] 15 | -------------------------------------------------------------------------------- /web/Cascade/README.md: -------------------------------------------------------------------------------- 1 | # Cascade 2 | 3 | Author: [AJ1479](https://github.com/AJ1479) 4 | 5 | ## Description 6 | 7 | Flag in CSS. 8 | 9 | ## Requirements 10 | 11 | - Docker: [Dockerfile](./Dockerfile) 12 | 13 | ## Sources 14 | 15 | ``` 16 | Welcome to csictf. 17 | ``` 18 | 19 | ## Exploit 20 | 21 | Checkout the flag in `/static/style.css`. 22 |
23 | 24 | The flag is: 25 | 26 | ``` 27 | csictf{w3lc0me_t0_csictf} 28 | ``` -------------------------------------------------------------------------------- /web/Cascade/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Cascade" 2 | author: "roerohan" 3 | category: Web 4 | 5 | description: | 6 | Welcome to csictf. 7 | 8 | http://chall.csivit.com:30203 9 | 10 | value: 500 11 | type: dynamic 12 | 13 | decay: 450 14 | minimum: 100 15 | 16 | flags: 17 | - csictf{w3lc0me_t0_csictf} 18 | 19 | tags: 20 | - web 21 | 22 | state: hidden 23 | version: "0.1" 24 | 25 | replicas: 1 26 | containers: 27 | server: 28 | build: . 29 | ports: 30 | - containerPort: 9999 31 | 32 | expose: 33 | - containerPort: 9999 34 | nodePort: 30203 -------------------------------------------------------------------------------- /web/Cascade/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cascade", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "server.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "node server.js" 9 | }, 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "express": "^4.17.1" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /web/Cascade/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Cascade 8 | 9 | 10 | 11 |

Welcome to csictf

12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /web/Cascade/public/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: purple; 3 | text-align: center; 4 | display: flex; 5 | align-items: center; 6 | flex-direction: column; 7 | } 8 | 9 | h1, div, a { 10 | /* csictf{w3lc0me_t0_csictf} */ 11 | color: white; 12 | font-size: 3rem; 13 | } -------------------------------------------------------------------------------- /web/Cascade/server.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const path = require('path'); 3 | 4 | const app = express(); 5 | const PORT = process.env.PORT || 3000; 6 | 7 | app.listen(PORT, () => { 8 | console.log(`Listening on PORT ${PORT}`) 9 | }) 10 | 11 | app.use('/static', express.static(path.join(__dirname, 'public'))); 12 | 13 | app.use('/', (req, res) => { 14 | res.sendFile(path.join(__dirname, 'public', 'index.html')); 15 | }); 16 | -------------------------------------------------------------------------------- /web/File Library/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | package-lock.json 3 | README.md 4 | Dockerfile 5 | challenge.yml 6 | -------------------------------------------------------------------------------- /web/File Library/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:12-buster-slim 2 | 3 | WORKDIR /app 4 | COPY package.json . 5 | 6 | ENV NODE_ENV production 7 | ENV PORT 9999 8 | RUN npm install 9 | 10 | COPY . . 11 | 12 | EXPOSE 9999 13 | 14 | CMD ["node", "/app/server.js"] 15 | -------------------------------------------------------------------------------- /web/File Library/a.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | int main() { 3 | system("cat flag.txt"); 4 | } 5 | -------------------------------------------------------------------------------- /web/File Library/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "File Library" 2 | author: "roerohan" 3 | category: Web 4 | 5 | description: | 6 | This is my file library. I don't have a lot of files, but I hope you like the ones I have! 7 | 8 | http://chall.csivit.com:30222 9 | 10 | value: 500 11 | type: dynamic 12 | 13 | decay: 450 14 | minimum: 100 15 | 16 | flags: 17 | - csictf{5h0uld_5tr1ng1fy_th3_p4r4ms} 18 | 19 | files: 20 | - "web/File Library/server.js" 21 | 22 | tags: 23 | - web 24 | 25 | state: hidden 26 | version: "0.1" 27 | 28 | replicas: 2 29 | containers: 30 | server: 31 | build: . 32 | ports: 33 | - containerPort: 9999 34 | 35 | expose: 36 | - containerPort: 9999 37 | nodePort: 30222 38 | -------------------------------------------------------------------------------- /web/File Library/flag.txt: -------------------------------------------------------------------------------- 1 | csictf{5h0uld_5tr1ng1fy_th3_p4r4ms} -------------------------------------------------------------------------------- /web/File Library/ok.js: -------------------------------------------------------------------------------- 1 | console.log('Welcome to my sample javascript program!'); 2 | 3 | // Let's checkout some funny issues in JS! 4 | 5 | [] == ![]; // -> true 6 | 7 | false == []; // -> true 8 | false == ![]; // -> true 9 | 10 | console.log("b" + "a" + +"a" + "a"); // -> baNaNa 11 | 12 | NaN === NaN; // -> false 13 | 14 | (![] + [])[+[]] + 15 | (![] + [])[+!+[]] + 16 | ([![]] + [][[]])[+!+[] + [+[]]] + 17 | (![] + [])[!+[] + !+[]]; 18 | // -> 'fail' 19 | 20 | document.all instanceof Object; // -> true 21 | typeof document.all; // -> 'undefined' 22 | 23 | Number.MIN_VALUE > 0; // -> true 24 | 25 | [1, 2, 3] + [4, 5, 6]; // -> '1,2,34,5,6' 26 | 27 | console.log('View more: https://github.com/denysdovhan/wtfjs'); 28 | -------------------------------------------------------------------------------- /web/File Library/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chall", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "server.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "node server.js" 9 | }, 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "express": "^4.17.1" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /web/Mr Rami/.dockerignore: -------------------------------------------------------------------------------- 1 | README.md 2 | Dockerfile 3 | challenge.yml -------------------------------------------------------------------------------- /web/Mr Rami/Dockerfile: -------------------------------------------------------------------------------- 1 | 2 | FROM python:3.8-slim 3 | 4 | RUN useradd -m ctf 5 | 6 | WORKDIR /chal 7 | 8 | COPY . . 9 | 10 | ENV PORT 9999 11 | RUN pip3 install --upgrade --no-cache-dir -r requirements.txt 12 | 13 | RUN chown -R root:ctf /chal && \ 14 | chmod 750 /chal /chal/server.py && \ 15 | chmod 740 /chal/flag.txt 16 | 17 | USER ctf 18 | CMD ["/usr/local/bin/python", "/chal/server.py"] 19 | 20 | EXPOSE 9999 -------------------------------------------------------------------------------- /web/Mr Rami/README.md: -------------------------------------------------------------------------------- 1 | # Mr. Rami 2 | 3 | Author: [roerohan](https://github.com/roerohan) 4 | 5 | ## Description 6 | 7 | This is a simple `robots.txt` challenge. 8 | 9 | ## Requirements 10 | 11 | - Knowledge of `robots.txt`. 12 | 13 | ## Sources 14 | 15 | - [index.html](./index.html) 16 | - [flag.txt](./flag.txt) 17 | - [robots.txt](./robots.txt) 18 | - [server.py](./server.py) 19 | 20 | ``` 21 | "People who get violent get that way because they can’t communicate." 22 | ``` 23 | 24 | ## Exploit 25 | 26 | When you google the challenge description, you find out that the quote is from Mr. Robot. This indicates that the user might want to check out the `robots.txt` for the website. 27 |
28 | 29 | When you open the website, it serves the `index.html` file, which has content written about `Brobot`, again trying to put across `robots.txt`. When you visit `robots.txt`, you see: 30 | 31 | ``` 32 | # Hey there, you're not a robot, yet I see you sniffing through this file. 33 | # SEO you later! 34 | # Now get off my lawn. 35 | 36 | Disallow: /fade/to/black 37 | ``` 38 | 39 | When you visit the disallowed route, you get the flag! 40 |
41 | 42 | The flag is: 43 | 44 | ``` 45 | csictf{br0b0t_1s_pr3tty_c00l_1_th1nk} 46 | ``` 47 | -------------------------------------------------------------------------------- /web/Mr Rami/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Mr Rami" 2 | author: "roerohan" 3 | category: Web 4 | 5 | description: | 6 | "People who get violent get that way because they can’t communicate." 7 | 8 | http://chall.csivit.com:30231 9 | 10 | value: 500 11 | type: dynamic 12 | 13 | decay: 450 14 | minimum: 100 15 | 16 | flags: 17 | - csictf{br0b0t_1s_pr3tty_c00l_1_th1nk} 18 | 19 | tags: 20 | - web 21 | 22 | state: hidden 23 | version: "0.1" 24 | 25 | replicas: 2 26 | containers: 27 | server: 28 | build: . 29 | ports: 30 | - containerPort: 9999 31 | 32 | expose: 33 | - containerPort: 9999 34 | nodePort: 30231 -------------------------------------------------------------------------------- /web/Mr Rami/flag.txt: -------------------------------------------------------------------------------- 1 | csictf{br0b0t_1s_pr3tty_c00l_1_th1nk} -------------------------------------------------------------------------------- /web/Mr Rami/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Mr. Rami 9 | 10 | 11 | 12 |

BroBot

13 |
15 | 16 | 18 | 19 |
20 | It's not a bot, it's BroBot! BroBot is a telegram chatbot developed in Python which serves a single platform for 21 | various functions. This bot isn't just like your regular bots, it can be sarcastic and funny too. It can bring 22 | you updates on COVID-19 with just a single command. Not only does it send you memes, it can also run shell 23 | commands from the chat. Feeling lazy? BroBot can also help you solve your math homework! You can use this 24 | customised bot to get updates from future CSI events too. 25 |

26 | 27 | Checkout BroBot here: https://github.com/csivitu/BroBot 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /web/Mr Rami/requirements.txt: -------------------------------------------------------------------------------- 1 | flask -------------------------------------------------------------------------------- /web/Mr Rami/robots.txt: -------------------------------------------------------------------------------- 1 | # Hey there, you're not a robot, yet I see you sniffing through this file. 2 | # SEO you later! 3 | # Now get off my lawn. 4 | 5 | Disallow: /fade/to/black -------------------------------------------------------------------------------- /web/Mr Rami/server.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, send_from_directory 2 | from os import getenv 3 | app = Flask(__name__) 4 | 5 | @app.route('/') 6 | def home(): 7 | return send_from_directory('.', 'index.html') 8 | 9 | @app.route('/robots.txt') 10 | def static_from_root(): 11 | return send_from_directory('.', 'robots.txt') 12 | 13 | @app.route('/fade/to/black') 14 | def flag(): 15 | return send_from_directory('.', 'flag.txt') 16 | 17 | if __name__ == '__main__': 18 | app.run(host='0.0.0.0', port=getenv('PORT')) 19 | -------------------------------------------------------------------------------- /web/Oreo/.dockerignore: -------------------------------------------------------------------------------- 1 | challenge.yml 2 | node_modules 3 | package-lock.json 4 | README.md 5 | Dockerfile -------------------------------------------------------------------------------- /web/Oreo/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:12-buster-slim 2 | 3 | WORKDIR /app 4 | COPY package.json . 5 | 6 | ENV NODE_ENV production 7 | ENV PORT 9999 8 | RUN npm install 9 | 10 | COPY . . 11 | 12 | EXPOSE 9999 13 | 14 | CMD ["node", "/app/server.js"] 15 | -------------------------------------------------------------------------------- /web/Oreo/README.md: -------------------------------------------------------------------------------- 1 | # Oreo 2 | 3 | Author: [AJ1479](https://github.com/AJ1479) 4 | 5 | ## Description 6 | 7 | This is a simple cookie-changing web challenge. 8 | 9 | ## Requirements 10 | 11 | - [Dockerfile](./Dockerfile) 12 | 13 | ## Sources 14 | 15 | ``` 16 | My nephew is a fussy eater and is only willing to eat chocolate oreo. Any other flavour and he throws a tantrum. 17 | ``` 18 | 19 | ## Exploit 20 | 21 | You just need to change the cookie value to the base64 value of "chocolate". 22 | 23 |
24 | 25 | The flag is: 26 | 27 | ``` 28 | csictf{1ick_twi5t_dunk} 29 | ``` -------------------------------------------------------------------------------- /web/Oreo/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Oreo" 2 | author: "AJ1479" 3 | category: Web 4 | 5 | description: | 6 | My nephew is a fussy eater and is only willing to eat chocolate oreo. Any other flavour and he throws a tantrum. 7 | 8 | http://chall.csivit.com:30243 9 | 10 | 11 | value: 500 12 | type: dynamic 13 | 14 | decay: 450 15 | minimum: 100 16 | 17 | flags: 18 | - csictf{1ick_twi5t_dunk} 19 | 20 | tags: 21 | - web 22 | 23 | state: hidden 24 | version: "0.1" 25 | 26 | replicas: 2 27 | containers: 28 | server: 29 | build: . 30 | ports: 31 | - containerPort: 9999 32 | 33 | expose: 34 | - containerPort: 9999 35 | nodePort: 30243 -------------------------------------------------------------------------------- /web/Oreo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "oreo", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "server.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "node server.js" 9 | }, 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "cookie-parser": "^1.4.5", 14 | "express": "^4.17.1" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /web/Oreo/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Oreo 7 | 8 | 9 |
My nephew is a fussy eater and is only willing to eat chocolate oreo. Any other flavour and he throws a tantrum.
10 | 11 | -------------------------------------------------------------------------------- /web/Oreo/server.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const path = require('path'); 3 | const cookieParser = require('cookie-parser'); 4 | 5 | const app = express(); 6 | 7 | const PORT = process.env.PORT || 3000; 8 | 9 | app.use(cookieParser()); 10 | 11 | app.listen(PORT, () => { 12 | console.log(`Listening on port ${PORT}`); 13 | }); 14 | 15 | app.get('/', (req, res) => { 16 | const cookie = req.cookies.flavour; 17 | if (cookie === 'Y2hvY29sYXRl') { 18 | res.send('csictf{1ick_twi5t_dunk}'); 19 | return; 20 | } 21 | res.cookie('flavour','c3RyYXdiZXJyeQ=='); 22 | res.sendFile(path.join(__dirname, 'public', 'index.html')); 23 | }); 24 | -------------------------------------------------------------------------------- /web/README.md: -------------------------------------------------------------------------------- 1 | # Web 2 | 3 | This directory consists of challenges related to `Web`. Please follow the guidelines mentioned in the [template](../README.md) while making contributions. -------------------------------------------------------------------------------- /web/Secure Portal/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | package-lock.json 3 | README.md 4 | Dockerfile 5 | challenge.yml 6 | -------------------------------------------------------------------------------- /web/Secure Portal/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:12-buster-slim 2 | 3 | WORKDIR /app 4 | COPY package.json . 5 | 6 | ENV NODE_ENV production 7 | ENV PORT 9999 8 | RUN npm install 9 | 10 | COPY . . 11 | 12 | EXPOSE 9999 13 | 14 | CMD ["node", "/app/server.js"] 15 | -------------------------------------------------------------------------------- /web/Secure Portal/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Secure Portal" 2 | author: "ashikka" 3 | category: Web 4 | 5 | description: | 6 | This is a super secure portal with a really unusual HTML file. Try to login. 7 | 8 | http://chall.csivit.com:30281 9 | 10 | value: 500 11 | type: dynamic 12 | 13 | decay: 450 14 | minimum: 100 15 | 16 | flags: 17 | - csictf{l3t_m3_c0nfus3_y0u} 18 | 19 | tags: 20 | - web 21 | 22 | state: hidden 23 | version: "0.1" 24 | 25 | replicas: 2 26 | containers: 27 | server: 28 | build: . 29 | ports: 30 | - containerPort: 9999 31 | 32 | expose: 33 | - containerPort: 9999 34 | nodePort: 30281 -------------------------------------------------------------------------------- /web/Secure Portal/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "portal", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "serve": "nodemon server.js" 9 | }, 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "body-parser": "^1.19.0", 14 | "ejs": "^3.1.3", 15 | "express": "^4.17.1" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /web/Secure Portal/server.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const bodyParser = require('body-parser'); 3 | 4 | const app = express(); 5 | app.use(bodyParser.urlencoded({extended: true})); 6 | 7 | app.set("view engine", "ejs"); 8 | app.use('/static', express.static('public')); 9 | 10 | app.get('/', (req, res) => { 11 | res.render('index'); 12 | }) 13 | 14 | app.post('/', (req, res) => { 15 | var password = req.body.password; 16 | if (password === '5W$Fbb=+nBE*pg4t^7M') { 17 | res.send('csictf{l3t_m3_c0nfus3_y0u}'); 18 | } else { 19 | res.send('Failed! Try again.') 20 | } 21 | }); 22 | 23 | app.listen(process.env.PORT || 3000, (req, res) => { 24 | console.log(`Listening on port ${ 25 | process.env.PORT || 3000 26 | }`); 27 | }) 28 | -------------------------------------------------------------------------------- /web/The Confused Deputy/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | package-lock.json 3 | README.md 4 | Dockerfile 5 | challenge.yml -------------------------------------------------------------------------------- /web/The Confused Deputy/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:12-buster-slim 2 | 3 | RUN mkdir /ctf 4 | WORKDIR /ctf 5 | RUN useradd -M -d /ctf ctf 6 | 7 | RUN apt-get update \ 8 | && apt-get install -y wget gnupg ca-certificates \ 9 | && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \ 10 | && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \ 11 | && apt-get update \ 12 | # We install Chrome to get all the OS level dependencies, but Chrome itself 13 | # is not actually used as it's packaged in the node puppeteer library. 14 | # Alternatively, we could could include the entire dep list ourselves 15 | # (https://github.com/puppeteer/puppeteer/blob/master/docs/troubleshooting.md#chrome-headless-doesnt-launch-on-unix) 16 | # but that seems too easy to get out of date. 17 | && apt-get install -y google-chrome-stable \ 18 | && rm -rf /var/lib/apt/lists/* \ 19 | && wget --quiet https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh -O /usr/sbin/wait-for-it.sh \ 20 | && chmod +x /usr/sbin/wait-for-it.sh 21 | 22 | COPY package.json . 23 | 24 | ENV NODE_ENV production 25 | # ENV DOMAIN chall.csivit.com:20000 26 | ENV FLAG csictf{cssxss} 27 | ENV PORT 9999 28 | RUN npm install 29 | 30 | COPY . . 31 | 32 | EXPOSE 9999 33 | 34 | USER ctf 35 | 36 | CMD ["node", "/ctf/server.js"] 37 | -------------------------------------------------------------------------------- /web/The Confused Deputy/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "The Confused Deputy" 2 | author: "roerohan" 3 | category: Web 4 | 5 | description: | 6 | Wow that's a pretty color! Don't you think? Pick your favourite and show it to the admin on /admin. 7 | 8 | http://chall.csivit.com:30256 9 | 10 | value: 500 11 | type: dynamic 12 | 13 | decay: 450 14 | minimum: 100 15 | 16 | flags: 17 | - csictf{cssxss} 18 | 19 | tags: 20 | - web 21 | 22 | state: hidden 23 | version: "0.1" 24 | 25 | replicas: 2 26 | containers: 27 | server: 28 | build: . 29 | ports: 30 | - containerPort: 9999 31 | resources: 32 | limits: 33 | cpu: 500m 34 | memory: 1000Mi 35 | requests: 36 | cpu: 10m 37 | memory: 30Mi 38 | 39 | expose: 40 | - containerPort: 9999 41 | nodePort: 30256 -------------------------------------------------------------------------------- /web/The Confused Deputy/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xss", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "server.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "node server.js" 9 | }, 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "express": "^4.17.1", 14 | "puppeteer": "^5.0.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /web/The Confused Deputy/views/admin.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | csictf Admin 8 | 9 | 10 |

csictf Admin

11 |

The admin would love to see your favourite color! You can send it to him via this form.

12 |
13 |
14 |
15 | 16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /web/The Confused Deputy/visitor.js: -------------------------------------------------------------------------------- 1 | const puppeteer = require('puppeteer'); 2 | 3 | const FLAG = process.env.FLAG || 'csictf{fake_flag}'; 4 | async function run(url, host, color) { 5 | const { hostname, port } = new URL(url); 6 | 7 | if (`${hostname}:${port}` !== host) { 8 | return false; 9 | } 10 | 11 | const browser = await puppeteer.launch(); 12 | try { 13 | const page = await browser.newPage(); 14 | await page.setCookie({ 15 | 'name': 'password', 16 | 'value': FLAG, 17 | 'domain': hostname, 18 | }); 19 | await page.goto(url); 20 | 21 | await page.waitFor('input[type=password]'); 22 | await page.waitForSelector('#colorize'); 23 | await page.waitForSelector('#submit'); 24 | await page.evaluate((color) => { 25 | document.getElementsByTagName('input')[1].value = color; 26 | document.getElementById('submit').click(); 27 | }, color); 28 | await page.waitFor(1000); 29 | return true; 30 | } catch (e) { 31 | return false; 32 | } finally { 33 | await browser.close(); 34 | } 35 | } 36 | 37 | module.exports = run; 38 | -------------------------------------------------------------------------------- /web/The Usual Suspects/.dockerignore: -------------------------------------------------------------------------------- 1 | Dockerfile 2 | README.md 3 | challenge.yml 4 | -------------------------------------------------------------------------------- /web/The Usual Suspects/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.7-slim 2 | RUN pip install tornado 3 | WORKDIR /ctf 4 | COPY . . 5 | RUN useradd -M ctf 6 | RUN chown -R root:root /ctf 7 | RUN chmod -R 700 /ctf 8 | CMD ["python", "server.py"] 9 | EXPOSE 9999 -------------------------------------------------------------------------------- /web/The Usual Suspects/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "The Usual Suspects" 2 | author: "SrishtiGohain" 3 | category: Web 4 | 5 | description: | 6 | You may think I walk with no 'name' because it can be changed whenever I want. I am a 'person' whose 'secret' can never be found. Can you find this 'person's 'secret'? 7 | 8 | http://chall.csivit.com:30279 9 | 10 | 11 | value: 500 12 | type: dynamic 13 | 14 | decay: 450 15 | minimum: 100 16 | 17 | flags: 18 | - csictf{h3r3_i_4m} 19 | 20 | tags: 21 | - web 22 | 23 | state: hidden 24 | version: "0.1" 25 | 26 | replicas: 2 27 | containers: 28 | server: 29 | build: . 30 | ports: 31 | - containerPort: 9999 32 | 33 | expose: 34 | - containerPort: 9999 35 | nodePort: 30279 -------------------------------------------------------------------------------- /web/The Usual Suspects/cs.txt: -------------------------------------------------------------------------------- 1 | MangoDB 2 | -------------------------------------------------------------------------------- /web/The Usual Suspects/rf.txt: -------------------------------------------------------------------------------- 1 | csictf{h3r3_i_4m} -------------------------------------------------------------------------------- /web/Warm Up/.dockerignore: -------------------------------------------------------------------------------- 1 | README.md 2 | Dockerfile 3 | challenge.yml -------------------------------------------------------------------------------- /web/Warm Up/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:7.4-apache 2 | 3 | # Use the default production configuration 4 | RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" 5 | COPY . /var/www/html -------------------------------------------------------------------------------- /web/Warm Up/challenge.yml: -------------------------------------------------------------------------------- 1 | name: "Warm Up" 2 | author: "roerohan" 3 | category: Web 4 | 5 | description: | 6 | If you know, you know; otherwise you might waste a lot of time. 7 | 8 | http://chall.csivit.com:30272 9 | 10 | value: 500 11 | type: dynamic 12 | 13 | decay: 450 14 | minimum: 100 15 | 16 | flags: 17 | - csictf{typ3_juggl1ng_1n_php} 18 | 19 | tags: 20 | - web 21 | 22 | state: hidden 23 | version: "0.1" 24 | 25 | replicas: 2 26 | containers: 27 | server: 28 | build: . 29 | ports: 30 | - containerPort: 80 31 | 32 | expose: 33 | - containerPort: 80 34 | nodePort: 30272 35 | -------------------------------------------------------------------------------- /web/Warm Up/flag.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /web/Warm Up/index.php: -------------------------------------------------------------------------------- 1 | 21 | --------------------------------------------------------------------------------