We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Hosting CTFs with Berlyne

00:00

Formal Metadata

Title
Hosting CTFs with Berlyne
Subtitle
Problem based learning in IT security
Title of Series
Number of Parts
95
Author
License
CC Attribution 4.0 International:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
Berlyne is free software and lets you create problems, following the principles of problem based learning. Berlyne can be used to host authentic Capture The Flag competitions in your own infrastructure. This talk explains what problem based learning is (and why it works well in IT security education), how to use Berlyne and how to extend it with own problems.
Keywords
22
Thumbnail
54:22
27
29
36
Thumbnail
1:05:58
38
Thumbnail
1:00:58
65
Thumbnail
44:43
75
91
Thumbnail
1:21:58
94
Open sourceFreewareInformation securityStudent's t-testSoftwareSession Initiation ProtocolPhysical lawUniverse (mathematics)QuicksortKey (cryptography)ArmVideo gameBitMultiplication signComputer virusComputer animation
2 (number)FlagMotion captureComputer animation
Time zoneFlagMultiplication signFlagField (computer science)Point (geometry)Information securitySoftwareComputer animation
Service (economics)Game theoryFlagVulnerability (computing)Self-organizationMultiplication signPlanning
Physical systemEndliche ModelltheorieWater vaporRevision controlService (economics)String (computer science)Point (geometry)Type theoryGame theoryFlagWhiteboardComputer animation
Different (Kate Ryan album)Service (economics)Game theoryType theoryFlagUniverse (mathematics)Self-organizationBitMultiplication signLecture/ConferenceProgram flowchart
Multiplication signElement (mathematics)Point (geometry)BitComputer animation
WebsitePasswordLoginTask (computing)Field (computer science)BitFluxCASE <Informatik>WebsitePoint (geometry)Information
WebsitePasswordLoginPay televisionOnline chatWebsiteTask (computing)Web 2.0Perturbation theoryInteractive televisionComputer clusterSystem administratorCASE <Informatik>FlagEmailPay televisionCross-site scriptingForm (programming)Endliche ModelltheorieDirection (geometry)Data managementComputer animation
Meta elementRSA (algorithm)Parameter (computer programming)LogicInversion (music)Vulnerability (computing)TelecommunicationKey (cryptography)SoftwareTask (computing)Service (economics)WebsiteScripting languagePhysical systemMessage passingRight angleComputer animationXML
SequenceElectronic signatureContent (media)RSA (algorithm)Key (cryptography)Codierung <Programmierung>Uniqueness quantificationQuery languageDivisorParameter (computer programming)LogicInversion (music)CryptographyTask (computing)Goodness of fitForm (programming)Category of beingWeb 2.0WebsitePhysical systemCryptographySource codeXML
Schmelze <Betrieb>Event horizonRoundingIntrusion detection systemMobile WebComputer animation
State of matterFlagStudent's t-testUniverse (mathematics)Cartesian coordinate systemWave packetType theoryPoint (geometry)Combinational logicSimilarity (geometry)Computer animation
TheoryUniverse (mathematics)Student's t-testDot productCartesian coordinate systemIndependence (probability theory)MereologyInformationNatural numberPoint (geometry)Real numberGroup actionOnline helpProcess (computing)Computer animation
Natural numberGroup actionFeedbackInformation securitySoftwareUniverse (mathematics)Logical constantDatabaseMoving averageLecture/ConferenceComputer animation
BitArchaeological field surveyFeedbackStudent's t-testService (economics)SoftwareTask (computing)Graph (mathematics)Information securityMultiplication signComputer animationDiagram
FlagMotion captureRankingUniverse (mathematics)Computer animation
Medical imagingCASE <Informatik>Router (computing)Service (economics)Vulnerability (computing)Exploit (computer security)File formatSoftwareBoss CorporationMatching (graph theory)Normal (geometry)Right anglePower (physics)Computer animation
Line (geometry)Content (media)SoftwareMotion captureTask (computing)Enterprise architectureMultiplication signUniverse (mathematics)Computer animationLecture/Conference
2 (number)Software frameworkInformation securityCartesian coordinate systemMultiplication signSoftwareRight angleComputer animation
System programmingBit rateComputer-generated imageryTouchscreenFormal grammarWindowComputer iconConfiguration spaceElectronic visual displaySlide ruleWeb pageFeedbackHacker (term)Lattice (order)Computing platformAlpha (investment)Game theoryService (economics)FlagPoint (geometry)Firefox <Programm>EmailComputer forensicsFirst WORDInstallation artHash functionBlogVirtual realityContent management systemActive contour modelElectronic mailing listComputer programData typeState of matterTask (computing)Group actionPasswordThresholding (image processing)Digital filterRobotData recoveryExploit (computer security)CryptographyoutputCodeBinary fileString (computer science)IRIS-TWebsiteWeb browserWeb applicationPasswordTask (computing)Point (geometry)Computer fileRemote procedure callStudent's t-testMultiplicationDescriptive statisticsDigital electronicsPerspective (visual)Computer configurationCuboidCASE <Informatik>Category of beingThresholding (image processing)VirtualizationInclusion mapVector spaceTunisOperator (mathematics)BefehlsprozessorFlagGame theoryBit2 (number)RankingWeb 2.0Link (knot theory)Reverse engineeringPhysical systemFront and back endsGraphical user interfaceComputer animation
Firefox <Programm>Link (knot theory)EmailActive contour modelGame theoryPoint (geometry)Exploit (computer security)Hash functionVirtual realityContent management systemComputer fileLocal ringInformationFlagSource codeObject (grammar)Multiplication signBinary codeWeb 2.0Computer animation
CASE <Informatik>Web pageActive contour modelInformationComputer animation
Gamma functionExploit (computer security)Firefox <Programm>Game theoryPoint (geometry)Slide ruleView (database)File formatWindowScripting languageVirtual realityPoint cloudStudent's t-testOnline helpFile formatMereologyInformationContent (media)Scripting languageConfiguration spaceComputer fileDirectory serviceMeta elementComputer animation
Physical lawRepository (publishing)NumberPhysicalismPoint (geometry)Distortion (mathematics)Different (Kate Ryan album)Internet service providerMeasurementSoftware testingDrop (liquid)Cloud computingPoint cloudReal numberLecture/ConferenceComputer animation
Content (media)Active contour modelPoint (geometry)NumberGamma functionProtein foldingLine (geometry)Sinc functionCASE <Informatik>Instance (computer science)NumberDocument management systemPhysical systemService (economics)Computer configurationRight angleDirectory serviceDescriptive statisticsFree variables and bound variablesMereologyState of matterLink (knot theory)Category of beingPoint (geometry)SpacetimeWordInheritance (object-oriented programming)Term (mathematics)Exception handlingElement (mathematics)Revision controlIdentifiabilityContent (media)Computer fileConfiguration spaceMetadataComputer animationJSON
Installation artHash functionActive contour modelGame theoryContent management systemTask (computing)First WORDNumberBlogVirtual realityElectronic mailing listData typeComputer programState of matterComputer configurationPhysical systemDifferent (Kate Ryan album)Color managementUser interfaceSolid geometryComputer animation
Content (media)Configuration spaceReading (process)Configuration spaceMultiplication signMetadataRevision controlContent (media)Scripting languageService (economics)Directory serviceCASE <Informatik>MereologyStapeldateiComputer programmingException handlingTheoryComputer animation
Lattice (order)Group actionInstallation artVirtual realityData typeState of matterTask (computing)Hash functionFirst WORDNumberComputer programContent management systemBlogElectronic mailing listExploit (computer security)EmailFirefox <Programm>Active contour modelGame theoryPoint (geometry)RobotFlagAddress spaceInternet service providerAbelian categoryWritingFeedbackVulnerability (computing)FlagWeb pageTask (computing)NumberPoint (geometry)Descriptive statisticsSelf-organizationReflection (mathematics)Rule of inferenceOrder (biology)Computer animation
Slide ruleWindowComputer fileFile formatView (database)WikiBitComputer animation
UsabilityEmailPerfect groupLine (geometry)Electronic mailing listRepository (publishing)Library catalogDigitizingSelf-organizationUniverse (mathematics)Multiplication signOpen sourceRoundness (object)WikiTask (computing)Event horizonSoftwareService (economics)Wave packetSoftware testingPatch (Unix)Physical systemScaling (geometry)QuicksortFlagMotion captureCategory of beingThresholding (image processing)Speech synthesisCodecBitElement (mathematics)Process (computing)Vulnerability (computing)WebsiteInjektivitätStandard deviationExploit (computer security)Maxima and minimaComputer fileReal numberLecture/Conference
FreewareOpen sourceEvent horizonComputer animation
Transcript: English(auto-generated)
Thanks for showing up to my talk on hosting CTFs with Verlinde, where Verlinde is a tool I have written for exactly this purpose.
First of all, about me. My name is Troven Gonzalez. I am currently an InfoSec Master's student here at this university. Let me start with an apology. I'm really not fit today, so if I'm a bit slow from time to time or I have to take a sip of my tea, please excuse me.
Hello. As I said, I'm a Master's student here and I currently live in Bonn. So, what is this talk about?
The last three semesters, I was tutor for software security at another university and there we spiced up our lecture with CTFs and I want to pass on some of the experience we've made
and talk about the tool I have written to host CTFs. So, the talk has three segments. First of all, I'm going to talk about what a CTF actually is. Then I'm going to talk about the principles of problem-based learning,
which is important in my opinion. And then I'll show the actual tool this talk is mainly about. Okay. For a second.
Can you maybe raise your hand, who knows what capture the flight means? Okay. A lot, not everyone though. Okay, nice. So, I'm going to give a brief introduction then.
This is a capture the flight competition. As you can see, the red team here is trying to steal a flag and the grey team is trying to prevent the red team to steal this flag.
They're playing on a field that looks somewhat like this. Each team has a base, the base contains a flag and the other team's goal is to get the flag and bring it to their own base. That way they receive a point.
So, both teams have to defend their own flag while trying to steal the flag from the other team or other teams. So, this talk is about software security or IT security in general. So, what does that have to do with IT security?
Well, they're playing basically the same game. These are two teams, one in the back and one in the front, playing CTF and how does it work? Basically, each team hosts vulnerable services.
The services are usually provided by the organizers of the CTF but hosted by the teams participating and the goal of this team is to steal a flag of the other team by using the vulnerability in the service
while at the same time defending their own flag by patching their own services. Once they got a flag, they submitted to a system, took their board and received their points.
In this version of the game, the flag doesn't consist of cotton. It's usually just character strings that are weighted because if it's hard to exploit a service, you get more points than for an easy service.
Okay. So, one last thing. There are mainly two types of CTFs played. The first one is attack defense, that is exactly what I've just showed you where the goal is to steal the flag,
host it in the service of the other team. These are a bit difficult to host, especially for large setups, so these are usually played at conferences or locally at universities or something like that. The second type is the Jeopardy CTF
named after the game show where the organizer hosts the services and the goal for every team is just to exploit the service hosted by the organizer and steal the flag there.
The Jeopardy CTF has some big advantages. For example, it's not as time critical, it's not real-time as an attack defense. If I have an attack defense for eight hours, I need to pay full attention for this time.
Whereas in Jeopardy, there's not really a real-time element, so it can last for days or even longer and teams can just work in their own pace, which is good for educational purposes and easier to organize.
So, since a lot of you know what CTFs are, this is a typical scoreboard, as you would imagine it, a ranking with points. Now, a bit more interesting, this is an example task I picked out because I liked it from the Hekalu Jeopardy-style CTF
that is organized by the Flux Fingers, which is a CTF team of the Ruhr Universität Bochum, which is nearby. A typical, easier task you have, in this case a website, and one field where you can interact with the website,
where you can enter something. So, this is your starting point. You don't have background information, you just have this website and you need to get a flag. As an example for a more complex task, from the same CTF actually,
there was this, the motto that year was Wild Wild Web. This dating site, Hot Cows, and it has a lot of interaction. It has a chat that actually works, the cows reply. You can get a premium account, you have user management,
you can even write the administrator an email via a form. And that's also a problem. You don't know where to start, but you need to get a flag. In this case you had to contact the administrator
and use cross-site scripting. Here is an example for another task. It doesn't always have to be a software service or a website. Here there are two weak RSA keys and of course in your lecture you learn, okay, short keys are bad, but once you,
because you got a communication here, once you actually wrote the script that decrypts RSA encrypted messages, then you really understood how the system works and why it is bad to have short keys.
Last thing you need to know. A lot of teams, after they solved a particular challenge, they write a write-up how they solved this challenge and publish it often, which is a good form of documentation for them,
but also for others who weren't able to solve the task. You know, typical categories nowadays include almost everything. Typically it's a reversing or web crypto, but you see everything in CTFs nowadays from simple websites to all operating systems
that you need to exploit. So, if you didn't know about CTFs, I hope this was a brief introduction. There is a website called ctftime.org that lists a lot of CTFs. So if you're interested, check it out.
There is currently a CTF hosted online almost every week, which is really cool. So, secondly, this talk is about hosting CTF with Perline, not about participating.
And now there's a lot of institutions, especially universities, use capture-the-flight competitions, which is really cool, but often they do it in a manner that doesn't really help students, which is why I included this segment about problem-based learning, which are very basic principles that you should follow
if you host a CTF. Yeah, as it states here, the idea behind PBL is that the starting point should be a puzzle, a riddle, a query, and of course you can argue that this type of learning has been around forever,
but the problem-based learning, how I'm gonna talk about it, is the formal, defined one, there's been a lot of research about that it works very well in combination with lectures, not as a replacement, though,
but together with a lecture, and that it works really well to assimilate fragmented knowledge into applicable skills. So if you have a lecture or a training in your company or university that teaches you the theories, problem-based learning is great
to make the students understand the theory, connect the dots, and get applicable skills out of this theory. The goals are to promote problem solving, independent learning, also to evaluate independent learning,
and last but not least, also the motivation is a big part. So, PBL, these are the four basic points. If you're a CTF, you should take into consideration, very basic, very easy, and if you follow them,
you usually have good outcomes. So, first one is authentic problem. That's something often violated. That just means the problem should be as close to a real-world problem as possible. And also, that there should be no detailed background information
on the problem itself. Secondly, you work in small groups. Third, the teacher steps back, is a tutor. He doesn't help with any problems. He might moderate the learning process, but he definitely should not help.
And the individual knowledge gain usually comes naturally. That just means if you work in a group, you can discuss with people, but everybody should do research on their own, and then discuss with the others. But as I said, if you do a CTF in small groups,
that usually comes naturally. So, we hosted a CTF at the RTV Constance, which is a university in Constance, taking these roles into consideration to spice up the software security lecture.
Afterwards, we gathered feedback from the participants. There was a bit over 30 students, I think 31, mainly IT students, but also we had some from electrical engineering. And,
of course, we got a survey for the feedback. One of the questions was, did you have fun? And the CTF was obligatory, so people had to participate. But still, most of them said they had fun, or at least a little,
which is nice. But even more interesting was this question, did you learn something new? These graphs look a bit too good, but these are from the actual feedback. Did you learn something new? And everybody said yes, which is interesting because
the tasks of the CTF and the topics taught in the software security lecture and the CTF was at the end of the lecture. It was really cool to see the students really invest a lot of time, more than they would usually do with a worksheet,
and still having fun and still learning something new. Why I included this PBL is, as I said, a lot of institutions are picking up on this idea of capture-the-flag competitions, which is cool, but
sometimes they don't take problem-based learning or other learning methods into consideration. I included an example for this here by the vendor Hacking Lab, which is used by some universities. It's a company that hosts
capture-the-flag competitions. There, if you solve a task, you have to write up and submit it, and then the write-up gets assessed. In this case, you got the image of a router,
and you're supposed to run it. The router had a software service running with a vulnerability. How I solved it was just download the image, convert it to a format you can use with, mount the image, grab for flag,
and I received the flag, which is an enormous CTF. This would be a valid solution because I got the flag, but in this case, the write-up actually gets assessed. I can't exploit the service as I would.
I have to specifically exploit it and how the creators wanted me to exploit it, and that, of course, is not authentic. It's not an authentic problem, and it doesn't motivate. It's frustrating. That was a really frustrating task.
There was an introduction to CTFs and problem-based learning. I will talk about the tool I have written to host these capture-the-flags at my university. It is also used by a company in Cologne,
Dilexium, which is also a sponsor at this conference. This tool, I wrote it as free software, and it's a tool to work with. It's not your enterprise tool to just use. You're supposed to work with it.
First of all, why would you use a tool to host CTFs? Why would you host CTFs if there are so many online? First of all, the CTFs online, they vary heavily in difficulty and quality, and if you have a lecture or a course,
you might not want to depend on a CTF. You don't know what it's going to be about. It might not match in content, and also not in time. It's often during the weekend. You can use Berlin to host your own CTFs whenever you want with the topics you want.
So the goals of Berlin, basically bring CTFs to the classroom, make it easy to spice up your lecture, your course in software IT security with a CTF, make it very easy to set up a CTF within seconds.
It's written in Django, which is a Python framework. Just because I'm very lazy and Django is an extremely cool framework that allows you to write applications in no time.
Okay. So I'm going to show the tool, which is why most people came, probably. So I have two browsers open. It's a web application.
At least the frontend is a web application. The Chrome one is a teacher.
The Firefox one here is a student. So as a student, you just have the different courses, and a course is essentially a CTF. I mean, in this game mode, you have a threshold,
a certain amount of points you need to pass, kind of like an exam. You have a beginning and a deadline for flag submission, and the short description, and the rest is just your usual CTF.
You have problems here. You have a flag submission and you have a scoreboard. Here somebody already has some points. They are in red because they haven't reached a threshold yet.
Okay. So the first student is just a normal CTF. More interesting is the teacher's perspective. Here you have an additional tab about problems. So if I look into them,
these are the different problems that I currently have installed in this local installation. You can see, but I will dive into that a bit more later, you can see the deployment options are different. I have challenges that are only downloadable,
but also Docker or some run in the VirtualBox VM. I'll show that to you in a second. As a teacher, I just create a problem.
A course, sorry. And I show how to create problems in a second. I choose if I want the scoreboard. Maybe sometimes you don't want the ranking. I can say if the students have to submit a write-up with their solution,
start a deadline, I can set a password and a threshold, and then I can assign problems to the course. So now in this case, they have tags and names and categories.
So I want a web challenge, maybe something remote file inclusion. I'll add that. Maybe some reversing. Reversing.
Now I can assign points. These are the points the problem creator wanted for the task, but I can overwrite them for the course.
Now the course is created, and if I go back to the problems page, I see the system now starts the problems that got newly assigned. So this can be seen as like a high-level singleton.
The problems that are in the course are running. The problems that are not used in the course are shut down. Okay. So I go back to the student's perspective. I see the new course,
and I can join it with, I just set a password, yeah. And this is my course. It's a CTF. I see in the meantime, now because it's a local installation,
there's only one worker that starts and stops the VMs. Usually it's one worker per CPU in a real deployment. So this is not initialized yet, but here this is a problem. This is a CTF task. I can, I have a brief description, and in this case a link.
Yeah. And that's your problem. You don't have background information, you just need to receive a flag somehow. Okay. So, exactly.
So the other one also started, is also started. Again, here I can download a binary, and this is not a web page,
it doesn't look too good. In this case it's just a snake game, and again it's without background information,
it's just a problem you have to solve. So a teacher can just assign problems, use problems, create courses, and for students it's basically a CTF.
It's just a help for teachers or institutions to set up CTFs really fast. So these problems I was talking about, obviously they are very important.
If you want to write your own problems they consist of only three parts. A config file for meta information, a setup or provisioning script, and the content directory with the actual content of the problem. So you can exchange them very easily
via USB stick or Git repositories or whatever you prefer, and you can just deploy them either to Docker, VirtualBox or DigitalOcean, whereas I would recommend using Docker only for testing because it doesn't offer isolation
as the real VM does. And DigitalOcean is a cloud provider which is handy because then the problem doesn't get deployed locally, but it spins up a droplet VM in the cloud. And for you it doesn't make a difference in the handling.
The problem difficulties are measured in points. For me I do it for between one and five hundred points, but you can do it however you would like to do it. So, problems? If you have a problem you just copy it
to the problems folder of your Berlin instance. In this case these are the problems I have. The problem lucky number, although I just copied there, I haven't used it,
haven't installed it yet. And as you can see it consists of four elements, the readme is just a bonus by me so you know what it's about. Config.json is the metadata file
where I have the points, obviously, the ports the VM uses because the VM is not just put out in the wild. You have to specify the ports your service is using and then the per-line system
adds a port forwarding. In this case the service uses a port 6666 and that will get assigned a random port later on. You have a category, the tags for the search option. You can specify downloads from the content directory
people should be able to download a name and a description which uses these placeholders. So here for example the dlmain will be replaced by the download link for this download.
The host part, the host placeholder will be replaced by the host since I don't know where it's going to get deployed. And the port is the port I specified earlier. You can use that because as I said there will be a random port assigned
that has a port forwarding to the VM's port, in this case 6666. Okay. So a lucky number in this case. Let's say I want to add it to my course. Once I put it in the problems folder
I can just, via the Wipe interface, install it for the different deployment options then the system will install it. This can take a second now since it creates the VM, it provisions the VM.
During this time I can show you the problem. I showed you the config metadata. The content is just a normal directory. In this case with the program and a configuration for XENETD.
And the third part was the setup which is just a script that installs the needed services for the problem. Here it's just a batch script but in your installation you can also use Puppet or whatever you prefer.
Okay, so now it's installed the problem. I will add the problem now to the course. How is it called? Lucky number.
Again it just makes it very easy for teachers to do these kinds of stuff. Now it starts up the VM.
So here you see the tasks are starting and the task is currently running to start the VM. I can show you, I can cheat.
If I submit a flag, maybe that's also interesting. This is a task I see as a teacher, a page for a problem I see as a teacher where I see the port forwarding that was used, the description and the flag.
The flags get created automatically. They're not always the same. They get created for a startup. So now I have the task. I can submit a flag and then oh, there was another here.
And then I can write it right up. For the teacher to read and I receive the points. So it's CTF just made easy for organizers.
So that was it. I hope you've seen a bit about the tool. I hope you think it's useful. If you have any questions or if you have trouble setting it up, there's actually a Wiki page describing everything. But don't hesitate to write me.
I'm glad to help.
There's not really a marketplace for problems, but so far there's a Wiki page listing problems available. And that's also one of the reasons why I want to put this tool out because
if somebody creates problems or I mean you can also just use open source software as known vulnerabilities and include it, for example, then it would be really nice if you tell me so I can add it to the list. So far there's not a marketplace because
there's not that huge amount of problems. But there's a Wiki page also on GitHub listing them. And as I said, it's really easy to include them. Most of them are in Git repositories, so you just clone the repository, copy it and then you have to put it. But if it grows and if there are more problems, there will be a marketplace here or a catalog here.
Hi, thank you for the talk. Are you aware of other people or organizations using it already? How many?
My university, where I did my bachelor's, they're using it since three semesters. What they do, they have worksheets during the semester and in the end this is kind of like a final. So you have a certain threshold which is not too high
and a lot of tasks. So you need to solve three tasks at least that were from the category that was taught in the lecture. And also, this is the first time I speak publicly about the tool,
but a company in Cologne uses it for training of penetration testers. The company is called Delixio. I did an internship there, I'm not there anymore. And so far everybody who used it liked it, but only my university and the company I worked for used it.
They like it. Any more questions? A rather generic question in regards to the sketch of the flag,
because I think the idea is very good. Did you see appliances where, this is very software centric I believe, where it was taken out into the wild existing services so that people had to sit there and solve problems like getting a service up and running in the real world with devices and that stuff?
This is one of the main critiques of the method, especially if you do it in jeopardy style, where you don't even have to fix the problems you've exploited. You just have to prove that you understood them. It's an interesting problem and we have experimented with it at universities,
but I haven't seen large setups where you had to patch a system or get a system running. I think it would be very great, but it's difficult to organize.
So maybe someone can come up with a nice solution for that, especially that scales, because if you do it in a university, it's easy, but if you do it online with hundreds of participants, it's not so easy to organize. So I haven't seen a large setup that does that, unfortunately,
although it would be really great. Thanks. And a question, how long does it take usually to set up a challenge? Maybe I missed that in your speech, but what's the min and max that you have experienced to create a new challenge, because I think that's the essence of it. Yeah, so that's, as I said, one of the reasons why I gave this talk now,
because I think it's a bit of a crowdsourcing task, but there are a lot of existing CTF tasks, because a lot of organizers that held online CTFs afterwards put their tasks on GitHub or something like that, so you can use them.
You can also use existing software that has vulnerabilities, for example, but making easy tasks is not that difficult, so you can set up a website that has an SQL injection vulnerability or something.
It usually doesn't take so much effort, so it really depends on your standards. I think it's not much of an effort to write tasks, but to write really, really good tasks, to take it to perfection, is almost hard. As I said, there are CTF tasks where somebody actually wrote an operating system
and stuff like that, but the basic tasks, as I showed them here, it took me maybe a couple of hours. If you make it really small, even less.
Once you've done one, you kind of get a hang of it. So if you write your own problems, per problems maybe need a couple of hours, or if you use an existing problem, just align it for per line, it's very easy, because you just need these three files.
So it's not hard, but if you want to perfection it, it's work. Thanks a lot. Thank you, and maybe another round of applause.