链接数据库——选择数据库——数据库语句
数据库配置文件泄露可能会造成安全问题,比如数据库的账号,密码等
数据库操作类的代码
文件上传
下载
当使用 阅读文章功能时,可以考虑到可能存在sql注入漏洞,
在分析URL或数据包,使用常见sql注入测试语句尝试。
sql语句中 select–查询 update–更新 inster–插入 delete–删除,当存在其他操作时,
前台查询,后台更新文章,插入数据,删除数据等操作都是可能引起sql语句的存在。
文件上传类:——任意文件上传
1:代码自写
这种其内容完全自主研发,若发生的问题,自在本身,验证困难
2:编辑器引用
编辑器引用顾名思义,引用他人已经编写好的代码,插件,达到上传文件的作用,如果出现问题,那么本身责任不在于代码,验证测试则仍在编辑器本身,和其内所含有的代码的好坏并无多大的影响
3:引用框架
额【框架也类似于编辑器,是一种程序员写好的,封装过的程序,Java中的框架,php中的框架等】这种问题引发的,也是从代码验证
其最终结果可解释为【搞人要认认真真的从对方的弱点去搞,不能因为对方戴个帽子就不认识。开玩笑】为一下几点
1、自写代码验证上传 //验证核心在代码里
2、引用外部编辑器实现 //验证核心在编辑器
3、引用开发框架实现 //验证核心在框架
文件下载——直接下载/传参下载
直接下载是执行,直接得到结果
其次:直连下载有个特点,他是去访问那个文件,即如果是zip这一类的文件,
则回去下载,如果是php,txt等这一类文件,他只会去执行,
不会去下载。(所以需要提前知道那个文件的名字)
传参下载是过程,下载的是整个代码后才执行【个人理解】
传参下载,类似于他会去修改请求的数据包,类似与burpsuite。
这样就会造成结果不可控,即php等源码文件可能会被请求直接下载。【有点疑惑】
(传参下载,源码可能会被猜解出来。导致源码泄露).
安全性:直接下载>传参下载
文件删除——任意文件删除
1,文件删除 unlink()函数是删除文件的意思。
2,文件夹删除 rmdir();删除文件夹的意思。
任何一种文件删除问题,都有可能导致源代码被删除,继而导致网站威胁
文件读取/写入
读取
function fileread($name){
f
=
@
f
o
p
e
n
(
f=@fopen(
f=@fopen(name,“r”);//fopen函数用来打开一个文件或者url,mode的r代表"只读"
c
o
d
e
=
@
f
r
e
a
d
(
code=@fread(
code=@fread(f,filesize($name));//fread(读取的文件,读取到哪个位置)函数代表读取打开的文件,filesize代表返回文件的最大字节,
echo
c
o
d
e
;
@
f
c
l
o
s
e
(
code; @fclose(
code;@fclose(f);//关闭打开的文件
写入
function filewrite(
n
a
m
e
,
name,
name,txt){
f
=
f
o
p
e
n
(
f=fopen(
f=fopen(name,“a+”);//以读写方式打开文件
fwrite(
f
,
f,
f,txt);//fwrite(写入的文件名,写入的内容)
fclose($f);
文件读取和文件写入都存在一个任意文件读写以及后门植入的风险。
Web漏洞核心:
1、可控变量
2、特定函数-函数的多样化
文件包含-任意文件包含
1、本地文件包含
2、远程文件包含
f
i
l
e
=
file=
file=_GET[‘x’];
include($file);
包含以开发者角度是将一个重复的过程写入其中,下次直接引用,
其真正定义上个人认为是在包涵这过程之中,也就是包含内容之中,容易产生危险
【小迪的意思是,上传一个图片,得到一个图片地址,尝试包含图片,图片里面有后门代码】
解决方法,固定格式,固定文件,过滤
常用函数如下
require 找不到被包含的文件时会产生致命错误,并停止脚本运行。
include 找不到被包含的文件时只会产生警告,脚本将继续运行。
include_once 与include类似,唯一区别是如果该文件中的代码已经被包含,则不会再次包含。
require_once 与require类似,唯一区别是如果该文件中的代码已经被包含,则不会再次包含
总的来说,一切都来源于函数和参数的变化