19ecs448p Secure Software Engineering Lab Manual
19ecs448p Secure Software Engineering Lab Manual
GITAM UNIVERSITY
(DEEMED TO BE UNIVERSITY) GITAM GITAM School of Technology
LAB MANUAL
List of experiments
P.
S.No Experiments No
4. SQL Injection
5. Command Injection
6. No Server-Side Validation
7. Stack Overflows
7. Search Function
8. Arguments
9. File Operations
app = Flask(__name__)
@app.route('/run_command', methods=['POST'])
def run_command():
cmd = request.form.get('cmd')
result = eval(cmd) # VULNERABILITY: Evaluating user-supplied input as code is a dangerous practice
return result
if __name__ == '__main__':
app.run()
2-import mysql.connector
def get_user_info(username):
conn = mysql.connector.connect(user='user', password='password', host='host',
database='database')
cursor = conn.cursor()
query = "SELECT * FROM users WHERE username='" + username + "'"
cursor.execute(query)
results = cursor.fetchall()
cursor.close()
conn.close()
return results
username = input("Enter your username: ")
print(get_user_info(username))
3-def process_input(user_input):
with open(user_input, "r") as f:
content = f.read()
print(content)
user_input = input("Enter a file name: ")
process_input(user_input)
amount = request.form.get('amount')
recipient = request.form.get('recipient')
# Transfer the funds...
return 'Funds transferred successfully!'
if __name__ == '__main__':
app.run()
5-def read_credit_card_number():
card_number = input("Enter your credit card number: ")
# do something with card_number return card_number
def process_payment(card_number):
# process payment with card_number pass
card_number = read_credit_card_number()
process_payment(card_number)
6-import requests
def fetch_data_from_url(url):
response = requests.get(url)
data = response.text
exec(data)
url = input("Enter a URL: ")
fetch_data_from_url(url)
Ex. 8 Arguments
import os
import urllib
from flask import Flask, request
from django.db import connection, models
from django.db.models.expressions import RawSQL
app = Flask(__name__)
@app.route("/code-execution")
def code_execution():
code1 = request.args.get("code1")
exec("setname('%s')" % code1)
return a
@app.route("/open-redirect")
def open_redirect():
redirect_loc = request.args.get('redirect')
return redirect(redirect_loc)
@app.route("/sqli/<username>")
def show_user(username):
with connection.cursor() as cursor:
cursor.execute("SELECT * FROM users WHERE username = '%s'" % username)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=9000)
9-import java.io.*;
public class UnvalidatedInput {
public static void main(String[] args) {
String filename = args[0];
File file = new File(filename);
try (FileReader reader = new FileReader(file)) {
char[] buffer = new char[(int) file.length()];
reader.read(buffer);
System.out.println(buffer);
String query = "SELECT * FROM users WHERE username = '" + username + "' AND
password = '" + password + "'";