面向对象-基础类和对象的内存分配机制Java 内存的结构分析
栈: 一般存放基本数据类型(局部变量)
堆: 存放对象(Cat cat , 数组等)
方法区:常量池(常量,比如字符串), 类加载信息
举一个创建对象的流程分析例子
123Person p = new Person();p.name = “jack”;p.age = 10
先加载 Person 类信息(属性和方法信息, 只会加载一次)
在堆中分配空间, 进行默认初始化(看规则)
把地址赋给 p , p 就指向对象
进行指定初始化, 比如 p.name =”jack” p.age = 10
成员方法调用机制示意图
递归例题一
下面为该题代码
1234567891011121314151617181920212223242526272829303132333435public class Test { public static void main(String[] args) { T t1 = new T(); int n = 7; ...
Write-Up
未读journal关注重点代码
1234567891011121314151617181920212223<?phpecho "<p>Welcome to my journal app!</p>";echo "<p><a href=/?file=file1.txt>file1.txt</a></p>";echo "<p><a href=/?file=file2.txt>file2.txt</a></p>";echo "<p><a href=/?file=file3.txt>file3.txt</a></p>";echo "<p><a href=/?file=file4.txt>file4.txt</a></p>";echo "<p><a href ...
引用thinkPHP8.0安装与避坑
ThinPHP官方手册
安装thinphp8.012345678910111213<!--1、访问网址下载安装composer-->https://getcomposer.org/Composer-Setup.exe<!--2、配置镜像源防止乱七八糟的网络和GitHub仓库拉取无权限问题-->composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/<!--3、在网站根目录(www)下进入cmd创建项目-->composer create-project topthink/think tpcd tp<!--4、解决依赖项报错-->composer up --ignore-platform-reqs<!--5、运行命令查看效果-->php think run<!--6、访问查看结果,这里有坑:不能直接访问0.0.0.0:8000这个地址-->127.0.0.1:8000
在第三步 ...
产品:信呼oa
影响版本:<=2.32
开源地址:https://github.com/rainrocka/xinhu/commits/master/
首先我们先起好docker镜像,默认登录账号名为admin,密码为123456
开始代码审计最最开始的时候,我们当然要看index.php的代码(代码块中的大部分注释为我自己写入进去的理解)如下:
123456789101112131415161718192021222324252627282930<?php include_once('config/config.php');$_uurl = $rock->get('rewriteurl');$d = '';$m = 'index';$a = 'default';if($_uurl != ''){ unset($_GET['m']);unset($_GET['d']); ...
SQL注入备忘单
Lab:WHERE 子句中的 SQL 注入漏洞允许检索隐藏数据此实验室在产品类别过滤器中包含 SQL 注入漏洞。当用户选择一个类别时,应用程序将执行如下 SQL 查询:
1SELECT * FROM products WHERE category = 'Gifts' AND released = 1
要完成该实验,请执行 SQL 注入攻击,导致应用程序显示一个或多个未发布的产品。
当我们进入环境之后,选择其中一个类别后,会自动给我们进行筛选然后仅显示出我们选择的类别中我们所能看到的东西
查询的sql语句如上所示
因此我们输入的payload为:/filter?category=Gifts' or 1=1--+
Lab:允许绕过登录的 SQL 注入漏洞本实验的登录函数中存在 SQL 注入漏洞。要完成该实验,请执行 SQL 注入攻击,以 administrator 用户身份登录到应用程序。
进入环境的登陆界面,随便输入用户名和密码并抓包,如下:
从题目中我们已知管理员的账户名,但是不知道密码
因此我们可以在输入账号名的地方将剩下的sql ...
CTF
未读引用PHP反序列化入门之phar
phar反序列化原理及利用
php反序列化拓展攻击详解–phar
phar介绍简单来说phar就是php压缩文档。它可以把多个文件归档到同一个文件中,而且不经过解压就能被 php 访问并执行,与file:// php://等类似,也是一种流包装器。
phar结构由 4 部分组成
stub phar 文件标识,格式为 xxx<?php xxx; __HALT_COMPILER();?>;
manifest 压缩文件的属性等信息,以序列化存储;
contents 压缩文件的内容;
signature 签名,放在文件末尾;
这里有两个关键点,一是文件标识,必须以__HALT_COMPILER();?>结尾,但前面的内容没有限制,也就是说我们可以轻易伪造一个图片文件或者pdf文件来绕过一些上传限制;二是反序列化,phar存储的meta-data信息以序列化方式存储,当文件操作函数通过phar://伪协议解析phar文件时就会将数据反序列化,而这样的文件操作函数有很多
phar文件的生成以及利用在php.ini中配置如下时,才能生成phar ...
错误 Call to undefined function mysqli_connect() 和错误 can’t find class mysqli in :***** 错误是同一种错误,只是php中连接 MySQl的不同写法而已
那么我们要怎么做呢
首先,让我们到自己安装的php目录下面,打开它的配置文件
如果像我一样用的是phpstudy下的八点多的版本,那么它的配置文件php.ini是空的,需要我们自己去把当前目录下的php.ini-development里面的所有内容复制过去(该文件可以用记事本打开)
然后在配置文件中搜索一下extension_dir,如下:
将图中选中的部分改为 ./ext/,并把前面的分号去掉(这是因为在修改成的目录下面有php_mysqli.dll,如果没有那就是下载的时候出错了,再重新下载一遍)
注意:配置文件中的分号其实是注释符,要开启啥功能要先把它去掉
然后让我们搜索 extension=,然后会发现一大块都是extension=的部分,在其中添加上extension=mysqli,如下:
注意:配置文件里面原本也存在extension= ...
参考资料Nginx入门必须懂3大功能配置 - Web服务器/反向代理/负载均衡
云服务器配置重定向文件
Ubuntu 自建安装Apache+MySQL+PHP环境
安装MySQL和PHP环境按照上面的参考文章走
配置nginx首先先安装nginx:apt install nginx
查看版本:nginx -v
运行nginx:service nginx status
先让我们进入:cd /etc/nginx,然后 ls -lh可以看到目录下面有sites-enabled文件
sites-enabled:很明显这个目录可以写配置
sites-availabled:这个一般来说就不行了
https://www.jianshu.com/p/42c4ffd044e6
看不懂,先这样理解。
配置代码可以利用WinSCP软件来帮助我们创建并修改文件
在enabled下创建port_sherlock(这只是一个名称.jpg),代码如下:
123456789101112131415161718server{ listen port; server_name IP; roo ...
参考资料最详细的ubuntu 安装 docker教程:https://zhuanlan.zhihu.com/p/651148141?utm_id=0
docker搭建Dvwa靶场:https://juejin.cn/post/7076807703565336612
开始的开始让我们先更新一下apt
12sudo apt-get updatesudo apt-get upgrade
部署Docker一. 卸载Ubuntu自带的Docker以下操作最好用管理员
注:docker的旧版本不一定被称为docker,http://docker.io 或 docker-engine也有可能,所以我们卸载的命令为:
1apt-get remove docker docker-engine docker.io containerd runc
如果报错也正常,有些Ubuntu没有Docker,直接下一步
二.安装1.安装docker依赖
Docker在Ubuntu上依赖一些软件包。执行以下命令来安装这些依赖:
1apt-get install ca-certificates curl gnup ...
参考及引用的文章浅谈csrf漏洞:https://xz.aliyun.com/t/7450?time__1311=n4%2BxnD0G0%3Dit0QDkID%2FiWRSD0xcDRlGerDWwD&alichlgref=https%3A%2F%2Fwww.google.com%2F#toc-3
CSRF漏洞的原理CSRF漏洞产生的原因(1)http协议使用session在服务端保存用户的个人信息,客户端浏览器用cookie标识用户身份;
(2)cookie的认证只能确保是某个用户发送的请求,但是不能保证这个请求是否是”用户自愿的行为”.
(3)这时,用户登录了某个web站点,同时点击了包含CSRF恶意代码的URL,就会触发CSRF
漏洞利用的条件(1)用户必须登录A网站,生成了cookie
(2)登录的同时访问了恶意URL(包含CSRF恶意代码的URL)
换种解释就是网站的cookie在浏览器中不会过期,只要不关闭浏览器或者退出登录,那以后只要是访问这个网站,都会默认你已经登录的状态。而在这个期间,攻击者发送了构造好的csrf脚本或包含csrf脚本的链接,可能会执行一些用户 ...