ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

关于SQL注入

2022-09-12 06:00:08  阅读:223  来源: 互联网

标签:语句 返回 关于 str SQL 盲注 select 注入


一、什么是SQL注入

所谓注入,就是指非预期的字符输入到语言中,被各种语言进行了误读,造成了错误。用户可以操纵输入字符串获取原本无法获取的权限。

所谓sql注入,就是指非预期字符插入到sql语言中,造成了数据的泄露甚至系统权限的丧失。

 二、什么是盲注

从是否回显错误消息角度,SQL注入分为显错注入和盲注。

如果存在显错注入,我们可以构造select语句,将需要的信息显示在合适的位置。大致的流程是order by确认字段数,union select确认回显位置。

与之类似的还有报错注入。以我目前的理解,报错注入应该可以归入显错注入。只不过它利用了xpath等函数,将我们数据库的报错信息是指

 

如果是盲注,我们则需要构造逻辑表达式,通过让页面的正确显示还是不正确显示,来区分我们的语句是否正确。

 

盲注主要的原理如下:

盲注,意味着页面不会显示SQL语句的错误,我们要通过一定的手段来判断构造的注入语句是否正确执行。有两种方式:布尔型和时间型。布尔型是根据页面是否正确显示来判断我们构造的语句是否正确执行,时间型则是根据页面加载时间是否变化来判断的

盲注需要掌握一些MySQL的相关函数:

length(str):返回str字符串的长度。如执行select
length(database())则会返回当前数据库名称的长度。而单独select
database()则回返回当前数据库的名称。
substr(str, pos, len):从pos位置取出str字符串的len个字符。如
select substring('abcde', 4, 2)则返回de,pos为负则倒数pos个位置,如select substring('abcde', -4, 2);返回bc。
ASCII(str):返回字符串str的最左面字符的ASCII代码值。如果str是空字符串,返回0。如果str是NULL,返回NULL。如select ASCII('a')返回97。
将上面几个函数组合一下就有布尔值出现。如Select ascii(substr(database(),2,1)) = 101;当database()即当前数据库的名称中,正数第二个字符为e,则会返回1,当为其他字符时会返回0。逐级替换2为其他数字,就可以逐字猜数据库名称了。其中的=号还可以换成<或者>。
if ((exp1, exp2, exp3):为条件判断语句。当exp1的值为true时候,返回exp2,否则返回exp3。如  select if ((select database())='secur',sleep(10),null)即为判断当当前数据库的名字为secur的时候,MySQL会休眠10秒。


MySQL的主要内置表和字段信息:
information_schema 库的 TABLES 表,主要字段分别是:
TABLE_SCHEMA : 数据库名
TABLE_NAME:表名

链接:https://www.hetianlab.com/expc.do?ec=ECID172.19.104.182014081415184800001
来源:合天网安实验室
著作权归合天网安实验室所有。商业转载请联系合天网安实验室获得授权,非商业转载请注明出处。

 

对于初学sql的同学,推荐一个在线sql测试网站,http://sqlfiddle.com/,可以直接使用view sample fiddle就可以测试SQL的语句。

 

三、盲注的用途

如果注入点位于密码框,我们可以通过注入来获得密码。例如有一道ctf题目就是利用POST结合sleep来获得密码的内容的。

不论注入点在get语句中或者post语句中,我们都可以结合mysql来构造语句,获得库名、表名、字段名、以及字段值。

 

更多盲注的参考:

https://blog.csdn.net/weixin_45488495/article/details/115558422

 

四、利用burp自动化盲注

 

https://www.cnblogs.com/xiaozi/p/10782330.html

https://blog.csdn.net/qq_51954912/article/details/115416844

 

标签:语句,返回,关于,str,SQL,盲注,select,注入
来源: https://www.cnblogs.com/viphhs/p/16685389.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有