├── .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 |
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 |
--------------------------------------------------------------------------------