PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计

简介: PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计

今天继续给大家介绍渗透测试相关知识,本文主要内容是PHP代码审计示例——淡然点图标系统SQL注入漏洞审计。

免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!

一、关键字查询
首先,我们将项目代码导入Seay代码审计系统,然后使用系统的关键字搜索功能,直接搜索“select”关键字。在搜索时,要注意选择不区分大小写选项,以便筛选出更多的符合条件的代码,关键字查询页面如下所示:

二、PHP代码查看
关键字查询可以帮助我们查找到符合要求的代码,但是该代码片段究竟是否存在漏洞,还需要我们去人为验证。我们可以在查看代码时,查看哪些在SQL语句中,含有参数的部分,即上图中红色的部分。双击该部分的代码,就可以查看该代码片段的详细信息了,如下所示:

从上图中可以看出,ywX函数中存在一个SQL查询语句,通过该语句,我们可以看到有ID参数嵌入到了SQL语句中。但是该代码片段只是定义了一个存在SQL漏洞的函数,而真正存在SQL注入漏洞的地方,还取决于在什么地方调用该函数。
接下来,我们在全局搜索中搜索yxW关键字,结果如下所示:

找到调用的位置,如下所示:

然而,当我们访问该文件对应的URL时,却发现结果如下所示:

三、验证绕过
出现上述页面,我们需要继续查找源码,搜索页面中的文字信息,发现验证代码如下所示:

分析上述源代码,可以看出,代码从SERVER头中获取了HTTP_HOST和HTTP_REFERER字段的值,然后进行处理后对数据进行校验,如果我们没有设置HTTP_HOST和HTTP_REFERER,那么校验就会失败,因此会EXIT退出。
我们使用火狐浏览器设置HTTP_HOST和HTTP_REFERER字段,则结果如下所示:

从上图中可以看出,虽然我们绕过了以此验证,但是结果却返回“请输入完整”,我们继续重复上述过程,查找代码如下所示:

我们根据代码要求,以GET的方式传入api、u和p三个变量,在这里要注意api变量的值为“OK”。则结果如下所示:

这样,我们就完成了验证绕过了。

四、payload构造与漏洞验证
从上述可以分析出,我们可以构造如下所示的payload:

http://127.0.0.1/sqqyw/php/v144.php?u=1&p=1&api=ok&id=1 and sleep(if(length(database())<=10,3,1))--+
1
在这里,由于ywX函数被使用在if语句中,并没有反馈,因此我们需要使用SQL盲注的方式来获取数。或者使用SQLMAP工具,在指定REFERER头后,批量获取数据,结果如下所示:

从上述结果可以看出,我们成功的进行了PHP代码审计,分析出了代码中存在的一个SQL注入漏洞。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

文章知识点与官方知识档案匹配,可进一步学习相关知识
MySQL入门技能树SQL高级技巧CTE和递归查询91130 人正在系统学习中
————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_40228200/article/details/129291769

目录
相关文章
|
6月前
|
SQL 安全 数据库
如何在Django中正确使用参数化查询或ORM来避免SQL注入漏洞?
如何在Django中正确使用参数化查询或ORM来避免SQL注入漏洞?
406 77
|
4月前
|
SQL 安全 PHP
thinkphp5之sql注入漏洞-builder处漏洞
在Web应用开发中,SQL注入是一种需要高度警惕的安全漏洞。通过深入理解ThinkPHP5中的SQL查询机制,并结合安全编码实践,开发者可以有效防止SQL注入攻击,保障应用的安全性和稳定性。
149 13
|
6月前
|
SQL 安全 数据库连接
除了使用Django的ORM,还能通过什么方式在Django中避免SQL注入漏洞?
除了使用Django的ORM,还能通过什么方式在Django中避免SQL注入漏洞?
181 73
|
9月前
|
SQL 存储 测试技术
SQL在构建系统中的应用:关键步骤与技巧
在构建基于数据库的应用系统时,SQL(Structured Query Language)作为与数据库交互的核心语言,扮演着至关重要的角色
|
6月前
|
SQL 安全 前端开发
对于Java代码审计,主要的审计步骤如下:
### Java代码审计简介 Java代码审计是确保应用程序安全的重要步骤,主要包括以下几个关键环节: 1. **确定项目结构与技术框架**:了解项目的整体架构和技术栈。 2. **环境搭建**:配置开发环境,确保能够正常运行项目。 3. **配置文件分析**:重点分析`pom.xml`、`web.xml`等配置文件,特别是依赖组件的版本是否存在已知漏洞。
|
7月前
|
SQL 安全 PHP
PHP安全性实践:防范常见漏洞与攻击####
本文深入探讨了PHP编程中常见的安全漏洞及其防范措施,包括SQL注入、XSS跨站脚本攻击、CSRF跨站请求伪造等。通过实际案例分析,揭示了这些漏洞的危害性,并提供了具体的代码示例和最佳实践建议,帮助开发者提升PHP应用的安全性。 ####
231 6
|
8月前
|
SQL 安全 PHP
PHP安全性深度剖析:防范常见漏洞与最佳实践####
本文深入探讨了PHP编程中不可忽视的安全隐患,重点介绍了SQL注入、XSS攻击、CSRF攻击及文件包含漏洞等四大常见安全威胁。通过详尽的案例分析与防御策略阐述,为开发者提供了一套实用的安全编码指南。文章强调,提升代码安全性是保障Web应用稳健运行的关键,鼓励开发者在日常开发中积极践行安全最佳实践。 ####
|
7月前
|
SQL 安全 PHP
PHP安全性深度探索:防范常见漏洞与最佳实践####
本文深入剖析了PHP开发中常见的安全漏洞,包括SQL注入、XSS攻击、CSRF攻击及文件包含漏洞等,并针对每种漏洞提供了详尽的防御策略与最佳实践。通过实例分析,引导读者理解如何构建更加安全的PHP应用,确保数据完整性与用户隐私保护。 ####
|
9月前
|
SQL 存储 数据库
SQL在构建系统中的应用:关键要素与编写技巧
在构建基于数据库的系统时,SQL(Structured Query Language)扮演着至关重要的角色
|
9月前
|
存储 SQL 数据库
SQL Server 临时存储过程及示例
SQL Server 临时存储过程及示例
131 3