当前位置:网站首页>[GYCTF2020]EasyThinking
[GYCTF2020]EasyThinking
2022-08-05 03:25:00 【New Reading of the Classic of Tea.】
[GYCTF2020]EasyThinking

Feel free to test to discover web frameworksthinkphp v6.0.0,Arbitrary file manipulation vulnerabilities may exist
![]()

Other than that, nothing was found,f12也没有发现什么异常,dirsearch扫描一下发现了www.zip

Access the download file
![]()
在web/home/controller有一个Member.php,得到网页源码:
<?php
namespace app\home\controller;
use think\exception\ValidateException;
use think\facade\Db;
use think\facade\View;
use app\common\model\User;
use think\facade\Request;
use app\common\controller\Auth;
class Member extends Base
{
public function index()
{
if (session("?UID"))
{
$data = ["uid" => session("UID")];
$record = session("Record");
$recordArr = explode(",", $record);
$username = Db::name("user")->where($data)->value("username");
return View::fetch('member/index',["username" => $username,"record_list" => $recordArr]);
}
return view('member/index',["username" => "Are you Login?","record_list" => ""]);
}
public function login()
{
if (Request::isPost()){
$username = input("username");
$password = md5(input("password"));
$data["username"] = $username;
$data["password"] = $password;
$userId = Db::name("user")->where($data)->value("uid");
$userStatus = Db::name("user")->where($data)->value("status");
if ($userStatus == 1){
return "<script>alert(\"该用户已被禁用,无法登陆\");history.go(-1)</script>";
}
if ($userId){
session("UID",$userId);
return redirect("/home/member/index");
}
return "<script>alert(\"用户名或密码错误\");history.go(-1)</script>";
}else{
return view('login');
}
}
public function register()
{
if (Request::isPost()){
$data = input("post.");
if (!(new Auth)->validRegister($data)){
return "<script>alert(\"The current username is already registered\");history.go(-1)</script>";
}
$data["password"] = md5($data["password"]);
$data["status"] = 0;
$res = User::create($data);
if ($res){
return redirect('/home/member/login');
}
return "<script>alert(\"注册失败\");history.go(-1)</script>";
}else{
return View("register");
}
}
public function logout()
{
session("UID",NULL);
return "<script>location.href='/home/member/login'</script>";
}
public function updateUser()
{
$data = input("post.");
$update = Db::name("user")->where("uid",session("UID"))->update($data);
if($update){
return json(["code" => 1, "msg" => "修改成功"]);
}
return json(["code" => 0, "msg" => "修改失败"]);
}
public function rePassword()
{
$oldPassword = input("oldPassword");
$password = input("password");
$where["uid"] = session("UID");
$where["password"] = md5($oldPassword);
$res = Db::name("user")->where($where)->find();
if ($res){
$rePassword = User::update(["password" => md5($password)],["uid"=> session("UID")]);
if ($rePassword){
return json(["code" => 1, "msg" => "修改成功"]);
}
return json(["code" => 0, "msg" => "修改失败"]);
}
return json(["code" => 0, "msg" => "原密码错误"]);
}
public function search()
{
if (Request::isPost()){
if (!session('?UID'))
{
return redirect('/home/member/login');
}
$data = input("post.");
$record = session("Record");
if (!session("Record"))
{
session("Record",$data["key"]);
}
else
{
$recordArr = explode(",",$record);
$recordLen = sizeof($recordArr);
if ($recordLen >= 3){
array_shift($recordArr);
session("Record",implode(",",$recordArr) . "," . $data["key"]);
return View::fetch("result",["res" => "There's nothing here"]);
}
}
session("Record",$record . "," . $data["key"]);
return View::fetch("result",["res" => "There's nothing here"]);
}else{
return View("search");
}
}
}Audit code foundsession:ThinkPhP6 会默认在 /runtime/session 创建一个sess_xxxx格式的session文件,这里的xxxx就是PHPSESSID(32位),And the content of the file issession的内容,也就是key的内容.并且发现了:
if ($userId){
session("UID",$userId);
return redirect("/home/member/index");
}这里把uid写入当前的session中,That is what we originally constructedPHPSESSID=1111111111111111111111111111.php的session是没有uid的,没办法实现search功能,这里可以把uid赋给session,That is, you can write horses in the search page(Put the package there to modify and put the package,This will upload the horse)


蚁剑连接:http://xxxxxx.node4.buuoj.cn:81/runtime/session/sess_1111111111111111111111111111.php

use on connectiondisabled_functions插件获取flag


至此结束,撒花
边栏推荐
- shell脚本:for循环与while循环
- The sword refers to Offer--find the repeated numbers in the array (three solutions)
- [TA-Frost Wolf_may-"Hundred Talents Project"] Graphics 4.3 Real-time Shadow Introduction
- How to solve the error cannot update secondary snapshot during a parallel operation when the PostgreSQL database uses navicat to open the table structure?
- 【 genius_platform software platform development 】 : seventy-six vs the preprocessor definitions written cow force!!!!!!!!!!(in the other groups conding personnel told so cow force configuration to can
- Leading the highland of digital medicine, Zhongshan Hospital explores to create a "new paradigm" for future hospitals
- ffmpeg -sources分析
- Never put off till tomorrow what you can put - house lease management system based on the SSM
- Use SuperMap iDesktopX data migration tool to migrate map documents and symbols
- 为什么pca分量没有关联
猜你喜欢

基于生长的棋盘格角点检测方法

Leading the highland of digital medicine, Zhongshan Hospital explores to create a "new paradigm" for future hospitals

2022-08-04 The sixth group, hidden from spring, study notes

Dive into how it works together by simulating Vite

引领数字医学高地,中山医院探索打造未来医院“新范式”

Static method to get configuration file data
![[Software testing] unittest framework for automated testing](/img/80/caedd5cf6dd61c9d75475866613cac.png)
[Software testing] unittest framework for automated testing

The linear table lookup

Kubernetes 网络入门

Bubble Sort and Quick Sort
随机推荐
Thinking (88): Use protobuf custom options for multi-version management of data
MRTK3 develops Hololens application - gesture drag, rotate, zoom object implementation
Web3.0 Dapps - the road to the future financial world
达梦8数据库导出导入
Talking about data security governance and privacy computing
基于生长的棋盘格角点检测方法
Distributed systems revisited: there will never be a perfect consistency scheme...
2022-08-04 The sixth group, hidden from spring, study notes
思考(八十八):使用 protobuf 自定义选项,做数据多版本管理
用Unity发布APP到Hololens2无坑教程
Simple description of linked list and simple implementation of code
开发Hololens遇到The type or namespace name ‘HandMeshVertex‘ could not be found..
Dive into how it works together by simulating Vite
[TA-Frost Wolf_may-"Hundred Talents Project"] Graphics 4.3 Real-time Shadow Introduction
IJCAI2022 | DictBert: Pre-trained Language Models with Contrastive Learning for Dictionary Description Knowledge Augmentation
Why is the pca component not associated
2022 Hangzhou Electric Multi-School 1st Game
905. 区间选点
Getting Started with Kubernetes Networking
为什么pca分量没有关联