1.SQL注入
原理:
在数据交互中,前端的数据传入到后台处理时,由于后端没有做严格的判断,导致其传入的恶意“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。漏洞产生于脚本,注入是针对数据库进行。
利用条件:
1.参数用户可控:从前端传给后端的参数内容是用户可以控制的。
2.参数带入数据库查询:传入的参数拼接到 SQL 语句,且带入数据库查询。
危害:
通过SQL注入漏洞,可以查询数据、下载数据、写入webshell 、执行系统命令以及绕过登录限制等。
注入方式的选择:
联合注入≥报错注入>DNSlog注入>布尔注入>延时注入
1.1一般SQL注入流程
-
判断是否存在注入点,以及闭合方式
-
使用 order by 判断字段数
-
使用select 1,2 判断回显点
-
查询数据库信息 version() datadir()
-
查询用户名,数据库名 user() database()
-
查看是否能够文件读取 union select 1,load_file('绝对路径’)#
-
写入webshell select…into outfile…
2.SQL注入的分类?
按照数据类型区分,分为数字型,字符型,搜索型
按照回显方式区分,分为有回显的和没有回显的
按照请求类型区分,分为GET注入,POST注入,Cookie注入
2.1联合注入
原理:
联合查询注入是联合两个表进行同时查询。
利用条件:
-
页面有数据回显
-
查询字段数前后必须一致
-
使其前条数据查询失败
2.2布尔注入
原理:
通过页面返回正确或者错误两个差异页面,来对我们想要查询的数据其进行判断。
利用方式:
先利用substring函数将数据进行截取,然后再利用acsii函数将截取后的数据进行转换后进行遍历比对。
2.3延时注入
原理:
通过页面对传入数据处理后页面的反馈时间差异,来对我们想要查询的数据进行判断。
利用方式:
利用if函数对查询语句进行判断,接着根据需求而设定对应的sleep函数数值。
2.4报错注入
原理:
执行SQL语句的时,如果执行语句存在错误,并且设定代码中有使用回执错误信息的函数,这时就会将出错回显到页面。
利用方式:
利用报错函数进行查询数据,通过信息的回显从而得到我们想要的数据。
十大报错函数:
floor(),extractvalue(),updatexml(),exp(),GeometryCollection(),polygon(),multipoint(),multilinestring(),linestring(),multipolygon()
2.5宽字节注入
原理:
先使用过滤函数对传入数据进行过滤,当数据传入数据库进行代码执行时,前后编码不一致,这时数据库采用了宽字节编码,由于编码的识别差异性这一特点,攻击者可以进行恶意构造,使其原本的闭合得以逃逸,从而可以被利用。
利用方式:
通过添加df%等方式,使其因为过滤函数所产生出的 \ ,能够在数据库宽字节编码的识别下组合成为汉字,使其闭合能够逃逸出来。
2.6二次注入
原理:
数据在进行插入时,被过滤函数进行转义处理,导致恶意语句不能正常执行,但经过转义后的数据产生的 \ 不会被插入数据库中,在下一次进行需要进行数据查询的时候,直接从数据库中取出了存在恶意代码的数据,没有进行进一步的检验和处理,直接被调用拼接到语句当中,二次调用产生注入。
2.7DNSlog注入
原理:
通过子查询,将内容拼接到域名内,利用load_file函数去访问共享文件,访问的域名记录被日志记录为报错信息,通过查询日志信息查看我们想要的数据。
利用条件:
1.需要在数据库中支持域名解析
2.需要数据库配置文件中设置secure_file_priv=‘’
3.支持UNC路径
4.目标服务器需要出网
2.8堆叠注入
原理:
执行代码中,使用了可以执行一个或针对多个数据库的查询函数。
利用方式:
执行多条查询 SQL 语句时,语句之间以分号(;)隔开,在语句中构造需要执行攻击的语句。
3.如何使用SQL注入写入shell
原理:
利用union 跟select into outfile,将一句话写入shell.php文件中。
利用条件:
1.知道网站绝对路径,可以通过报错,phpinfo界面,404界面等一些方式知道
2.gpc没有开启,开启了单引号被转义了,语句就不能正常执行了
3.拥有有file权限,默认情况下只有root有
4.对目录拥有写入权限,一般image之类的存放突破的目录就有
4.SQL注入绕过waf的方法
4.1从架构层面:
找到服务器真实IP,同网段绕过,http和https同时开放服务绕过,边缘资产漏洞利用绕过。
4.2从协议层面:
分块延时传输,利用pipline绕过,利用协议未覆盖绕过,POST及GET提交绕过。
4.3从规则层面:
编码绕过,等价符号替换绕过,普通注释和内敛注释,缓冲区溢出,mysql黑魔法,白名单及静态资源绕过,文件格式绕过,参数污染等。
5.修复建议
使用预编译,PDO,正则表达式过滤,开启魔术引号,加装WAF等。
代码层最佳防御 sql 漏洞方案:采用 sql 语句预编译和绑定变量,是防御sql 注入的最佳方法。
1.所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到 SQL 语句中。当前几乎所有的数据库系统都提供了参数化 SQL 语句执行接口,使用此接口可以非常有效的防止 SQL 注入攻击。
2.对进入数据库的特殊字符( ’ <>&*; 等)进行转义处理,或编码转换。
3.确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为 int型。
4.数据长度应该严格规定,能在一定程度上防止比较长的 SQL 注入语句无法正确执行。
5.网站每个数据层的编码统一,建议全部使用 UTF-8 编码,上下层编码不一致有可能导致一些过滤模型被绕过。
6.严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。
7.避免网站显示 SQL 错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。
网络安全工程师(白帽子)企业级学习路线
第一阶段:安全基础(入门)
第二阶段:Web渗透(初级网安工程师)
第三阶段:进阶部分(中级网络安全工程师)
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
如果你也想学习:黑客&网络安全的零基础攻防教程
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
1.学习路线图
攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。
(都打包成一块的了,不能一一展开,总共300多集)
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
3.技术文档和电子书
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享