NSS [鹤城杯 2021]Middle magic

NSS [鹤城杯 2021]Middle magic

源码直接给了。

粗略一看,一共三个关卡

先看第一关:

php 复制代码
if(isset($_GET['aaa']) && strlen($_GET['aaa']) < 20){
    $aaa = preg_replace('/^(.*)level(.*)$/', '${1}<!-- filtered -->${2}', $_GET['aaa']);
    if(preg_match('/pass_the_level_1#/', $aaa)){
        echo "here is level 2";

(1条消息) PHP正则表达式_php 正则_无痕之意的博客-CSDN博客

正则表达式含义:

/^(.*)level(.*)$/:包含字符串"level"的字符串

/pass_the_level_1#/:字符串"pass_the_level_1#"

这种正则写法是存在缺陷的:.用于任意字符匹配并不包括换行符,而且^ $界定了必须在同一行,否则匹配不到,直接利用%0a(换行符)进行绕过。

所以我们GET传入aaa=%0apass_the_level_1#就行了。不对,不是这样。

如果直接传入#的话,#代表网页中的一个位置。其右面的字符,就是该位置的标识符。比如,http://www.example.com/index.html#print就代表网页index.html的print位置。浏览器读取这个URL后,会自动将print位置滚动至可视区域。

只有将#转码为%23,浏览器才会将其作为实义字符处理。

所以这一关的payload:

复制代码
?aaa=%0apass_the_level_1%23

来到第二关:

php 复制代码
if (isset($_POST['admin']) and isset($_POST['root_pwd'])) {
            if ($_POST['admin'] == $_POST['root_pwd'])
                echo '<p>The level 2 can not pass!</p>';
        // START FORM PROCESSING    
            else if (sha1($_POST['admin']) === sha1($_POST['root_pwd'])){
                echo "here is level 3,do you kown how to overcome it?";

我们需要POST两个变量,adminroot_pwd。要求两个变量不能弱相等并且两个变量的sha1值强相等。

我们可以sha1强碰撞或者数组绕过。方便一点,这里用哈希数组绕过,强碰撞payload太长了。

复制代码
admin[]=1&root_pwd[]=2

来到第三关:

php 复制代码
if (isset($_POST['level_3'])) {
                    $level_3 = json_decode($_POST['level_3']);
                    if ($level_3->result == $result) {
                        echo "success:".$flag;

要求我们POST提交一个level_3变量,是json格式的。要满足level_3变量的result键的值 与$result变量相等,但是$result变量在index.php中未定义,在result.php中是否定义,未知,所以$result变量具体值是多少我们无从得知。暂且将他当成未定义,那么值就是空,NULL

这里据说用php的弱比较。以下是一些可能是原理的资料。

(1条消息) CTF(JOSN弱类型)_ctf json_sunshinelv99的博客-CSDN博客

(1条消息) JASON格式与布尔绕过弱类型比较_json数组绕过_王俊凯迷妹的博客-CSDN博客

实际测试证明,这里level_3只要POST了就行,值是多少都可以。因为空NULL和什么东西弱比较都是true,那么就验证了我们的猜想,$result变量未定义。

payload:

复制代码
&level_3={"result":"chxvjxkvjckvrfghrekj"}
&level_3={"result":0} 
&level_3={"result":} 
&level_3=

扩展阅读:json数组、json对象。

相关推荐
学***54239 分钟前
如何轻松避免网络负载过大
开发语言·网络·php
darkb1rd3 小时前
二、PHP 5.4-7.4版本演进与安全改进
安全·php·webshell
程序 代码狂人3 小时前
CentOS7初始化配置操作
linux·运维·开发语言·php
m0_748233173 小时前
PHP版本演进:从7.x到8.x全解析
java·开发语言·php
zhengfei6114 小时前
精选的优秀法证分析工具和资源列表
开发语言·php
REDcker4 小时前
RFC1918私有IP地址空间详解
网络协议·tcp/ip·php
EverydayJoy^v^5 小时前
RH134学习进程——十一.管理网络安全
学习·安全·web安全
云云只是个程序马喽6 小时前
AI短剧创作系统源码(PHP+MySQL+Uniapp)实现方案
php
Godspeed Zhao18 小时前
现代智能汽车系统——总线技术1
网络·汽车·php
stwood00721 小时前
如何在 EC-CUBE 4 中为产品图像启用 WebP 格式图像
php