php反序列化基础
题目链接newstarCTF 2024 chocolate
反序列化基础
https://hello-ctf.com/hc-web/php_unser_base/
序列化就是从对象变成字符串
反序列化就是从字符串变回对象
比如:
<?phpclass User { public $name; protected $email; private $phoneNumber; public function __construct($name, $email,$phoneNumber) { $this->name = $name; $this->email = $email; $this ->phoneNumber = $phoneNumber; } public function getPhoneNumber(){ echo $this ->phoneNumber; }}$user = new User ...
nodejs原型链污染
题目链接newstarCTF 2024 ezpollute
原型链污染
https://wiki.wgpsec.org/knowledge/ctf/js-prototype-chain-pollution.html
https://blog.mmf.moe/post/node-fork-proto-env-rce/
https://quan9i.top/post/%E6%B5%85%E6%9E%90CTF%E4%B8%AD%E7%9A%84Node.js%E5%8E%9F%E5%9E%8B%E9%93%BE%E6%B1%A1%E6%9F%93/
js中特有的,对象与对象间的继承是通过原型链实现的。
在JavaScript中,每个对象都有一个原型,它是一个指向另一个对象的引用。当我们访问一个对象的属性时,如果该对象没有这个属性,JavaScript引擎会在它的原型对象中查找这个属性。这个过程会一直持续,直到找到该属性或者到达原型链的末尾。攻击者可以利用这个特性,通过修改一个对象的原型链,来污染程序的行为。例如,攻击者可以在一个对象的原型链上设置一个恶意的属性或方法,当程序在后续 ...
php伪协议
题目链接newstarCTF 2024 Include Me
伪协议
https://www.cnblogs.com/wjrblogs/p/12285202.html
我理解的php伪协议就是,php提供了一种方法用来表示文件,我们可以在url的参数里面使用这个来上传文件或者读取文件
file://用于访问文件(绝对路径、相对路径、网络路径)
file=file:///etc/passswd
php://访问输入输出流
php://filter读取源代码并进行base64编码输出
cmd=php://filter/read=convert.base64-encode/resource=[文件名](针对php文件需要base64编码)
php://input执行POST数据中的php代码
http://127.0.0.1/cmd.php?cmd=php://input
POST数据:<?php phpinfo()?>
data://http://127.0.0.1/in ...
python_ssti
题目链接newstarCTF 2024 复读机
sstiSSTI(Server Side Template Injection,服务器端模板注入),而模板指的就是Web开发中所使用的模板引擎。模板引擎可以将用户界面和业务数据分离,逻辑代码和业务代码也可以因此分离,代码复用变得简单,开发效率也随之提高。
漏洞出现原因from flask import Flask, request, render_template_stringfrom jinja2 import Templateapp = Flask(__name__)@app.route('/')def index(): name = request.args.get('name', default='guest') t = ''' <html> <h1>Hello %s</h1> </html> ''& ...
php弱比较
题目链接[SWPUCTF 2021 新生赛]easy_md5
学习=== 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较
== 在进行比较的时候,会先将字符串类型转化成相同,再比较
如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行
<?phpvar_dump("admin"==0); //truevar_dump("1admin"==1); //truevar_dump("admin1"==1) //falsevar_dump("admin1"==0) //truevar_dump("0e123456"=="0e4456789"); //true?>
前缀不是数字时,会转化成0,是数字时,会转化成数字
如果是0e开头,并且后面全是数字,则认为是0。
因而本题可以使用
md5('240610708') == md5(& ...
sql study
sqlSQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。
SQL 通过一系列的语句和命令来执行数据定义、数据查询、数据操作和数据控制等功能,包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。
RDBMS 指关系型数据库管理系统,全称 Relational Database Management System。
RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server、IBM DB2、Oracle、MySQL 以及 Microsoft Access。
RDBMS 中的数据存储在被称为表的数据库对象中。
表是相关的数据项的集合,它由列和行组成。
基础操作?使用了一下菜鸟教程给的sql文件
mysql -u root -p
进入mysql
mysql> show DATABASES;+--------------------+| Database |+--------------------+| information_sche ...
web入门题单2
链接NSSCTF web 题单
我Flag呢?查看源代码
就当无事发生考察的git commit
好像github页面没办法直接搜索,我git clone一下试试
git clone https://github.com/ProbiusOfficial/ProbiusOfficial.github.io.git
git log -S 'LitCTF'
git show 2d02084c5aa044d5dae3fc02a2a70248ab5500b5
第二条指令就是从commit中找到关于删除或增加指定字符串的commit
第三条就是展示具体的commit内容
导弹迷踪在F12中查找代码即可
找到’mLevel’等于6时的结果即可
1zjs0.o?
在index.umd.js里面搜索php,发现了 /f@k3f1ag.php
访问之后发现是brainfuck,然后在控制台输入就能得到flag(不知道为什么在线网站不行?)
Follow me and hack me讲get和post传参
详见上一份题单
curl -d "Challenge=i& ...
newstarCTF2024-web
链接newstarCTF 2024
谢谢皮蛋由于页面只能显示1条信息,因此一开始的id要设置为-1,这样就不会在原始数据库查询了(查不到了)
之后就是正常的利用union来查库名 表名 列名即可
PangBai 过家家(1)学到了不少东西
一开始用的hackbar发包,到第五关卡住了,于是改用了burpsuite发包
从get改到post方法漏东西了,导致一直发不成功了
POST 的查询类型有很多种,通过 HTTP 报文中的 Content-Type 指定,以告诉服务端用何种方式解析报文 Body 的内容。Content-Type 描述application/x-www-form-urlencoded 和 GET 查询字段的写法一样,开头不需要 ?,用 & 符号连接各查询参数,遇到特殊字符需要进行转义。application/json Body 给出一个 JSON 格式的数据,服务端会解析它。multipart/form-data 表单字段,一般用于有文件等复杂类型的场景。我们可以用任意方式,那么我们选择用 application/x-www-form-urlencoded 发 ...
php study
php
PHP(全称:PHP:Hypertext Preprocessor,即”PHP:超文本预处理器”)是一种通用开源脚本语言。
PHP 脚本在服务器上执行。
PHP 可免费下载使用。
PHP 文件的默认文件扩展名是 .php。
PHP 文件通常包含 HTML 标签和一些 PHP 脚本代码。
下面,我们提供了一个简单的 PHP 文件实例,它可以向浏览器输出文本 “Hello World!”:
<!DOCTYPE html><html><body><h1>My first PHP page</h1><?phpecho "Hello World!";// 这是 PHP 单行注释/*这是PHP 多行注释*/?> </body></html>
变量<?php$x=5;$y=6;$z=$x+$y;echo $z;?>
PHP 变量规则:
变量以 $ 符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始
变量名只能包含字母、数字以及下划线(A- ...
web入门题单
链接攻防世界web新手练习
view_source使用F12即可查看源码得到flag
get_post“请用GET方式提交一个名为a,值为1的变量“
可以直接在url上补一个/?a=1,直接在浏览器改url传参是使用的get方法
post方法一般是提交表单时使用,这里我们可以使用curl这个工具
curl -d "b=2" http://223.112.5.141:57025/?a=1
我们也可以使用requests库
import requestsparams={ 'a':1}data={ 'b':2}url = "http://223.112.5.141:57025"response = requests.post(url,params=params,data=data)response.encoding = response.apparent_encodingprint(response.text)print(response. ...










