前言
·本篇文章为新手级别,挖掘到的漏洞问题具有较强的针对性,旨在对代码审计有一个初步的认识与了解。
审计前的准备
·先把代码安装好,不要下载下来就开始搞,安装前后代码是有变化的。安装好后就可以开始了。👇

关键字搜索
SQL注入
·针对SQL注入的定向审计->联想产生注入常见的场景->针对关键字进行全局搜索($_GET、$_POST、$_REQUEST等)

·搜出来不少,先看第一个
·看到SQL语句时就该有所警觉,从上面获取到的参数ad_id,被带入SQL语句。

·现在搞不清getone函数是做什么的,然后再进行搜索,找到getone函数是在哪里定义的
 
·捋清楚了,将ad_id参数带入SQL语句进行执行,并且该程序没有任何过滤(毕竟是新手区)

任意文件删除
·百度搜索PHP删除文件常用函数👇

·去文件中进行查找,找啊找,看啊看,最后锁定在 zzz_file.php 文件中的 del_file() 函数👇

·找到对应的函数功能后再干什么?当然是查找是谁调用这个函数啦。找到了delfile()函数👇

·再去查看save.php里的delfile()函数,在哪里被调用👇

·顺藤摸瓜,找到了switch-case👇
 ·再找一下$act 是怎么来的👇  ·$act 受 safe_word() 和 getform() 两个函数影响。
·先看一下 getform() 函数是干啥的,来判断请求形式是GET还是POST,还是GET、POST都行。👇
 ·再来看一下 safe_word() 函数干啥用的,过滤👇 
·再来捋一捋,使用GET请求方式传递 $act=delfile,才会去执行delfile(),进一步执行del_file()
·del_file()函数使用 POST 方式接受 path 参数,如果需要删除的文件路径在白名单里,则允许删除👇

·尝试进行重新安装👇

·根据提示,构造payload删除install.lock文件👇

·再次访问,发现还是有问题,返回代码继续查看👇

·删除.lock文件后。使用GET或POST请求方式,使 act = step1,即可重新安装本程序👇

·成功进入安装界面👇

任意文件下载
·安装好程序后,突然想到了南山必胜客😄
·一个音乐网站无非就是注册、登录、用户信息更改,上传、下载音乐,评论,充会员~等主要功能
·相较于上传和下载,大多数程序对上传的限制比下载严格,因为上了马意味着服务器的沦陷;这次就来审下载

·随便上传几首歌,点击下载音乐,把音乐下载的链接获取到,就能大体上定位下载功能有关的代码位置👇

·变量id 受到intval()、SafeRequest()两个函数的影响👇
 
·跟踪一下SafeRequest() 函数,过滤用的👇

·接受到的id值被带入SQL语句执行👇
 
·这段代码好熟悉的感觉,VIP Pay,这是告诉你,部分歌曲要打钱才能听啊、下载啊啥的👇

·剩下的这一块就是下载用的了👇

·geturl()函数就比较简单了,判断你是要下载歌词还是封面啥的

·来捋捋👇

·走,去数据库看看,结合代码进行分析👇
 
·到此呢,发现我们只能控制id值,无法控制in_audio列的内容
·如果挖掘任意文件下载,就要去找能控制in_audio列的地方
·全局搜索in_audio,这个add.php就很可疑👇

·也就是说在上传音乐的时候,音频地址就是in_audio,控制输入的音频地址就可以控制下载内容👇

·有过滤!👇
 
·过滤在此👇

·如果写的是完整路径呢👇
 
·。。。。。换成斜线试试👇
 
·bingo👇

·突然感觉略鸡肋,毕竟绝对路径哪有那么好猜
|