一、check in
fuzz一下,php后缀类型的都不行,并且检测了上传文件的文件内容:
过滤了可以看到过滤了ph
和>
,可以通过短标签绕过,<?= ?>和<?php ?>是一样的,前者是短标签,后者是长标签:
然后上传.htaccess
解析jpg,按平常写会检测到ph
,可以通过换行拼接来bypass:
二、calc
题目给出了一个网页计算器:
随意运算一下:
有个路径,点进去:
然后fuzz了一会表达式看能不能触发点啥也没有结果,俺好垃圾。
不过倒是知道是spring框架写的:
javaweb,做了一个月的题目就遇到过一次java题,俺不会,看了wp,他是这样payload的:
(NEW java.io.BufferedReader(NEW java.io.FileReader("/flag"))).readLine()
然后就出flag了?:
BufferedReader流的简单介绍:
java.io.BufferedReader extends Reader
继承自父类的共性成员文件:
int read()读取单个字符并返回
int read(char[] cbuf)一次读取多个字符,将字符读入数组
void close()关闭该流并释放与之关联的所有资源
构造方法:
1.BufferedReader(Reader in)构建一个使用默认大小输入缓冲区的缓冲字符输入流
2.BufferedReader(Reader in,int sz)创建一个使用指定大小输入缓冲区的缓冲字符输入流
参数:
Read in:字符输入流
我们可以传递FileReader,缓冲流会给FileReader增加一个缓冲区,提高FileReader的读取效率。
特有成员方法:
String readLine()读取一个文本行,读取一行数据
行的终止符号:通过下列字符之一即可认为某行已终止:换行(‘\n’)、(‘\r’)或回车后直接跟着换行。
代码如下:
public class Demo01BufferedReader { public static void main(String
args[]) throws IOException {//1.创建字符缓冲输入流对象,构造方法中传递字节输出流
BufferedReader br=new BufferedReader(new
FileReader(“D:\programming\Eclipse\eclipse-workspace\bbb\src\bbb\a”));//2.使用缓冲输入流对象中的方法read/readLine读取文本
String line; while((line=br.readLine())!=null)
{//不知道文件中有多少行数据,用while循环 System.out.println(line); }//3.释放资源
br.close(); } }
明天搭个环境自己试一下。
三、Hard_Pentest_1
考点:window渗透,无字母shell
参考链接:
https://www.freebuf.com/column/236039.html
https://www.cnblogs.com/W4nder/p/12829102.html
源码:
<?php
//Clear the uploads directory every hour
highlight_file(__FILE__);
$sandbox = "uploads/". md5("De1CTF2020".$_SERVER['REMOTE_ADDR']);
@mkdir($sandbox);
@chdir($sandbox);
if($_POST["submit"]){
if (($_FILES["file"]["size"] < 2048) && Check()){
if ($_FILES["file"]["error"] > 0){
die($_FILES["file"]["error"]);
}
else{
$filename=md5($_SERVER['REMOTE_ADDR'])."_".$_FILES["file"]["name"];
move_uploaded_file($_FILES["file"]["tmp_name"], $filename);
echo "save in:" . $sandbox."/" . $filename;
}
}
else{
echo "Not Allow!";
}
}
function Check(){
$BlackExts = array("php");
$ext = explode(".", $_FILES