Для теста-разминки

Вероломство

PHP:
  1.  
  2. if (filter_input(INPUT_POST, ‘do’) === session_id()) {
  3.     echo ‘Ok’;
  4. }
  5. ?>
  6. <!doctype html>
  7. <html lang=«ru»>
  8. <head>
  9.     <meta charset=«UTF-8»>
  10.     <meta name=«viewport» content=«width=device-width, initial-scale=1, shrink-to-fit=no»>
  11.     <meta httpequiv=«X-UA-Compatible» content=«ie=edge»>
  12.     <title>
  13.         Убиватель сраного спама
  14.     </title>
  15. </head>
  16. <body>
  17. <form method=«post»>
  18.     <button name=«do»>Нажать</button>
  19. </form>
  20. <script src=«https://code.jquery.com/jquery-3.6.0.min.js» integrity=«sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=» crossorigin=«anonymous»></script>
  21. <script>
  22.     $(‘button’).click(function () {
  23.         $(this).val(/SESSw*ID=([^;]+)/i.test(document.cookie) ? RegExp.$1 : false);
  24.     });
  25. </script>
  26. </body>
  27. </html>

Кто может курлом нажать кнопку и получить — Ok?

Я пока что не смог, ЗНАЮ почему.

p.s. буду благодарен, если кто-то нажмёт и пояснит — как :)

 

don.bidon

PHP:
  1. <pre><?php
  2. var_dump($_POST);
  3. ?></pre>
  4. <form method=»post»>
  5.     <button name=»do»>DO</button>
  6. </form>

1) атрибут value у кнопки отсутствует;
2) при чём здесь курл, вообще не понял.

 

MouseZver

AMOGUS
— Добавлено —
image20.png

 

Вероломство

1. ясен пень отсутствует, потому что он вставляется при нажатии на кнопку )))
2. надо узнать, можно ли нажать данную кнопку курлом ))) то есть я знаю, что нельзя, но мало ли…
— Добавлено —
@MouseZver чёт не видно было одно время тебя, дароу :)

 

don.bidon

Кнопка на клиенте нажимается, подсадив вредоносное расширение с доступом к сайту можно.
Курлом можно сделать запрос, имея доступ к кукам или угадав id сессии.

 

Вероломство

кнопка на клиенте нажимается нажатием на кнопку)))
курлом нажми кнопку и получи — Ок)))

ты если прочитаешь из заголовков SID то при отправке на той стороне будет уже другой SID потому что session_start() при каждом curl_exec генерит новый SID )))

 

don.bidon

Читаем доку по session_start():
> создаёт сессию, либо возобновляет существующую, основываясь на идентификаторе сессии, переданном через GET- или POST-запрос, либо переданный через cookie.
Один раз curl’ом получили id сессии (ничего не передавая, скрипт сгенерит сам), второй раз передали его, чтобы «бздынькнуть» по кнопке.

 

Вероломство

возобновляет сессию у курла? ))) ну ты дядя даёшь)))

session_start при каждом curl_exec генерит новый SID дядя)))

 

don.bidon

session_start() сессию возобновляет по переданной куке в нашем случае, в чём проблема?

 

Вероломство

нет, ничего не возобновляется, потому что генерится новый SID для КАЖДОГО curl_exec )))

 

Drunkenmunky

PHP:
  1. curl_setopt($ch, CURLOPT_COOKIE, ‘SESS123456789asdfhjklzxvnm=123457899asdfghjkkl;’);
 

don.bidon

С чего это, если в запросе будет передан предыдущий session id? Уверен, что внимательно доку вычитал по session_start()?

 

Вероломство

ну так ответ будет на вопрос или будем из обрывки идей бросать? )))

 

don.bidon

В два запроса curl’ом можно сэмулировать нажатие на кнопку для приведённого в первом посте кода.

 

Вероломство

то же самое, ответ будет на вопрос? )))

 

Drunkenmunky

Куки извлечь.
Выбрать ID сессии со значением.
Вставить в запрос

 

Вероломство

а как ты ещё хотел?))) в одном выполнить забор заголовков и отправку назад?)))
— Добавлено —

ну это всё идеи и слова

 

don.bidon

Что значит «я хотел», мы тут твою задачу решали, нет?

Тебе всё рассказали уже. Или у меня понималка перестала понимать )

 

Drunkenmunky

OK

PHP:
  1. <pre>
  2. <?php
  3.  
  4. $url = ‘http://localhost/form.php’;
  5. $ch = curl_init($url);
  6. $fp = fopen($url, «rb»);
  7.  
  8. curl_setopt($ch, CURLOPT_FILE, $fp);
  9. //curl_setopt($ch, CURLOPT_COOKIE, ‘somekey=value’);
  10. curl_setopt($ch, CURLOPT_HEADER, 1);
  11. //curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
  12. //curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
  13.  
  14. $data = curl_exec($ch);
  15.  
  16.  
  17. fclose($fp);
  18.  
  19. print_r($data);
  20.  
  21. ?>
 

Вероломство

запускаю и получаю — Ok? )))

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *