[PYTHON] Aktivitätsprotokoll im Programmierkreis

Über diesen Artikel

Ich werde eine Zusammenfassung meiner Arbeit in der Sicherheitsabteilung der Computer Study Group für die Ausgabe schreiben. Wir werden jeden Freitag mehr und mehr hinzufügen.

19. Juni

Aktivitätsinhalt: Ich ging zu Teil 3 und Teil 4 von https://google-gruyere.appspot.com/.

Herausforderung: Erstellen einer Webanwendung, mit der Sie Path Traversal Attack erleben können

Verzeichnisaufbau


.
├── templates
│   └── index.html
├── a.txt
├── b.txt
├── c.txt
├── pass.txt
└── app.py

index.html


<!doctype html>
<html lang="ja">

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
	<title>Hello Jinja2</title>
</head>

<body>
	<h1>Webanwendung, mit der Sie Path Traversal Attack erleben können</h1>
	<p>Bitte geben Sie den Dateinamen der Datei, die Sie anzeigen möchten, in das unten stehende Formular ein</p>
	<p><strong>a.txt</strong> <strong>b.txt</strong> <strong>c.txt</strong>Sie können aus wählen.</p>
	
	<form action="/" method="POST" enctype="multipart/form-data">
		<div>
			<label for="name">Dateiname:</label>
			<input type="text" id="name" name="name" placeholder="Name">
		</div>
		<div>
			<input type="submit" value="Senden">
		</div>
	</form>
	<p>{{data}}</p>
	<br><br><br>
	<h4>Kommentar</h4>
	<p>Diese Site sucht nach einer Datei mit dem empfangenen Dateinamen im Verzeichnis und gibt sie unverändert zurück</p>
	<p>Wenn daher ein Dateiname eingegeben wird, dessen Eingabe nicht erwartet wird, kann eine vertrauliche Datei zurückgegeben werden.</p>
	<h3>pass.Geben wir txt ein</h3>
</body>

</html>

a.txt


Das ist ein.Der Inhalt von txt.

b.txt


Dies ist b.Der Inhalt von txt.

c.txt


Dies ist c.Der Inhalt von txt.

pass.txt


Ich konnte wertvolle Passwortdaten extrahieren.

app.py


# -*- coding: utf-8 -*-
from flask import Flask, render_template, request

app = Flask(__name__)
	
@app.route('/', methods=['POST'])
def post():
	name = request.form.get('name')
	data = ""
	try:
		f = open(name)
		data = f.read()
		f.close()
	except:
		pass

	return render_template('index.html', data = data)

if __name__ == '__main__':
	app.run()

Alles was ich tun musste war einen lokalen Server einzurichten, also schrieb ich ihn mit Flask. Es war lächerlich einfach zu implementieren, also fühlte es sich an wie Flask! Gibt es wirklich jemanden, der solch eine dumme Verwundbare implementiert?

12. Juni

Aktivitätsinhalt: Ich habe Teil 0, Teil 1 und Teil 2 von https://google-gruyere.appspot.com/ gemacht.

Was ich gelernt habe: Es gibt verschiedene Arten von XSS (Cross-Site Scripting), z. B. Reflective Type, Accumulation Type und DOM-basiertes Xss. Ergreifen Sie Maßnahmen gegen XSS und desinfizieren Sie (Flucht).

Herausforderung: Erstellen einer Webseite, auf der Sie DOM Based XSS erleben können

xss.html


<html>
  <title>DOM Based XSS</title>
  <h1>Eine Site, auf der Sie DOM Based XSS erleben können</h1>
  Hi
  <script charset="UTF-8">
    var pos=document.URL.indexOf("name=")+5;
    document.write(unescape(document.URL.substring(pos,document.URL.length)));
  </script>
  <br><br>
  <p>Wenn Sie am Ende der URL dieser Seite einen Namen als Parameter angeben, wird HTML dynamisch neu geschrieben</p>
  <p>(Beispiel) 〜〜xss.html?name=Taro</p>
  <p>Ich denke, der Name wird oben nach Hi angezeigt.</p><br>
  <P>Diese Site führt es jedoch aus, wenn ein schädliches Skript in den Parameter eingefügt wird.</P>
  <p>(Beispiel) 〜〜xss.html?name=&ltscript&gtalert("Your PC was broken!!")&lt/script&gt</p>
  <P>Wenn Sie alarmieren können, müssen Sie ein Skript ausführen, das sich tatsächlich negativ auswirkt.</P>
  </html>

Recommended Posts

Aktivitätsprotokoll im Programmierkreis
Programmieren, um in der Welt zu kämpfen ~ 5-1
Programmierung, um in der Welt zu kämpfen ~ 5-5,5-6
Programmieren, um in der Welt zu kämpfen 5-3
Programmierung für den Kampf in der Welt - Kapitel 4
Programmieren, um in der Welt zu kämpfen ~ 5-2
Die gefragteste Programmiersprache im Jahr 2020
Zeichnen Sie Grafiken in der Programmiersprache Julia
Programmieren mit Python
Programmieren des Lernprotokolls 2. Tag
Python-Programmierung mit Excel
Sprechen Sie über die Zeiterfassungs-API in der Programmiersprache
Ich habe an der Übersetzungsaktivität des offiziellen Django-Dokuments teilgenommen
Ich habe versucht, den Chi-Quadrat-Test in Python und Java zu programmieren.
10 beliebtesten Programmiersprachen im Jahr 2020
Finde Fehler in Python
In der Liste verfügbare Methoden
Die Popularität von Programmiersprachen
Programmiersprache, die junge Menschen in Zukunft brauchen werden