Vscode 配置PHP代码调试环境
基于macos平台搭建vscode调试环境搭建环境
集成开发环境:MxSrvs
代码编辑器:Visual Studio Code (Vscode)
操作系统类型:Macos
集成开发环境下载地址:https://pan.baidu.com/s/1xZI65zE5hppgobjiRtHTJA?pwd=aejb
代码编辑器下载地址:https://code.visualstudio.com/
vscode安装相应插件插件名称:PHP Debug
vscode配置点击 vscode 左侧的运行和调试,接着点击 创建launch.json文件
调试器选择 PHP
以下配置保持默认即可:
launch.json 配置文件内容如下:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748{ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.micr ...
BUUCTF-Misc系列-Page-1
签到题目描述信息中有 FLAG,直接提交即可。
金三胖图片是一个 GIF,使用 PS 软件 逐帧进行查看即可,这里我直接使用 macos 系统自带的预览工具进行查看。
最终拼接得到FLAG。
1FLAG: flag{he11ohongke}
你竟然赶我走下载附件解压之后,使用 010 edit 十六机制编辑器查看。
二维码这里使用在线扫描工具,扫描发现提示:secret is here
接着使用 十六机制编辑器 打开,发现在 PNG 的文件末尾附加了一个 zip 压缩包文件。
从 50 4B 03 04 处复制直至末尾,接着新建一个 hex 文件,将其粘贴,保存为 .zip 结尾的文件即可。
解压该压缩包发现需要密码,通过文件名这里提示的是 4number ,猜测密码可能是四位数字。
这里使用业界比较著名的压缩包爆破工具 Advanced Archive Password Recovery 进行爆破。
这里攻击类型直接选择 掩码,所包含的范围 勾选 0-9即可。开始于 0000 结束于 9999。其中 ???? 表示每个位置可能是 0-9 之间的任意一位 ...
正则表达式
前言正则表达式是一套语法规则,适用于各大编程语言。本文章正则表达式匹配的演示近使用PHP语言进行匹配。其他语言只是所使用的函数不同。
简单介绍正则表达式
正则表达式就是描述字符串排列模式的一种自定义语法规则
如果可以使用字符串处理函数完成的任务,就不要使用正则表达式,正则的效率比较低。
有一些复杂性的操作,只能用正则表达式来完成。
正则表达式也称为一种模式表达式
正则表达式就是通过构建具有特定规则的模式,在与输入的字符串进行比较、分割、匹配、查找和替换。
什么是正则表达式
例子: '/<img\s+src=\".*?\" \/>/' 它就是正则表达式
乱七八糟的一对字符堆在一起,神秘的符号,有奇特的意义。
正则表达式的用处
验证用户名长度是否合法。
验证邮箱规则
验证手机号
验证URL
BBS编辑器
QQ聊天表情
新闻采集器(小偷程序)
正则表达式的特点
正则表达式也是一个字符串
由具有特殊意义的字符串组成的字符串。
具有一定编写规则,也是一种模式。
看做是一种编程语言,因为是用一些特殊的字符,按照规则编写处一个字符串,形成一种模式 ...
BUUCTF-Web系列-01-21
[极客大挑战 2019]EasySQL 1访问靶机地址,发现如下页面,在登录框中的用户名输入admin,密码输入admin提示密码错误。
由于题目给的提示是sql注入,这里尝试在用户名处构造 sql 注入语句,admin' or sleep(2) # 发现页面延时 N 秒,当构造 admin' or sleep(0) # 的时候,页面并没有延时,因此此处是存在 sql 注入的。
最终构造万能密码 admin' or 1=1 # 得到FLAG。
[极客大挑战 2019]Havefun 1访问靶机网址,出现如下页面。
右键查看源代码看到注释的PHP代码。
代码的逻辑是接收通过 GET 请求传入的 cat 参数,当 cat 参数的值为 dog 的时候会输出一段信息,我们这里尝试传入
[HCTF 2018]WarmUp 1访问靶机网址,出现如下页面。
右键查看源代码,发现注释信息 source.php ,尝试访问该文件,得到如下 PHP 源码。
123456789101112131415161718192021222324252627282930313 ...
CTFSHOW-Web入门-文件上传
web151 前端校验访问网站,出现如下页面:
右键检查发现,当我们点击 button 提交的时候,会触发下框中的匿名函数,并且从该前端代码可以得知,这里只允许上传PNG后缀的图片。
但是由于文件合法性校验发生在前端页面,故而这里我们可以进行绕过。
方法一:直接右键检查修改源码:
然后上传即可。
方法二:使用Burpsuite进行抓包:
先将PHP木马文件修改为以 .png 结尾的文件,接着使用BP抓取登陆的数据包,将文件名修改即可:
使用中国菜刀或者蚁剑连接即可,为了方便我这里直接使用HackerBar进行传参利用:
web152 前端+后端MIME校验界面与上一关一致,这里就不再截图。
直接上传一个PHP文件提示:
查看前端源码,发现这里也进行了前端的校验:
直接修改前端源码之后,进行上传发现无法成功。
于是这里使用BP抓取上传的数据库,接着发到重发器进行测试:
先直接上传PHP后缀的文件,页面返回:
通过前端代码发现,这里只要是状态码不等于0的,则都是上传失败的数据包。
经过测试发现,这里进行了MIME检测,通过修改请求头中的 Content-Type 字段, ...
MongoDB增删改查学习记录
NoSQLNoSQL,指的是非关系型的数据库。而我们平时说的关系型数据库,就是SQL,NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
NoSQL用于超大规模数据的存储;比如大数据。
而我们MongoDB就是属于非关系型的数据库。
什么是MongoDBMongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB将数据存储为一个文档,数据结构由键值对组成,类似于JSON格式,字段值可以包含其他文档、数组以及文档数组。
nosql 与 sql 的区别:
SQL术语/概念
MongoDB术语/概念
解释/说明
database
database
数据库
table
collection
数据库表/集合
row
document
数据记录行/文档
column
field
数据字段/域
index
index
索引
table joins
表连接/ ...
Mysql 增删改查学习记录
mysql数据库的基本操作1.如何登录到本地数据库
12345# 语法mysql -uuserName -pPassword或mysql -uuserName -p# 当不指定登录的主机时,默认登录的主机地址为localhost
2.如何登录到远程数据库
1mysql -uUserName -p -h IP或domain
3.如何查看当前数据库软件下有什么数据库
1show databases; # 命令
4.如何选择数据库
1use 库名;
5.如何查看当前数据库下有哪些表
1show tables;
6.如何查询表的所有数据
1select * from 表名;
7.如何查询指定字段名下的数据
1select 字段名1,字段名2 from 表名;
8.如何退出数据库的登录
123exit或quit
9.如何在数据库服务器中创建自己的数据库
1create database 库名;
10.如何在某个数据库下创建一个表
12345其语法格式为:create table 库名.表名(字段名1 字段类型,字段名2 字段类型,字段名3 字段类型);举例命令为:crea ...
Docker 学习记录
Docker 的安装查看系统信息目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。 查看自己的内核:
uname -r 命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型 等)。
12[root@ls-rK8rbuXz ~]# uname -r3.10.0-1160.62.1.el7.x86_64
查看版本信息:
12345678910111213141516[root@ls-rK8rbuXz ~]# cat /etc/os-releaseNAME="CentOS Linux"VERSION="7 (Core)"ID="centos"ID_LIKE="rhel fedora"VERSION_ID="7"PRETTY_NAME="CentOS Linux 7 (Core)"ANSI_COLOR="0;31"CPE_NAME= ...
CTF中PHP原生类的妙用
前言前段时间,朋友发我了一道题,代码基本的意思都能看懂。
源码如下:
这里可以看到,对象实例化的类名和参数,我们都是可控的。那么我们只需要找到 PHP原生类 中可以执行命令或者列出目录以及读取文件的类型。基本上就可以实现利用了。
但是由于当时知识量欠缺,于是进行了 Google 搜索,最终使用了PHP的 Directorylterator 内置类列出目录,使用 SplFileObject 类读取 FLAG 文件的内容。
最终将本题解出。
之前一直没有了解过相关的PHP内置类,今天想着对PHP原生类做一个总结,故而该篇文章就应运而生。
PHP原生类读取目录/文件列出目录文件类Directorylterator这里介绍两个PHP的原生类:
Directorylterator (PHP5, PHP7, PHP8)
Filesystemlterator (PHP 5 >= 5.3.0, PHP 7, PHP 8)
两类的关系可以从PHP官方文档中看出:
其实就是个继承关系,FilesystemIterator 继承父类 Directorylterator。
以 ...
CTFSHOW-Web入门-命令执行
web29 过滤FLAG访问网站,源码如下:
123456789101112<?phperror_reporting(0);if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag/i", $c)){ eval($c); } }else{ highlight_file(__FILE__);}?>
通过代码审计发现,这里过滤了关键字 flag,使用了i修饰符表示不区分大小写的匹配 flag 关键字。
先试用如下 PAYLOAD 获取FLAG文件的所在位置,一般CTF比赛的FLAG都在系统的根目录下,或者网站的根目录下:
1?c=system("ls");
而这里就在网站根目录下名为 flag.php,对于过滤了 flag 关键字,我们可以使用如下方法绕过:
12345678?c=system("nl fla?.ph ...