|
|
|
| Была у меня такая вещица
<?php
function secure($str){
// Case of an array
if (is_array($str)) {
foreach($str AS $id => $value) {
$str[$id] = secure($value);
}
}
else
$str = xw_sanitycheck($str);
return $str;
}
// Get Filter
$xweb_AI = array_keys($_GET);
$i=0;
while($i<count($xweb_AI)) {
$_GET[$xweb_AI[$i]]=secure($_GET[$xweb_AI[$i]]);
$i++;
}
unset($xweb_AI);
|
Но скажите почему шелл смогли залить? используя вот эту фигню
сайт/?GET=module&m='; USE Master exec xp_cmdshell 'echo "<?php код шелла ?>" > C:\xampp\htdocs\config1.php;--
Как отфильтровать GET еще можно?
И что скажите на счет этого скрипта
<!-- sql.php -->
<?
$get_ar = array_values($_GET);
$c_a_g = count($get_ar);
for ($i = 0;$i < $c_a_g;$i++){
if(eregi('union(.*)select',$get_ar[$i])){ header("Location: http://site.com"); exit; }
if(eregi('order(.*)by',$get_ar[$i])){ header("Location: http://site.com"); exit; }
}
$post_ar = array_values($_POST);
$c_a_p = count($post_ar);
for ($i = 0;$i < $c_a_p;$i++){
if(eregi('union(.*)select',$post_ar[$i])){ header("Location: http://site.com"); exit; }
if(eregi('order(.*)by',$post_ar[$i])){ header("Location: http://site.com"); exit; }
}
?>
|
| |
|
|
|
|
|
|
|
для: Ванек2010
(02.11.2010 в 16:06)
| | числа $int = @(intval) $_GET["int"]
строки используемые в sql запросах mysql_real_escape_string($_GET["data"]);
подключаемы модули проверка на существование file_exists | |
|
|
|
|
|
|
|
для: Красная_шляпа
(02.11.2010 в 16:25)
| | А собака зачем? | |
|
|
|
|
|
|
|
для: Ванек2010
(02.11.2010 в 16:06)
| | Написал скрипт именно для гета.
Что скажите и укажите на ошибки если не трудно
<?php
$badchars = array(";","ggg","'","*","/"," \ ","DROP", "SELECT", "UPDATE", "DELETE", "WHERE","USE",
"drop", "select", "update", "delete", "where", "-1", "-2", "-3","-4", "-5", "-6", "-7", "-8", "-9", "distinct", "having",
"truncate", "replace", "handler", "like", "procedure", "limit", "order by", "group by");
foreach($badchars as $val) {
$arr_exists = array_key_exists($val,$_GET);
$arr_keys = array_search($val,$_GET);
if ($arr_exists == true or $arr_keys == true)
{
exit("Подозрение на SQL инъекцию");
}
}
|
| |
|
|
|
|
|
|
|
для: Ванек2010
(02.11.2010 в 17:19)
| | Есть функции пересечения массивов, кторые могут за раз вернуть вам массив, имеющий указанные значения, и не потребуется поиски и проверка ключей.
PS. Не буду ждать вашей реакции, спрошу сразу: а как вы собираетесь найти значение, например, SELECT в вашем массиве, которое бы было в GET массиве? Ведь вам, если уж подставят, никак не напишут ключ=SELECT, а подцепят к вашему параметру, и уже, например, SELECT *, никак не будет равно значению SELECT из вашего массива. То есть, ваши поиски в массиве бесплодны. | |
|
|
|
|
|
|
|
для: sim5
(02.11.2010 в 17:36)
| | Да вот доделал
<?php
foreach($badchars as $val) {
$key_gets = array_keys($_GET);
$i=0;
while($i<count($key_gets)) {
$substr = substr_count($_GET[$key_gets[$i]],$val);
$error = $substr++;
if($error >0) { exit("Подозрение на атаку"); }
$i++;
}
$arr_exists = array_key_exists($val,$_GET);
if ($arr_exists == true)
{
exit("Подозрение на атаку");
}
}
|
| |
|
|
|
|
|
|
|
для: Ванек2010
(02.11.2010 в 18:42)
| | чтото вы через жопу както делаете..
где эти данные потом используются? Я уверен тут можно прямо всё сделать. | |
|
|
|
|
|
|
|
для: Ванек2010
(02.11.2010 в 18:42)
| |
<?
$a = array('aa','bb','cc','dd','ee');
$_GET = array('a'=>'aa', 'b'=>'bbb', 'c'=>'dd');
$_GET = str_word_count(implode(" ", $_GET),1);
echo array_intersect($_GET, $a) ? "Attention!" : "Sleep";
| Это как пример использования стандартных функций, позволяющих упростить решение задач. И я вам уже упоминал о них выше, но....
Пример потому, что функция str_word_count() считает словами последовательности алфавитных символов, возможно, включающие, но не начинающихся с "'" и "-". Набор символов, считающихся алфавитными, зависит от текущей локали. То есть, она может не возвращать 1, 2, 3...
Подумайте сами как это можно устранить, используя другие стандартные функции. Какой смысл писать циклы, если РНР предоставляет готовые инструменты? | |
|
|
|
|