
“Why did you choose your project, and has it met your expectations thus far?”
I chose my project mainly because it is a security research project, and my focus and interest has been in security during my time at OSU recently, especially this last year. I saw how it could be similar to one of my favorite projects that we did in a previous security course, called the Damn Vulnerable Web Application (DVWA). This project gave us the opportunity to build something similar, but from the ground up and how we wanted.
“Did you initially have doubts about your ability to complete the project? How do you feel now?”
Going into this term, we hadn’t really started much development at all, and I was a bit anxious and overwhelmed to get started because I was not familiar with the tech stack we are using, primarily Vue.js and Flask. I was able to find my niche within the backend, mostly in our server and database. Flask was pretty straight forward once I got going, and I had a good idea on the vulnerabilities I wanted to develop.
My experience with the DVWA project in a past course helped tremendously going in and throughout the project. I had a good idea about the OWASP ‘Top Ten Web Application Security Risks’, and had testing/hacking experience with most of them.
“What is the most interesting thing about your project and why?”
I had a handful of vulnerabilities I knew I wanted to implement, such as Brute-force hacking, Cross Site Scripting (XSS), CSRF, and SQL Injection. Accomplishing both developing and exploiting these has been the most fun and interesting part of the project for me so far.
We have managed to get these implemented on our site, through using Pinia (which is a store library for Vue) for state control, which are represented as toggles on the nav bar of our site that pop up under the ‘Vulnerabilities button’ – which when selected will change the API endpoints that are being called shown below on our homepage of our web app.

We have been able to build and design an almost fully functional faux banking web app, that implements both secure and insecure versions built out for each vulnerability. The bulk of this so far has been on the backend, specifically in the server.py code I mentioned above, that has been my main contribution for the project thus far. To make the exploits more easy to test throughout development, I have taken advantage of an extension if VS Code called Thunder Client. Leveraging this this tool, I don’t have to wait on the frontend working to be able to develop and test the vulnerable endpoints that I’ve worked on.
Here is an example of a SQL injection being tested with Thunder client which is simulating a POST request to the web page, with the malicious script included in the JSON body as shown in the left pane, and the response shown in the right pane. This is all being tested on our sql injection vulnerable endpoint, where the malicious user is able to easily enter a SQL query in the login user box, and gets all the database values returned to them, including the users login and password credentials, because of lack on sanitizing or checking user input.

Reflection on 462
Overall, the experience with this project has really boosted my confidence as a software engineer, and someone who can contribute as a solid team member to a code base.
As I get closer to graduation, I can see with more clarity both the strengths and weaknesses that I have when looking for job opportunities. From a project and security standpoint, I think I am in a decent spot compared to many. The main issue I am facing is putting aside time for LeetCode, and until I do that for a while, I likely won’t be able to make it through the tough coding interviews that most companies administer during the interview process. One day at a time.
– Brett