Sqli-Labs是用来练习sql注入的好平台。project地址:https://github.com/Audi-1/sqli-labs
本文测试环境:使用phpstudy集成环境。mysql版本:5.5.53
Less-17 POST-Update Query-Error Based-String
基础知识
三种基本语句。
INSERT
|
|
示例:
UPDATE
|
|
示例
DELETE
|
|
这个。。暂时先不演示了。。
Less 17
这题的题目为:[PASSWORD RESET] 。可以推测后端的语句为UPDATE型,约莫如下:
我们post数据为:
则发现有报错回显:
为单引号,所以可以推测语句为:
接下去进行报错注入。
updatexml()
|
|
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。
第三个参数:new_value,String格式,替换查找到的符合条件的数据
作用:改变文档中符合条件的节点的值
(以上来自学习笔记 UpdateXml() MYSQL显错注入)
payload:
可以获取数据库名为:security。
但要获取数据:
却会显示:
也就是说不能用update获取当前表的数据,因为update的子查询中不能出现相同的表名。
这个可以先新建一张表,然后再在这个新建的临时表中进行查询:
这在sql.log中的语句为:
其中(select * from users)tmp
新建了一张tmp表,外面的SELECT...FROM..
是从tmp中获取数据。
updatexml有长度限制,最长32位
extractvalue()
payload:
得到数据库名称为 security
查字段:
获取账号密码:
对应的后端查询语句为:
extractvalue也有长度限制,最长32位