CTF学习|CG-CTF闯关笔记

TRY 4,073 4

至少我们曾经在一起过。

来自:一言

什么是CTF?

CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的竞赛形式,2013年全球举办了超过五十场国际性CTF赛事。而DEFCON作为CTF赛制的发源地,DEFCON CTF也成为了目前全球最高技术水平和影响力的CTF竞赛,类似于CTF赛场中的“世界杯” 。

目前网上提供了很多CTF靶场给大家训练,最近在玩一个CG-CTF的靶场,所以写个帖子记录一次,持续更新。

CG-CTF网址:https://cgctf.nuptsast.com/challenges#Web

下图是线下CTF比赛照片~当然我是不配的[aru_15]。

CTF学习|CG-CTF闯关笔记

第一关签到题

1.打开题目,看到以下提示。

CTF学习|CG-CTF闯关笔记

2.打开题目地址,可看到以下提示。

CTF学习|CG-CTF闯关笔记

3.下意识查看一下源码,发现flag。

CTF学习|CG-CTF闯关笔记

ps:签到题肯定是最简单的,要跟着思路走就可以了,一般题目里都会有提示的~

第二关md5 collision

1.这关叫md5碰撞,打开题目可看到php源码,如下

$md51 = md5('QNKCDZO');
$a = @$_GET['a'];
$md52 = @md5($a);
if(isset($a)){
if ($a != 'QNKCDZO' && $md51 == $md52) {
    echo "nctf{*****************}";
} else {
    echo "false!!!";
}}
else{echo "please input a";}

ps:因为我基本也不会php,但是还是可以看懂一点。以下是个人理解,如有错误希望指出[aru_14]

2.源码的意思是:md51是将QNKCDZO进行MD5加密,a是从前端获取一个get请求发送过来的值,md52是将a进行md5加密,如果接受到前端传来的a值,就进行判断。a不能是QNKCDZO并且md51和MD52的值需要相同才可以获取flag,但是我们看php源码中,md51和md52中间是"=="而不是"===",这样就表示两个值不需要完全相等[aru_3](ps:有兴趣的可以百度一下php的等于)

解题开始:QNKCDZO的md5值是:0e830400451993494058024219903391 (md5值是唯一的)

由于php使用==比较数字和字符串时,将字符串转换成数字后与数字进行比较,然后根据php字符串转换成数字的规则,可以知道只要是以0e开头的md5值,本题源码里都会默认是正确[aru_38],通过百度可以获取到md5以0e开头的字符:s878926199a    s214587387a

3.所以,通过get发送以上字符,可获取flag

CTF学习|CG-CTF闯关笔记

第三关签到题2

1.打开题目域名,可以看到以下信息

CTF学习|CG-CTF闯关笔记

2.输入口令:zhimakaimen 后依然没变化,然后右键查看源码,发现以下东西。。([aru_15]这思路太骚了,所以我一直都知道打ctf比赛的都是大佬)

CTF学习|CG-CTF闯关笔记

解释一下:通过查看源码可以发现前端文本框限制最大输入的10个字符,但是口令是:zhimakaimen(11个字符!!!),所以我们需要利用burp绕过前端字符限制,才可以获取flag

3.利用burp绕过前端限制成功获取flag

CTF学习|CG-CTF闯关笔记

第四关这题不是WEB

1.打开题目地址,发现一张图片,如下图

CTF学习|CG-CTF闯关笔记

2.发现一个动态表情包,再根据题目提示可以轻易的知道flag就藏在这个表情包中,所以把表情包保存下来,用文本打开查看,可获取flag

CTF学习|CG-CTF闯关笔记

第五关层层递进

1.打开题目地址可以看到以下信息

CTF学习|CG-CTF闯关笔记

2.根据题目的意思(层层递进),应该是不断的跳转获取新的信息啥的~~[aru_15],所以先查看源码,可以发现一个入口

SO.html

CTF学习|CG-CTF闯关笔记

再点进去,又发现一个S0.html

CTF学习|CG-CTF闯关笔记

又发现一个页面[aru_38]。404.html

CTF学习|CG-CTF闯关笔记

最后这个404页面就包含了我们需要的flag,把注释里的flag提取出来就成功获取flag了!!![aru_78]

CTF学习|CG-CTF闯关笔记

第六关AAencode

1.AAencode(颜文字加密),题目地址:http://homura.cc/CGfiles/aaencode.txt

ps:这关的编码有问题,应该用unicode编码打开。保存文件,修改编码后。打开后如下

CTF学习|CG-CTF闯关笔记

2.将转化后的字符粘贴在浏览器的F12控制台中回车,即可获得Flag!![aru_62]

CTF学习|CG-CTF闯关笔记

第七关单身二十年

1.emmm,题目名称是单身二十年?[aru_7],提示如下图

CTF学习|CG-CTF闯关笔记

2.打开页面发现是这样

CTF学习|CG-CTF闯关笔记

点击后是这样的。

CTF学习|CG-CTF闯关笔记

emmm,看来是我的手速不够![aru_60],那就只有用技术来弥补了,拿出我的大刀[aru_84],不不不,是burp才对。

3.在跳转处利用burp进行抓包拦截

CTF学习|CG-CTF闯关笔记

成功获取flag,原来是一个跳转,话说真的有人可以通过手速获取吗?[aru_125]

第八关php decode

1.打开题目,可以看到以下源码。一个加密的shell,flag应该在加密的字符里。

<?php
function CLsI($ZzvSWE) {
 
    $ZzvSWE = gzinflate(base64_decode($ZzvSWE));
 
    for ($i = 0; $i < strlen($ZzvSWE); $i++) {
 
        $ZzvSWE[$i] = chr(ord($ZzvSWE[$i]) - 1);
 
    }
 
    return $ZzvSWE;
 
}
eval(CLsI("+7DnQGFmYVZ+eoGmlg0fd3puUoZ1fkppek1GdVZhQnJSSZq5aUImGNQBAA=="));
?>

2.将以上源码作为php文件打开,发现eval函数报错。

CTF学习|CG-CTF闯关笔记

3.那我们换个思路,加密代码是包含在源码里的,CLsI应该是解密,那我们把源码里的eval换成echo,是不是就可以直接看到解密后的内容了?[aru_27]

CTF学习|CG-CTF闯关笔记

如图:成功获取flag~[aru_14]

 

持续更新

ctf真的很有趣,里面的思路脑洞让我学习到了很多,这次就先更新到这里,下次有空再继续学习,加油奥力给~[aru_13]CTF学习|CG-CTF闯关笔记

发表评论 取消回复
表情 图片 链接 代码

  1. 冰-Mango
    冰-Mango Lv 1

    挺好的,就是有点上头[aru_15]

  2. 生命书博客

    有意思[aru_13]

  3. chinabe.cn站长

    try我再也不装逼了 相进你群[aru_1]

分享