基础理解PHP序列化:serialize()
序列化是将变量或对象转换成字符串的过程,用于存储或传递 PHP 的值的过程中,同时不丢失其类型和结构。
而PHP反序列化:unserialize()
反序列化是将字符串转换成变量或对象的过程
通过序列化与反序列化我们可以很方便的在PHP中进行对象的传递。本质上反序列化是没有危害的。但是如果用户对数据可控那就可以利用反序列化构造payload攻击。这样说可能还不是很具体,举个列子比如你网购买一个架子,发货为节省成本,是拆开给你发过去,到你手上,然后给你说明书让你组装,拆开给你这个过程可以说是序列化,你组装的过程就是反序列化
序列化首先每一个序列化后的小段都由; 隔开, 使用{}表示层级关系
数据类型
提示符
格式
字符串
s
s:长度:”内容”
已转义字符串
S
s:长度:”转义后的内容”
整数
i
i:数值
布尔值
b
b:1 => true / b:0 => false
空值
N
N;
数组
a
a:大小:{键序列段;值序列段;<重复多次& ...
基础简介网站中包含大量的动态内容以提高用户体验,比过去要复杂得多。所谓动态内容,就是根据用户环境和需要,Web应用程序能够输出相应的内容。动态站点会受到一种名为“跨站脚本攻击”的威胁,而静态站点则完全不受其影响。恶意攻击者会在 Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的
xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数
分类反射型XSS:<非持久化>
攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。DOM型XSS由于危害较小,我们将其归为反射型XSS
存储型XSS:<持久化>
代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cooki ...
1.http(极客大挑战)首先查看源码发现 <a style="border:none;cursor:default;" onclick="return false" href="Secret.php">,点击该链接
然后通过页面信息修改referer:https://Sycsecret.buuoj.cn
接着浏览器信息,即 User-Agent:Syclover,然后告诉我们要从本地查看,上网查找发现本地都是这个端口号 127.0.0.1,修改xxf,然后flag就出来了
2.查看网页的备份文件(攻防世界)php的备份文件有两种:*.php~和*.php.bak
例子:http://61.147.171.105:55767/index.php.bak
3.php2(攻防世界)对网址后面加上/index.phps就可以查看页面php源码
例子:http://111.198.29.45:45191/index.phps
phps是php的源代码文件,但是不能接受传参,所以hackbar还是要在.php里面做 ...
省流版echo:打印你给的参数
echo $PATH:输出电脑上的目录
which 参数:会输出运行参数的路径(比如:which echo)
pwd:当前工作目录
cd:改变当前工作目录(例子:cd /home)
.:表示当前目录;..:表示上一级目录
给出被调用运行的程序的绝对路径:程序可以直接运行起来
ls:列出当前目录下的文件
~:带你回到用户目录(在cd命令下面使用)
cd -:将当前目录跳转到你所处的上一个目录
–help:会告诉你这个命令怎么用(ls --help)
mv:重命名文件,接受两个路径,先是原有的,然后是新的;也可以把文件移到不同的目录
1mv dotfiles.md foo.md
cp:复制文件,两个路径(复制源路径和目标路径,都要是完整路径,但不必是同一个目录)
1cp dotfile.md ../food.md
rm:移除一个文件,不能是目录
rmdir:只允许移除空目录
mkdir:创建一个新目录
Ctrl+l:清空终端,让光标回到顶部
<:重定向这个程序的输入流
大于号:重定向这个程序的输入流
1echo hello > hello.t ...
文中代码若无特别说明那么都是写在内的
基础初识JavaScript 可以通过不同的方式来输出数据:
使用 window.alert() 弹出警告框来显示数据。
使用 document.write() 方法将内容写到 HTML 文档中。
使用 innerHTML 写入到 HTML 元素。
使用 console.log() 写入到浏览器的控制台。
如需从 JavaScript 访问某个 HTML 元素,您可以使用 document.getElementById(id) 方法。
请使用 “id” 属性来标识 HTML 元素,并 innerHTML 来获取或插入元素内容:
123<script>document.getElementById("demo").innerHTML = "段落已修改。";</script>
JavaScript 使用关键字 var 来定义变量, 使用等号来为变量赋值 var length;
变量的数据类型可以使用 typeof 操作符来查看
可以在字符串中使用引号,只要不匹配包围字符串的引号即可
...
python基础数据类型转换int() 强制转换为整型
float() 强制转换为浮点型
str() 强制转换为字符串类型
123x = str("s1") # x 输出结果为 's1'y = str(2) # y 输出结果为 '2'z = str(3.0) # z 输出结果为 '3.0'
整型和字符串类型进行运算,就可以用强制类型转换来完成
123456789num_int = 123num_str = "456"print("num_int 数据类型为:",type(num_int))print("类型转换前,num_str 数据类型为:",type(num_str))num_str = int(num_str) # 强制转换为整型print("类型转换后,num_str 数据类型为:",type(num_str))num_sum = num_int + num_strprint("num_int ...
文件包含include和require语句在 PHP 中,您可以在服务器执行 PHP 文件之前在该文件中插入一个文件的内容。
include 和 require 语句用于在执行流中插入写在其他文件中的有用的代码。
include 和 require 除了处理错误的方式不同之外,在其他方面都是相同的:
require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。
include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行。
因此,如果您希望继续执行,并向用户输出结果,即使包含文件已丢失,那么请使用 include。否则,在框架、CMS 或者复杂的 PHP 应用程序编程中,请始终使用 require 向执行流引用关键文件。这有助于提高应用程序的安全性和完整性,在某个关键文件意外丢失的情况下。
包含文件省去了大量的工作。这意味着您可以为所有网页创建标准页头、页脚或者菜单文件。然后,在页头需要更新时,您只需更新这个页头包含文件即可。
基础语法:
123include 'filename';或者require ...
基础在学习SQL注入漏洞之前,先学习一个相关的知识点。在MySQL 5.0版本之后,MySQL默认在数据库中存放一个“information_schema”的数据库,在该库中,需要记住三个表名,分别是:schemata、tables、columns。
1.schemata表存储该用户创建的所有数据库的库名。
>其中记录****数据库库名的字段名为*:*schemata_name****。
2.tables表存储该用户创建的所有数据库的库名和表名。
>其中记录****数据库库名*和*表名的字段名分别是*:*table_schema*和*table_name****。
3.columns表存储该用户创建的所有数据库的库名、表名和字段名。
>其中记录****数据库库名、表名和字段名的字段名分别是*:*tables_schema*、*table_name*和*column_name****。
*information_schema.tables:数据库的表名*
*information_schema.columns:数据库的列名 ...
1.http(极客大挑战)首先查看源码发现 <a style="border:none;cursor:default;" onclick="return false" href="Secret.php">,点击该链接
然后通过页面信息修改referer:https://Sycsecret.buuoj.cn
接着浏览器信息,即 User-Agent:Syclover,然后告诉我们要从本地查看,上网查找发现本地都是这个端口号 127.0.0.1,修改xxf,然后flag就出来了
2.查看网页的备份文件(攻防世界)php的备份文件有两种:*.php~和*.php.bak
例子:http://61.147.171.105:55767/index.php.bak
2.机器人协议url/robots.txt
3.php2(攻防世界)对网址后面加上/index.phps就可以查看页面php源码
例子:http://111.198.29.45:45191/index.phps
phps是php的源代码文件,但是 ...
php基础php变量PHP 变量规则:
变量以 $ 符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始
变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
变量名不能包含空格
变量名是区分大小写的($y 和 $Y 是两个不同的变量)
(注意:php变量和php语句都是区分大小写的)
PHP 没有声明变量的命令,变量在您第一次赋值给它的时候被创建
php有四种不同的变量作用域:local,global,static,parameter。
局部和全局作用域:在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问。
php global关键字
static作用域
当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。要做到这一点,请在您第一次声明变量时使用 static 关键字
php的echo,printecho 和 print 区别:
echo - 可 ...