• XSS.stack #1 – первый литературный журнал от юзеров форума

$_POST Запрос

Столкнулся с конструкцией if(!empty($_POST) && is_string($_POST))
А как передать в POST sring?
Передать можно через JSON это по сути string-овый тип данных.
Функция для преобразования массива в JSON - json_encode($arr);
Функция для преобразования JSON в ассоциативный массив json_decode($str, true);
 
Столкнулся с конструкцией if(!empty($_POST) && is_string($_POST))
А как передать в POST sring?
В $_POST попадают данные отправленные как formdata поэтому условие никогда не выполнятся (или я чего-то не знаю)
По поводу json, он считывается из тела запроса file_get_contents('php://input');
 
Последнее редактирование:
Столкнулся с конструкцией if(!empty($_POST) && is_string($_POST))
Согласно документации (тут: https://www.php.net/manual/ru/reserved.variables.post.php) $_POST - это ассоциативный массив данных, переданных скрипту через HTTP методом POST при использовании application/x-www-form-urlencoded или multipart/form-data в заголовке Content-Type запроса HTTP.

Не понимаю зачем нужна конструкция is_string($_POST), если это всегда массив. Проверяйте наличие конкретного поля так: isset($_POST["lalala"]).

А как передать в POST sring?
По разному, например, через HTML-форму или через JS.

JavaScript:
const data = new FormData();
data.append('name', 'Vasssyaaa');

fetch('file.php', {
  method: 'POST',
  body: data
})
.then((response) => response.text())
.then((text) => {
    console.log(text);
})

PHP:
<?php

if($_SERVER['REQUEST_METHOD'] === 'POST') {

  if (isset($_POST["name"])) {
      echo($_POST["name"]);
  }

}
 
Не понимаю зачем нужна конструкция is_string($_POST), если это всегда массив. Проверяйте наличие конкретного поля так: isset($_POST["lalala"]).
Да, всё верно, но мы не знаем и не видели код до текущей строки.
Возможно какой-то уникум переопределил $_POST как string например так - $_POST = 'Jz-2';
Зачем так делать вопрос уже другой, но имеет место быть.
 
Код
PHP:
    public function __construct()
    {
        $postTempVar = $_POST;
        if(!empty($_POST) && is_string($_POST)) {
            $postTempVar = unserialize($_POST);
        }
        if(!is_array($postTempVar)) {
            $postTempVar = array();
        }
        $this->post = new RscSgg_Http_Parameters($postTempVar);
        $this->query = new RscSgg_Http_Parameters($_GET);
        $this->files = new RscSgg_Http_Parameters($_FILES);
        $this->server = new RscSgg_Http_ServerParameters($_SERVER);
        $this->headers = new RscSgg_Http_Parameters($this->server->getHeaders());
    }

он из плагина вп gallery-by-supsystic
 
Код:
echo "your payload here" | curl -d @- https://target.com/script.php
Само собой тут надо указать сериализованный объект, который во время десериализации бомбанёт на бэкенде.
 
Код:
echo "your payload here" | curl -d @- https://target.com/script.php
Само собой тут надо указать сериализованный объект, который во время десериализации бомбанёт на бэкенде.
$_POST - массив
Код
PHP:
    public function __construct()
    {
        $postTempVar = $_POST;
        if(!empty($_POST) && is_string($_POST)) {
            $postTempVar = unserialize($_POST);
        }
        if(!is_array($postTempVar)) {
            $postTempVar = array();
        }
        $this->post = new RscSgg_Http_Parameters($postTempVar);
        $this->query = new RscSgg_Http_Parameters($_GET);
        $this->files = new RscSgg_Http_Parameters($_FILES);
        $this->server = new RscSgg_Http_ServerParameters($_SERVER);
        $this->headers = new RscSgg_Http_Parameters($this->server->getHeaders());
    }

он из плагина вп gallery-by-supsystic
$postTempVar = $_POST;
Все что нужно знать )) 2 if ниже бесполезны, т.к. без вмешательства типо $_POST= serialize(); никогда не выполнятся.
 
Последнее редактирование:
$_POST - массив

$postTempVar = $_POST;
Все что нужно знать )) 2 if ниже бесполезны, т.к. без вмешательства типо $_POST= serialize(); никогда не выполнятся.
Объединить наши посты и будет идеальный ответ ))
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх