@所有人 网络安全C10-2024.12.28
作业:
- sql注入漏洞中,常见的防护方案有哪些?请简述原理和用法
- 关键字过滤 在sql注入中是通过关键字查询到所以有关键字过滤(or and select 等) 原理:通过正则表达式来 对用户输入的进行正则匹配将其替换为空
- 通过预处理的方法来进行防护 原理首先将 SQL 语句发送给数据库服务器,但其中包含的是占位符(如 ? 或 :name 等),而不是实际的用户输入。数据库服务器会对该 SQL 语句进行语法解析和编译,生成一个执行计划,这个过程只涉及 SQL 语句的结构,不包含用户输入的数据 之后,再将用户输入的数据作为参数传递给预处理语句
C禁用相关返回函数 原理通过禁用在查询中用不到的函数如 过 getenv()函数或者$_SERVER version() user()等使得攻击者得不到想要的信息或者不能通过http头来进行攻击
D类型转换 原理;攻击这通过构造特殊的语句来进行攻击,当数字形注入时,可以通过强制转换如intval($input) floatval() floor() (int)$input $input + 0 方式经行强制转换
E特殊字符转义 原理:对用户输入的特殊字符进行转义如在’ “ \ NULL :的后面加上\进行转义 用法:addslashes(’ “ \ NULL )函数 magic_quotes_gpc=On(’ “ \ NULL ) PDO::quote() 转义特殊字符(‘ “ ; \ _ %) mysqli::real_escape_string mysqli::escape_string mysqli_real_escape_string mysql_real_escape_string SQLite3::escapeString 上⾯函数会转义字符串中的特殊字符(\x00(NULL), \n, \r, ', " 和 \x1a (CTRL-Z))经过以上函数处理后的字符串不可直接⽤于sql查询拼接 需要使⽤引号包裹后拼接到sql语句
中 否则仍可导致sql注⼊
- 针对常见的防护方案,哪些是可以绕过的?哪些又没法绕过?
以上常见防护是否可以绕过应该根据程序代码的设定而定,通常如果是单一的设定
数字行
- 请参考pikachu靶场,审计并利用宽字节注入漏洞
- 命令注入漏洞常见的函数有哪些?
system()
exec()
Passthru()
pcntl_exec()
proc_open()
Popen()
ob_start()
Mail()
- 代码执行漏洞常见的函数有哪些?
Eval()
Assert()
preg_replace()
create_function()
$a($b)
- 如何结合伪协议通过文件包含漏洞读取文件?请简述原理
当存在文件包含漏洞时,可利用伪协议(如php://filter或data://)。通过构造如php://filter/read=convert.base64 - encode/resource=目标文件路径这样的参数,使文件包含函数按照伪协议规则读取目标文件内容,经过处理(如 Base64 编码)后包含到脚本中返回,从而读取文件。
7、复习php常见漏洞
预习:
php伪协议、pikachu靶场审计实战等
预习资料:
参考课件
标签:语句,12.28,函数,转义,漏洞,sql,string From: https://www.cnblogs.com/maoming/p/18675669