智能合约安全入门:ETHERNAUT-WriteUp(2)
0x00 King
123456789101112131415161718192021pragma solidity ^0.4.18;import 'zeppelin-solidity/contracts/ownership/Ownable.sol';contract King is Ownable { address public king; uint public prize; function King() public payable { king = msg.sender; prize = msg.value; } function() external payable { require(msg.value >= prize || msg.sender == owner); king.transfer(msg.value); king = msg.sender; prize = msg.value; }}
这道题目标是阻止其他人成为Kin ...
BUUCTF-WriteUp合集
我太菜了啊,赶紧刷题,比赛打不动了
[RoarCTF 2019]Easy Java知识点:
tomcat基本知识
Javaweb基础知识
进了点了一下help,发现有filename参数,题目说了是个Java题,所以直接读取WEB-INF/web.xml,一无所获,抓个包,一顿操作之后发现只有改成POST方法就可以了(不知道是什么原理,之后再看)
再加上之前乱测得时候爆出来得信息
所以我们可以顺理成章的去读flagcontroller
然后解码得到flag
顺带一提tomcat的服务端文件结构
/WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。/WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class/WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件/WEB-INF/src/:源码目录,按照包名结构放置各个java文件。/WEB-INF/database. ...
智能合约安全入门:ETHERNAUT-WriteUp
这学期有区块链的大创和比赛,所以需要学一下智能合约什么的,正好看到最近的一些CTF比赛里出现了智能合约的题目,就想着玩玩这个。
在某佬博客里看到一个入门的靶场,就先打一遍入个门。
0x00 环境准备首先肯定是IDE,然后在自己的chrome里面安装上MetaMask插件,开Ropsten测试网络进行测试,搞好以后去找个水龙头嫖几个以太币(当然是假的)用来测试。
关于IDE的使用,写好一个合约之后,简单来说需要走的步骤就是
编译—>部署—>调用
每一个部署和调用都要花费一定量的以太(view和pure除外)。
在做题的过程中一定要保持靶场和小狐狸的交互性。
顺便一提
这个靶场的成功提示好魔性啊(XD
0x01 Hello Ethernaut这道题就是用来测环境的,打开MetaMask然后在console跟着教程一步一步走就好。
0x02 Fallback ✔1234567891011121314151617181920212223242526272829303132333435pragma solidity ^0.4.18;import 'zeppelin-s ...
WriteUp(网鼎杯2020青龙组) - Web
比赛很自闭,开赛很久才放了web题,上了第一个PHP贼简单但还是做了蛮久,导致后面一道Java的不难的XXE没有时间做完,还好队友顶,crypto,RE,pwn师傅带飞,可以去线下划水了。
AreUSerialz源码:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081<?phpinclude("flag.php");highlight_file(__FILE__);class FileHandler { public $op; public $filename; protected $content; function __construct() { $op = "1"; $filename = "/t ...
刷题记录-DDCTF2019-homebrew event loop
知识点:
逻辑漏洞
flask session解密
先放flask源码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174from flask import Flask, session, request, R ...
PHP各种姿势的RCE
1、限制长度的RCE以HITCON 2017 babyfirst-revenge为例,源码如下:
12345678910<?php $sandbox = '/www/sandbox/' . md5("orange" . $_SERVER['REMOTE_ADDR']); @mkdir($sandbox); @chdir($sandbox); if (isset($_GET['cmd']) && strlen($_GET['cmd']) <= 5) { @exec($_GET['cmd']); } else if (isset($_GET['reset'])) { @exec('/bin/rm -rf ' . $sandbox); } highlight_file(__FILE__);
源码很 ...
虎符CTF-Web复现
easyLogin知识点:
NodeJS代码审计
NodeJS依赖库缺陷
NodeJS的jwt依赖库的空加密缺陷,将secretid置为空即可绕过限制,登录admin账户,然后GET /api/flag就可以获得flag。
2019年的UNCTF里面就有一道题里面涉及了这个知识点(当时这道题没复现。。。。后悔
https://xz.aliyun.com/t/2338
https://evoa.me/index.php/archives/60/
其实这道题还有一个可以利用的任意文件读取漏洞,可以拿下源码进行审计。
直接访问对应文件就可以,例如
这样就可以将项目所有的文件都读取到,具体参考 https://www.zhaoj.in/read-6512.html
justEscape知识点:
vm.js 沙箱逃逸与过滤绕过
这道题出题人恶趣味的在run.php混淆视听,用了PHP的一堆东西试了试,发现不行,扔了个81打出了81,还以为是python写的后台,比赛的时候就卡在这里了
其实是NodeJS的后台,可以丢个报错看看
这个报错内容可以看到是用vm2的框架,直接先去Gi ...
用Scapy玩网络
什么是ScapyScapy是一个强大的,用Python编写的交互式数据包处理程序,它能让用户发送、嗅探、解析,以及伪造网络报文,从而用来侦测、扫描和向网络发动攻击。Scapy可以轻松地处理扫描(scanning)、路由跟踪(tracerouting)、探测(probing)、单元测试(unit tests)、攻击(attacks)和发现网络(network discorvery)之类的传统任务。它可以代替hping,arpspoof,arp-sk,arping,p0f 甚至是部分的Nmap,tcpdump和tshark 的功能。
基操构造数据包scapy能够很自由轻松的操作数据包,我们用from scapy.all import * 导入包,然后用IP()就可以构造一个最简单的IP协议数据包数据包,然后可以用ls()来查看参数:
对比一下我们熟悉的IP协议的报文结构,是不是突然对scapy的方便之处有了一丝理解呢
其他的协议也是同理
利用show()也可以查看数据包的内容
还有summary()方法查看概要信息,hexdump()方法查看数据包的字节信息,就不放图片了。
发送 ...
刷题记录:BUUCTF admin
刷题记录:BUUCTF admin
刷题记录[CISCN2019 华北赛区 Day1 Web2]ikun
进来看完ctrl的kunkun,hint说要买lv6
显然是一个跑目录的操作,这里可以看出直接找lv6.png这个图片就行,写个小脚本爆出来(贼慢,带点耐心)
12345678import requestsurl="http://3162c274-c0d1-413f-9dc2-1395d15911c5.node3.buuoj.cn/shop?page="for i in range(0,999): r=requests.get(url+str(i)) if 'lv6.png' in r.text: print(i) break
跑出来是181页,直接访问
显然是买不起,抓个包试试有无逻辑漏洞
就这俩参数,改改看,(改折扣为一个很小的数就可以过)
进去之后需要admin,先给抓个包康康,发现有JWT,先丢进 https://www.jsonwebtoken.io/ 里面看看
对用户名进行替换,这里需要一个JWT的工具
可以直接跑出key
然后如图所示构造JWT,发包,通过。
通过后在页面源 ...