赞
踩
steghide
工具分析得到一个文件,无密码
得到一个链接
文件头错误,修复一下
得到这么一串Unicode
字符
进行解码,得到
4070
1234
把其相加得到5304
即为flag
010分析发现,每一张图片最后面都有一段信息,把其按照顺序组合起来,得到一个加密得zip,爆破得到密码1234
提示说flag被套娃base加密了
后面的0x10、0x20、0x30、0x55代表的应该也就是base16
、base32
、base48
、base85
先进行base85解密
得到
475532444B4E525549453244494E4A57475132544B514A54473432544F4E4A5547515A44474D4A5648415A54414E4257473434544B514A5647595A54514D5A5147553444474D5A5547453355434E5254475A42444B514A57494D3254534D5A5447555A444D4E5256494532444F4E4A57475A41544952425547343254454E534447595A544D524A5447415A55493D3D3D
这里从最后的3D看得出来是==,不过缺少了%的url编码,写个脚本加个%并进行base32、base16解码,可能是应该少了个%,所以上面提示写的是0x30
import base64
from urllib import parse
s1 = "475532444B4E525549453244494E4A57475132544B514A54473432544F4E4A5547515A44474D4A5648415A54414E4257473434544B514A5647595A54514D5A5147553444474D5A5547453355434E5254475A42444B514A57494D3254534D5A5447555A444D4E5256494532444F4E4A57475A41544952425547343254454E534447595A544D524A5447415A55493D3D3D"
s2 = ""
for i in range(0,len(s1),2):
s2 += '%'
s2 += s1[i:i+2]
print(base64.b64decode(base64.b16decode(base64.b32decode(parse.unquote(s2)))))
# MRCTF{Y0u_Are_4_p3rFect_dec0der}
使用audacity
工具打开,根据这个题目的名字提示去看频谱图,得到flag{sp3tr0gr4m0ph0n3}
简单搜索,发现是使用RX-SSTV工具
,安装地址
这个工具的使用方法,首先安装完这个工具之后,在setup
选择栏的第三个声音录入选择的地方选择这个设备
将其设为默认设备,如果没有的话,在这里安装一个
然后打开音频文件,同时点击右边的收听按钮,这个时候,声音就会被画成图片了,稍等一会儿即可
dat文件与0x33异或后,得到一张图片
data = open("photo.dat",'rb')
strs = data.read()
flag = open("1.jpg",'ab+')
for i in strs:
flag.write(bytes([i ^ 0x33]))
后面其实是根据LTE定位基站地址,最后定位到桂林电子科技大学花江校区
,也就是flag为flag{桂林电子科技大学花江校区}
。
foremost分离出来一个zip,里面是一个ELF文件,丢尽linux,跑一下,即可得到flag
在ICMP包后面每一段都存在一点html标签及内容
写个脚本提取出来
from scapy.all import *
packets = rdpcap('1.pcapng')
f = open('1.txt','a')
for packet in packets:
if packet.haslayer(ICMP):
if packet[ICMP].type == 0:
f.write(str(packet[ICMP].load[-8:]))
f.close()
发现一段base64代码
整理一下,即为
Q1RGe0p1c3RBUzBuZ0FiMHV0UDFuZ1Awbmd9
base64解码得到
CTF{JustAS0ngAb0utP1ngP0ng}
首先是发现了一大段的隐藏文字,然后在备注里面发现一段
组合起来,进行base64解码,得到一大串字符,然后根据题目名字提示进行词频统计得到flag
actfplokmijnuhbygvrdxeszwq}
也就是
flag{plokmijnuhbygvrdxeszwq}
访问check.php
发现源码
<?php #这不是抽奖程序的源代码!不许看! header("Content-Type: text/html;charset=utf-8"); session_start(); if(!isset($_SESSION['seed'])){ $_SESSION['seed']=rand(0,999999999); } mt_srand($_SESSION['seed']); $str_long1 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; $str=''; $len1=20; for ( $i = 0; $i < $len1; $i++ ){ $str.=substr($str_long1, mt_rand(0, strlen($str_long1) - 1), 1); } $str_show = substr($str, 0, 10); echo "<p id='p1'>".$str_show."</p>"; if(isset($_POST['num'])){ if($_POST['num']===$str){x echo "<p id=flag>抽奖,就是那么枯燥且无味,给你flag{xxxxxxxxx}</p>"; } else{ echo "<p id=flag>没抽中哦,再试试吧</p>"; } } show_source("check.php");
代码的逻辑还是很简单的,这里就不多说了,先用脚本将随机数转换成php_mt_seed
工具可识别的数据
str1='abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
str2='ontHZFyPED'
str3 = str1[::-1]
length = len(str2)
res=''
for i in range(len(str2)):
for j in range(len(str1)):
if str2[i] == str1[j]:
res+=str(j)+' '+str(j)+' '+'0'+' '+str(len(str1)-1)+' '
break
print(res)
# 14 14 0 61 13 13 0 61 19 19 0 61 43 43 0 61 61 61 0 61 41 41 0 61 24 24 0 61 51 51 0 61 40 40 0 61 39 39 0 61
然后使用php_mt_seed
工具进行爆破,得到seed:912644945
然后写个脚本即可
<?php
mt_srand(912644945);
$str_long1 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$str='';
$len1=20;
for ( $i = 0; $i < $len1; $i++ ){
$str.=substr($str_long1, mt_rand(0, strlen($str_long1) - 1), 1);
}
echo $str;
?>
//ontHZFyPEDh6Gt31vzzO
输入结果即可得到flag
看到是Smarty
模板,并且显示了Current-ip
想到可能是在XFF头存在SSTI注入,尝试了一下,果然存在,而Smarty
模板可以使用{if}
标签来执行php代码,例如{if phpinfo()}{/if}
,于是cat /flag
得到flag
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。