12.28

@所有人 网络安全C10-2024.12.28

作业:

  1. sql注入漏洞中,常见的防护方案有哪些?请简述原理和用法
  2. 关键字过滤 在sql注入中是通过关键字查询到所以有关键字过滤(or and select 等) 原理:通过正则表达式来 对用户输入的进行正则匹配将其替换为空
  3. 通过预处理的方法来进行防护 原理首先将 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注⼊

  1. 针对常见的防护方案,哪些是可以绕过的?哪些又没法绕过?

以上常见防护是否可以绕过应该根据程序代码的设定而定,通常如果是单一的设定

数字行

  1. 请参考pikachu靶场,审计并利用宽字节注入漏洞

  1. 命令注入漏洞常见的函数有哪些?

system()

exec()

Passthru()

pcntl_exec()

proc_open()

Popen()

ob_start()

Mail()

  1. 代码执行漏洞常见的函数有哪些?

Eval()

Assert()

preg_replace()

create_function()

$a($b)

  1. 如何结合伪协议通过文件包含漏洞读取文件?请简述原理

当存在文件包含漏洞时,可利用伪协议(如php://filter或data://)。通过构造如php://filter/read=convert.base64 - encode/resource=目标文件路径这样的参数,使文件包含函数按照伪协议规则读取目标文件内容,经过处理(如 Base64 编码)后包含到脚本中返回,从而读取文件。

7、复习php常见漏洞

预习:

php伪协议、pikachu靶场审计实战等

预习资料:

参考课件

posted @ 2025-01-16 19:51  雷子暑假结束  阅读(13)  评论(0)    收藏  举报