百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

代码审计第三讲实战挖掘sql注入漏洞

nanshan 2025-01-31 14:25 9 浏览 0 评论

为了更好去挖掘php漏洞,对于流行的框架,我们也要了解一下,这样才能挖掘到高位漏洞。对于框架学习,不同公司有不同框架,所以对于框架,也因人而应,另外看公司需求,如果你的公司大部分采用某一种框架,你来学习这种框架就可以了。因为这样才可以提高你的工资。这里我推荐大家学习的是ThinkPHP。

相对来说,我们也不能全部去把开发手册看完。我们要有需求型去查看文档,比如基础部分,查看哪些知识,掌握最基本知识就可以了。如果你想挖掘框架漏洞,那么必须有必要去开发一些小程序,利用上框架,这样你就可以掌握的节奏快一些,而且也能更好理解。

Application

├─Common 应用公共模块

│ ├─Common 应用公共函数目录

│ └─Conf 应用公共配置文件目录

├─Home 默认生成的Home模块

│ ├─Conf 模块配置文件目录

│ ├─Common 模块函数公共目录

│ ├─Controller 模块控制器目录

│ ├─Model 模块模型目录

│ └─View 模块视图文件目录

├─Runtime 运行时目录

│ ├─Cache 模版缓存目录

│ ├─Data 数据目录

│ ├─Logs 日志目录

│ └─Temp 缓存目录

以前你看到大写字母I、M,知道代表什么意思么?

模板就是把所有的过滤方法、函数全部给框起来,你直接调用就可以。如果框架一出现问题,那么所以调用者就会出现问题了。


https://segmentfault.com/q/1010000002988073框架问题就简单给大家介绍到这里。

本次审计代码为damiCMS,进行sql注入漏洞挖掘。

文中箭头打的地方,就是我们重点去查看代码的地方。

Action文件夹里面的文件是我们重点查看的文件。

你可以重点去一个一个分析,也可以用notepad++对整个文件夹的$_GET或者$_POST等进行查找。

去查找有没有相对应的漏洞。对于代码一定去细看,如果不细看,你是发现不了什么问题的。

这个是查找出来的结果,我们需要对结果一一进行分析。看看是否有漏洞。

我们注意到这个文件,里面目前没有看到相关的过滤函数。对于前面的文件里面,出现了大量的过滤函数,如htmlspecialchars、remove_xss等过滤函数。对于这些函数,本文就不再一一进行解释了,如果对此两个函数不了解,可以查看以下URL

http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp

我们通过阅读源代码,发现ajax_arclist这个函数发现问题,被圈住的这三个变量没有经过任何的过滤,直接就进过赋值,可能会发生问题。那现在我们开始验证问题。

1.首先需要搭建damicms,我们采用环境是wamp。具体搭建我就不给大家介绍了,前几节,有具体搭建的内容。

从前面的几步过程中,我们发现where没有经过加固,直接就带入数据库中,

找到这个测试点以后,为了证明我们查找是否存在注入点。我们开始利用火狐浏览器,进行验证。依次构造的路径为api/ajax_arclist(函数名)/model(requst接收的值)/Article/页数。

只有这个page页为真,才会执行sql语句,所以我们这里随意给赋值一个数值。

执行完语句之后

利用常规判断sql语句,and 1=1和and 1=2,来进行判断是否有注入。

页面返回值不一样,证明页面存在注入。

我们利用sqlmap进行跑表,其实手工也可以进行猜表,如果手工你不会,则去看前两节,我在这里就给大家利用工具进行跑表了。

代码第一处问题。其实利用$_GET查找还发现了第二处问题,

在articleAction.class.php这个文件家里面,$_GET传输没有进行过滤,导致出现了注入,后来高版本加上inject_here这个函数,但是依然可以进行绕过。

1 2 3 4 5 6 7 8 9 10 11 12 13 //防止sql注入 functioninject_check($str) { $tmp=eregi(select|insert|update|and|or|delete||/*|*|../|./|union|into|load_file|outfile,$str); if($tmp) { alert("非法操作!",3); } else { return $str; } }

这个是在common.php文件里面,我们可以采取双竖线||进行绕过。具体测试我就不给大家演示了。此次文章就给大家写到这里。

下一节预计讲XSS基础,文章总体比较基础,还希望能给新手一些帮助。

相关推荐

Linux 的磁盘系统,和你了解的Windows差别很大

我的C盘去哪了?一个系统,如果没有存储,那么也就不能称之为系统。存储性是一个完整系统的重要组成部分。例如AWS最开始的服务就是S3(用来存储数据的云服务),足以见得存储对于一个应用平台是多么的重要。...

一文读懂 Linux 硬盘挂载:从问题到解决方案

各位互联网大厂的后端开发伙伴们!在咱们日常工作中,操作Linux系统是常有的事儿吧。你们有没有遇到过这样的场景:新添加了一块硬盘,满心欢喜准备用来存储重要数据或者部署新的应用服务,却突然发现不知道...

硬盘分区(硬盘分区格式)

 磁盘(硬盘)分区,可以分C、D、E等分区,大家可能都会用,会根据自已的需要确定所需的空间,但分区是如何工作的呢,内容如下。Windows中有3类:MBR分区:MasterBootRecord,也...

parted命令工具分区介绍(particle命令)

linux系统磁盘分区通常可以使用fdisk和parted命令,当分区大小小于2TB的时候,两种皆可以使用,当分区大于2TB的话,就需要用parted分区。以下介绍parted命令相关使用,以sdb为...

Linux 服务器上查看磁盘类型的方法

方法1:使用lsblk命令lsblk输出说明:TYPE列显示设备类型,如disk(物理磁盘)、part(分区)、rom(只读存储)等。NAME列显示设备名称(如sda、nvme0n1)。TR...

Linux分区命令fdisk和parted使用介绍

摘要:一般情况下,Linux分区都是选择fdisk工具,要求硬盘格式为MBR格式,能支持的最大分区空间为2T。但是目前在实际生产环境中使用的磁盘空间越来越大,呈TB级别增长;而常用的fdisk这个工具...

linux 分区原理与名词解释(linux操作系统中的分区类型)

分区的意义将磁盘分成几份,每份挂在到文件系统的那个目录在linux里的文件系统Ext2:早期的格式,不支持日志功能Ext3:ext2改良版,增加了日志功能,是最基本且最常用的使用格式了Ext4:针对e...

linux 分区合并(linux合理分区)

查看虚拟机当前磁盘挂载情况fdisk-l选择磁盘fdisk/dev/sda查看磁盘分区情况p重新选择分区n选择主分区p保存w创建物理卷pvcreate/dev/sda3查看物理卷信息pvdi...

如何在 Linux 系统中永久禁用交换分区 ?

Linux操作系统中的交换分区或交换文件充当硬盘上的临时存储区域,当物理内存(RAM)满时,系统使用该存储区域。它用于交换较少使用的内存页,这样系统就不会因为运行应用程序而耗尽物理内存。随着技术的发...

Linux 如何知道硬盘已用多少空间、未用多少空间

刚出社会时,去了一家公司上班,老板为了省钱,买的服务器是低配的,硬盘大小只有40G,有一次网站突然不能访问了,排查半天才知道原来服务器的硬盘空间已用完,已无可用空间。第一步是查看硬盘的使用情况,第二步...

用Linux系统管理磁盘空间 就该这么来

要想充分有效的管理使用Linux系统中的存储空间,用户必须要做的就是双管齐下,一边扩充空间一边限制空间。不得不说的就是很多时候磁盘空间就像水资源,需节制水流。说到要如何实现限制空间就离不开使用LVM技...

Windows 11 磁盘怎么分区?(windows11磁盘怎么分区)

Windows11磁盘分区技术解析与操作指南:构建高效存储体系一、磁盘分区的技术本质与系统价值磁盘分区作为存储系统的基础架构,通过逻辑划分实现数据隔离与管理优化。Windows11采用NTF...

linux上创建多个文件分区,格式化为 ext2、ext3、ext4、XFS 文件

以下是在Linux系统上创建多个20GB文件分区并格式化为不同文件系统的分步指南:步骤1:创建基础文件(4个20GB文件)bash#创建4个20GB稀疏文件(实际占用空间随写入量增长)ddif=/...

救命的U盘低格哪家最强?(低格优盘)

周二时有位童鞋留言说U盘之前做过引导盘,现在格式化不了,用各种工具都不行,而且因为U盘厂商的关系,查不到U盘主控,无法量产恢复,特来求助。小编花了点时间特意弄坏一个U盘分区,终于试出方法了,特来分享一...

Linux 查看硬件磁盘存储大小和磁盘阵列(RAID)的组合方式

一、查看硬件磁盘存储大小查看所有磁盘信息:#lsblk该命令会列出所有磁盘(如/dev/sda、/dev/nvme0n1)及其分区和挂载点。查看磁盘总容量:fdisk-l#或parted-...

取消回复欢迎 发表评论: