校赛CTF初体验
Welcome to Eviden’s Blog:https://www.eviden.top/
(很久没更新咯~)
Misc
emmm,之前也从来没做过misc的题,就是边学边查边做呗~
你也玩拼图
脚本安装环境啥的自己具体查,py脚本小子还是有必要过这一关的!
这里给出我的示例命令,因为开始没跑出来
命令:https://blog.csdn.net/m0_47643893/article/details/113778577
自己慢慢试试偏移量应该就能解出来了~(学过移位密码的可以直接根据第一个字符得出偏移量~)
重生之我是ctf糕手
打开压缩包一顿搞,发现字体显示异常,搜索引擎开搜呗
找到一个零宽字符隐写的,ok直接找个解密网站一把梭~(注:这题解密不要密码)
签到题
道具题,没啥意思,找不到工具就解不出那就搁那晾着,后面出题人给出工具了那就自行网上下载咯,拖到工具答案就出来了.工具名:SilentEye
简单加密
开题给的提示信息就是解密密码.
打开压缩包,看到base64然后 jpg的格式明显提示你 base64转图片.(我这种从来没写过misc的都能看出,各位大佬应该秒杀我lo~)
得到图片后,后面只要知道解密密码是开题的提示信息即可.具体细节我也记不太清了~
Crypto
emmm,密码学也只是上过这门课.尽力了,能写一道就算win!
Vigenère
标题就提示你了吧是什么,然后出题人还一直提示你.做过点密码学都知道,维吉尼亚密码.
ok,随便找个网站,C-V一丢,flag就出来了~
签到题
Py密码学,应该是des,这点要能判断出来,具体的加密特征和手法要了解,然后就chatgpt傻瓜式做题了~
1 |
|
Reverse
好了,又是个边写边学的过程~
happy_assebly
1 | ; void __cdecl enc(char *p) |
看完之后也就是个异或操作,你知道这个这题就可以了.最后给了个加密的结果,那我们再逆回去就是了.直接异或操作即可
1 | void dec(char *p) { |
Web
emmm,这个方向算是研究过的,终于不是陌生的了~Oh,yeah
只不过时间还是略显匆忙,最近事情太多了,没很多时间打这个比赛了,基本瞄一眼就过了,不会的也不想费太多时间,因为还有作业和考试,悲催
好波,Let’s begin!
贪吃🐍
题目给的提示;好玩的🐍🐍,你能吃到10000分吗
一般这种题目就是js源码分析,真要玩的10000分解出的flag那我佩服你是游戏天才(或者非人类!)
开题先别管游戏规则,老规矩F12看看先!
先f搜索一下关键词,alert,没错发现好东西了
再搜这个函数
明眼人都看得出是base64吧,拿去解密即可!
OK,不到30s一血就拿下了呗
sqlinject
你能登录嘛?
题目给的提示: 用sqlmap是没有灵魂的
纯误导提示我只能说是:当然你说反向提示你也行~
开题页面
就两个地方可以有机会吧.当然登陆框你可以去试试,我是用的字典跑了两轮的,应该不可能有注入点
这条路走不通那只能换另外一个news入手了
返回的是json格式,但是你仔细观察一下url,发现存在id=XXX的情况,ok,这不就是教材上经典的sql注入题型嘛.
先不急,手工验证一下,先上字典判断哪种注入类型.
发现也就是很普通的sql注入类型,应该也是没有过滤的,因此直接上sqlmap就行.
接下来就是sqlmap一把梭哈了
脱库后基本的常识你要知道,这个密码一般都不是提供具体的原密码保存在服务器的,而是hash过的hash值,当然sqlmap也会提示你
以后渗透测试时不要发蒙!这个地方还原的很经典,点赞一下出题人~,当然不要轻易用sqlmap去脱库哦,可能会很刑!
上面那个貌似是个假的库,用admin的密码登不上,反正一个个表验证就行了
最后得出是下面这个密码有效,再回到原来login页面登陆即可拿到flag!
http
开题页面
经典入门改数据包,很好奇这题为啥不放第一天(sql那个题应该可以跟这个换一下的我觉得)
BP启动吧还是,实在不会你可以csdn搜一下类似的改头的手法.当然这里有个坑
第五个条件是要你改IP,一般就是XFF头就够了~
但是这里出题的恶心你一手,改XFF应该是不够的,他不会让你过
这时候需要BP的一个插件fakeIP
详情看
有插件应该就很好伪造了~
easy_rce
开题
1 |
|
emmm这好像是个原题吧,只能说一点意思没有,一模一样啥都不改
这个blog对无字母产生讲的很清楚了,一些脚本你也可以自己编写或者思考变形,再具体的后面免杀的时候有用!
异或绕过或者取反应该都行(根据那个正则应该就是不能出现平常的字符,因此这个手法也叫无字母rce
)
具体更多的php 的一些rce手法可以看我自己的blog总结Eviden’s Blog
打不开建议用魔法访问,页面托管在国外平台,国内DNS大部分被污染了,有点慢或者无法访问都是正常~
easy_pop
题目提示;简单反序列化
那就按他说的简单的反序列化来呗~
开题:
这是源码
1 |
|
我们重点关注一些php的魔术方法:__construct()
__destruct()
__toString()
__call($a,$b)
就这些了,不算多~具体触发手法你去搜一下,反序列化漏洞还是很重要的!
ok,开始代码审计
我们触发的顺序就是:3<—1<—2<—4,反着推就行
1 |
|
这是我按照pop链的顺序推出来EXP,改在上面,我个人喜欢用__construct()
方法传递对象或给参数赋值,网上大部分是那个什么创建完对象后再传来传去.那个->
看得我是又臭又长.个人爱好,勿喷
这里出题人还给了个恶心你的点if($pass!=null&&!preg_match("/\x{00}/i",$pass))
这个正则说人话就是匹配%00
.
为什么会序列化后出现%00
,这个你自己去找资料或者是学习一下反序列化漏洞入个门先,别急着就会写题
我在代码注释后面写了资料~,自己看吧!
最终Payload:
O:5:"rank4":1:{s:3:"r4a";O:5:"rank2":1:{s:3:"r2a";O:5:"rank1":2:{s:3:"r1a";O:5:"rank3":2:{S:12:"\00rank3\00admin";s:3:"r3a";S:9:"\00*\00passwd";s:3:"r3b";}s:3:"r1b";s:7:"Getflag";}}}
upup
只需要一点小小的审计,详情代码看附件噢
最后一题也算是我这次校赛的遗憾吧,一个是时间太紧张了,没那么多时间用来打CTF,可能也是自己代码审计这块确实low(需要补强)另一个是勾巴服务器有点问题,这个也不怪,之前就一直这种外带和反弹shell的题见的少,每次都觉得留在后面写,后面发现遇到的也多了,再慢慢学吧
源码先记录下;
1 |
|
我觉得应该就是ssrf漏洞结合curl_exec
外带,但是一直没外带成功,可能是我分析的地方有问题
Maybe外带的思路也不对?
为了伪造这个请求,首先要上传一个文件,然后服务器对签名进行校验,校验签名的机制都写在代码给你了,分析一下不难发现就是把传入的参数进行排序拼接再加个token
拼接起来md5
hash一下.
伪造签名脚本
1 | ? |
伪造请求发包表单:
1 |
|
分析到这儿了,写作业去了(还有一堆实验报告) ~悲~
OK,这次CTF校赛初赛就到这了ba.
正常发挥只能算是~
还要继续加油!