MRCTF 2020 BlockChain Wp

M

SIMPLEREVEAL 区块链签到题,直接找到合约查看一下变量就行: Unwanted Coin 合约代码给出来了: pragma solidity >=0.6.1; contract Modcoin { mapping(uint256 => bool) public is_successful; function recvpay() public payable { require(((msg.value / 0.001 ether ) % 2 == 0 && ((msg.value % 0.001 ether) == 0)), "Not Accepting These Coins."); } function getflag(uint256 target) public { require((address(this)...

WUST-CTF2020 Web Wp

W

武科新生赛,由于 TaQini 师傅号丢了,所以共享了一波账号,被带了个第一,不得不说 TaQini Tql! CheckIn 这题有点恶心,上来就给你放音乐洗脑,还问你 Author 是谁,从题目连接处查到出题人 id,修改下 html 提交: 我怎么就想不到这种给博客引流的办法呢! 翻了翻博客,发现有一个 1970 年的文章,真的是远古博客,文末有一半 flag: 博客首页源代码有另一半: 耗费了我半天经历终于把这个题做了出来,此时不得不叹息出题人的良苦用心,赶紧拿起我的手机给出题人转了一笔辛苦费 admin 万能密码绕登录框,构造 xff 头,get post 传个参,最后给的地址排列组合一下就能拿到flag CV Maker 头像处文件上传,检查了内容,GIF89 文件头绕过直接 getshell。 easyweb...

MRCTF 2020 Web wp

M

北邮新生赛,纪念一下 Nep 登顶(大佬们都是单人打,就我们不要脸的组了个队) 23333 ez_bypass 直接给了源码: <?php include 'flag.php'; $flag='MRCTF{xxxxxxxxxxxxxxxxxxxxxxxxx}'; if(isset($_GET['gg']) &amp;&amp; isset($_GET['id'])) { $id=$_GET['id']; $gg=$_GET['gg']; if (md5($id) === md5($gg) &amp;&amp; $id !== $gg) { echo 'You got the first step'; if(isset($_POST['passwd'])) { $passwd=$_POST['passwd']; if (...

FireShell CTF 2020 WP

F

老外的比赛,老菜狗上去看了两眼没啥思路就溜了,照着国外师傅们的 wp 复现一下。 CaaS 在线c语言编译器,会把输入的 C 代码编译成可执行文件,再以下载文件的方式返回。一开始以为是用任意文件下载收集信息,但是由于比赛的所有题目都是 https 无法用 burp 抓包,因此没有具体定位到下载的 url。 国外师傅的做法是利用 C 语言的 #include 直接将 flag 当做头文件包含,由于包含 flag 无法通过编译会报错,因此会直接在前端显示出来。这个操作确实是没想到,学习了。 URL to PDF 看了师傅们的 wp,这个题目主要考点在这里。题目是个提交框,可以提交一个 url 服务器会访问并转成 pdf 以供下载。用自己的 vps 看一下头信息: 是很不常见的 WeasyPrint,根据上面的考点,这个爬虫虽然不会渲染 js,但是却可以解析 <link...

智能合约 CTF 入门:ETHERNAUT WRITE UP (完)

还有最后几道题,赶紧刷完,加油冲鸭! Naught Coin 题目要求我们把自己的余额变为0,但是限制了我们使用转账函数,源码: pragma solidity ^0.4.18; import 'zeppelin-solidity/contracts/token/ERC20/StandardToken.sol'; contract NaughtCoin is StandardToken { using SafeMath for uint256; string public constant name = 'NaughtCoin'; string public constant symbol = '0x0'; uint public constant decimals = 18; uint public timeLock = now + 10 years; uint public...

智能合约 CTF 入门:Ethernaut Write Up (2)

立一个 flag,明天之前刷完,刷不完让 Y1ng 师傅女装 23333 Delegation pragma solidity ^0.4.18; contract Delegate { address public owner; function Delegate(address _owner) public { owner = _owner; } function pwn() public { owner = msg.sender; } } contract Delegation { address public owner; Delegate delegate; function Delegation(address _delegateAddress) public { delegate = Delegate(_delegateAddress); owner = msg...

2020_2nd_BJDCTF BlockChain Wp

2

坚固性?! tags: 智能合约的部署等基本操作Solidity uint 上溢出 下载附件,给了题目源码以及地址,审计源码: 首先有个 getFlag() 函数: function getFlag() public view returns (string){ require(balances[msg.sender] > 9999999); return flag; } 很明显需要通过攻击合约让自己的 balance 变大,继续审计其他函数,发现只有 Transfer() 有对 balance 的操作: function Transfer(address[] _addr, uint256 _value) public returns (bool){ uint times = _addr.length; uint256 amount = uint256(times) *...

XCTF 高校联盟出题笔记

X

絮絮叨叨 本来没什么思路出题,想着随便构造一个反序列化的题目,就先看了看 php 的魔法方法,其中 __clone() 基本没怎么出过题目,就研究了一下这个方法的特性。 首先,__clone() 触发的条件是本对象被 clone,例如: $someClass = new Class(); $a = clone $someClass; 在 clone 执行后会拷贝一个一模一样的 $someClass 赋值给 $a,这样一来对于需要多次重复对象操作的实际环境(数据库交互等)就可以用 clone 来提高开发效率。 但是 php 的 clone 存在一个feature,假如 $a 中拷贝的 $someClass 的某个属性也是一个对象(简称为子对象),则 $a 实际上是引用的 $someClass 中的子对象(类似 C 中的指针),即如果 $someClass 中含有子对象 $this...

安恒2月月赛 部分wp

easyflask1 打开是个非常熟悉的魔方前端,然后随意 fuzz 一下目录发现存在 ssti,结合题目名猜测是 flask ssti。 url 中过滤了下划线、句号,群里师傅搜到了这个讲如何 bypass 的项目,简单来说就是换一种代码风格,把 a.b 写成 a[‘b’] 的形式,由于本题目没有过滤中括号和引号,因此成功绕过;同时 ssti 需要调用某些魔法方法来支持 rce,因此还得绕过下划线,传别的参数可以绕过。 这个题目不知道是不是设置的问题,只要 url 里有 [\d*] 就直接 500,因此要用 __getitem__ 绕一下。flask 注入也不太熟,以后知道为什么了再回来补。 最后 rce 的 payload:...

Imagin 丨 京ICP备18018700号-1


Your sidebar area is currently empty. Hurry up and add some widgets.