BUUCTF-刷题记录-7

    科技2022-07-14  145

    MISC

    [GUET-CTF2019]soul sipse

    steghide工具分析得到一个文件,无密码 得到一个链接 文件头错误,修复一下 得到这么一串Unicode字符 进行解码,得到

    4070 1234

    把其相加得到5304即为flag

    [MRCTF2020]pyFlag

    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}

    [UTCTF2020]spectogram

    使用audacity工具打开,根据这个题目的名字提示去看频谱图,得到flag{sp3tr0gr4m0ph0n3}

    [UTCTF2020]sstv

    简单搜索,发现是使用RX-SSTV工具,安装地址 这个工具的使用方法,首先安装完这个工具之后,在setup选择栏的第三个声音录入选择的地方选择这个设备 将其设为默认设备,如果没有的话,在这里安装一个 然后打开音频文件,同时点击右边的收听按钮,这个时候,声音就会被画成图片了,稍等一会儿即可

    [GUET-CTF2019]520的暗示

    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{桂林电子科技大学花江校区}。

    [UTCTF2020]File Carving

    foremost分离出来一个zip,里面是一个ELF文件,丢尽linux,跑一下,即可得到flag

    [BSidesSF2019]table-tennis

    在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}

    [ACTF新生赛2020]frequency

    首先是发现了一大段的隐藏文字,然后在备注里面发现一段 组合起来,进行base64解码,得到一大串字符,然后根据题目名字提示进行词频统计得到flag

    actfplokmijnuhbygvrdxeszwq}

    也就是

    flag{plokmijnuhbygvrdxeszwq}

    WEB

    [GWCTF 2019]枯燥的抽奖

    访问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

    [CISCN2019 华东南赛区]Web11

    看到是Smarty模板,并且显示了Current-ip 想到可能是在XFF头存在SSTI注入,尝试了一下,果然存在,而Smarty模板可以使用{if}标签来执行php代码,例如{if phpinfo()}{/if},于是cat /flag得到flag

    Processed: 0.013, SQL: 8