
CTF之旅
文章平均质量分 69
Flying_Fatty
这个作者很懒,什么都没留下…
展开
-
20180CTF g0g0g0 writeup
一道很好的题目,从逆向到数学密码到工具贴几个writeup吧,比较难找:https://www.jianshu.com/p/d906619a01b7https://github.com/xiaohuajiao/my-ctf/tree/master/2018/0ctf/g0g0g0http://westerns.tokyo/writeups/0ctf2018quals.html#g0g0g0上面的链...原创 2018-04-24 23:22:47 · 2672 阅读 · 0 评论 -
[pcap1] 文件恢复
学习资料来源:http://blog.51cto.com/yttitan/1737904这里记录一下自己觉得重要的过程首先需要过滤包:http.request.method==POST,因为我们是需要从中恢复出上传的文件拖动下发现209号包格式不同,且有Upload image,打开分析在应用层:在传输层:这里可以看到,由于文件比较大,所以拆分成了16个帧进行文件传输于是,可以选择209号包进行T...原创 2018-05-28 21:30:07 · 1362 阅读 · 0 评论 -
[pcap2] 通信协议总结分析
TCP:Transmission Control Protocol 传输控制协议https://www.jianshu.com/p/ef892323e68f重点需要关注:报文格式(在恢复数据报文的时候常用),三次握手,四次握手UDP:User Datagram Protocol 用户数据包协议应用协议与端口号:(DNS,53),(TFTP,69),(SNMP,161)https://blog.cs...原创 2018-05-28 23:41:18 · 3449 阅读 · 0 评论 -
[pcap3] 刷题列表
http://metasploit.lofter.com/post/d9d60_89a1f47第一波刷题资料来源在上面链接,有pcap文件提供下载以及wpA:Pwnium 2014 USB if for fun工具strings:涨姿势:用wireshark的搜索:自动跳到了902号帧,也看到了flagB:passwd.pcap先用strings找到想要的字符串然后追踪TCP流以hex形式打开:查...原创 2018-05-29 23:15:09 · 1899 阅读 · 0 评论 -
2018 SUCTF pass
思路很棒的一个题,对AES-CBC模式的攻击也不是一次两次了,其实题目也给了思路,只是自己不清楚原理,导致看不懂提示做不出来题目代码:#coding: UTF-8import socketimport flagfrom Crypto.Cipher import AESdef padding(message): toPadByte = 16 - len(message) % 16...原创 2018-06-07 22:39:24 · 455 阅读 · 0 评论 -
[南邮CTF平台] VigenereWP
https://findneo.tech/171005NuptVigenereWP/#%E5%8F%82%E8%80%83%E9%93%BE%E6%8E%A5题目链接和wp在链接里都有,代码也来自于链接:# coding:utf8# by https://findneo.github.io/def getCipher(file='code.txt'): '''从文件中读取十六进制串,返...转载 2018-06-08 09:22:43 · 807 阅读 · 0 评论 -
2018 SUCTF cycle
比赛的时候看到这个题,通过率那么高,然后密钥长度给了提示是1-50,所以猜到了是暴力,太久没做Crypto了,已经忘记了还有维吉尼亚字频统计这一说了……找到了一个好的wp贴出来:https://findneo.tech/180527suctf/#Magic...转载 2018-06-08 09:29:28 · 534 阅读 · 0 评论 -
2018 SUCTF misc GAME
一道ACM博弈题,交互比较麻烦第一关:巴什博弈两人取石子,总共n个,每次拿 1 - m 个,问先手胜还是负,胜的话输出每一步策略第二关:威佐夫博弈两人取石子,总共两堆,可以从两堆里拿相同的数目,也可以从一堆中拿任意多个,问先手胜还是负,胜的话输出每一步策略先上代码吧import math'''for k in xrange(1,10): a = int(k * (sq5 + 1) / 2)...原创 2018-06-08 10:22:21 · 783 阅读 · 0 评论 -
[2018看雪] - 第七题 - 有限域数学变换
在之前插播一个数学知识:一个在素数p下的有限域:GF(p) = {0,1,2,3,……,p-1},加法运算是模p加,乘法运算是模p乘数学上可以证明对于在GF(p)中的每一个元素都存在加法逆元和乘法逆元,因此是可以做四则运算的加法 = 加法,减法 = 加上 加法逆元,乘法 = 乘法,除法 = 乘以 乘法逆元在有限域里,会出现特殊的“循环”的现象:任意一个数x属于GF(p),一直加...原创 2018-07-27 00:25:26 · 700 阅读 · 0 评论 -
2016 h4ckit-ctf ninja-scheme Feistel结构
代码如下:#!/usr/bin/env python# coding=utf-8def slice(s,size): return [s[i:i+size] for i in range(0,len(s),size)]#print slice("abcdefghijklmnop",4)#['abcd'.'efgh','ijkl','mnop']def xor(a,b): ...转载 2018-05-23 23:10:06 · 482 阅读 · 0 评论 -
2016 hitb-facebook-ctf capture-mexico-tls RSA-CRT-Attack
攻击原理:Modulus Fault Attacks Against RSA-CRT Signatureshttps://eprint.iacr.org/2011/388.pdf在n=pq,分别对明文m签名时,如果一个签名正确,另一个签名错误,那么会导致n可分解如果觉得看论文太长太麻烦,可以看底下的解题链接SSL/TLS协商过程解析https://blog.youkuaiyun.com/zhangtaoym/...原创 2018-05-27 14:38:11 · 694 阅读 · 0 评论 -
2018 SUCTF magic
当时做题的时候得到的式子:(m[0] & key) % 2 == ?(m[1] & key) % 2 == *其中?和 * 很明显,不是0就是1啊!所以不妨换一种思路,如果我们把m和key都转化为二进制数,会发生什么!M表示m展开后的矩阵,K表示key展开之后的向量,C为cipher.txt转成的01向量,即有:MK = C矩阵乘法!二进制下的!也就是说,在有限域GF(2)中,有已...原创 2018-06-03 11:19:38 · 1018 阅读 · 0 评论 -
2016 Sharif CTF unterscheide
知识点:费马小定理当p为素数时,a^(p-1)≡1(mod p)题目分析:#!/usr/bin/python import gmpyimport random, osfrom Crypto.Util.number import *from Crypto.Cipher import AES from secret import flag, q, p1, p2, h assert (...原创 2018-05-18 17:04:05 · 427 阅读 · 0 评论 -
2016 0CTF rsa
知识点:多素数,中国剩余定理,模三次剩余题目给了一个flag.enc,还有一个public.pem安装openssl可以读取到n和e,因为n不大,可以在yafu或者factordb.com上分解得到n = p * q * r根据flag.enc,可以得到密文m根据中国剩余定理,我们要求得m在p,q,r下的余数,不妨设为pmod,qmod,rmod然后根据模三次剩余,即:proot ^ 3 ≡ pm...原创 2018-05-18 22:29:43 · 2056 阅读 · 0 评论 -
LSB oracle attack
原理:https://crypto.stackexchange.com/questions/11053/rsa-least-significant-bit-oracle-attack例题:2016 Plaid CTF:rabit2016 sharif CTF:lsb-oracle-150可能出现的问题:WindowsError:当py脚本调用exe时,找不到文件路径linux下需要安装wine来运...原创 2018-05-14 11:18:28 · 1502 阅读 · 0 评论 -
2016 Boston Key Party CTF hmac-crc
这种做法应该算是:选择密钥攻击http://mslc.ctf.su/wp/boston-key-party-ctf-2016-hmac-crc-crypto-5pts/HMAC–CRC(m,k)=(qm(x)⊕rm(x)k(x))modP(x),根据这个式子,当m不变时,qm(x)和rm(x)不变令k(x)=0,则有:HMAC–CRC(m,0) = (qm(x))modP(x),令k(x)=1,则...原创 2018-05-20 17:04:17 · 465 阅读 · 0 评论 -
2016 hack.lu-ctf cryptolocker CBC Padding Oracle Attack
CBC Padding Oracle Attack原理:https://blog.gdssecurity.com/labs/2010/9/14/automated-padding-oracle-attacks-with-padbuster.htmlhttps://www.jianshu.com/p/1851f778e579https://www.cnblogs.com/LittleHann/p/3...原创 2018-05-25 16:44:41 · 762 阅读 · 0 评论 -
2016 Boston Key Party CTF bobs-hat RSA-attack
知识点:Fermat分解首先使用openssl:openssl rsa -text -modulus -pubin < almost_almost_almost_almost_there.pub得到第一关的n和e(这里也可以yafu.exe)然后使用Fermat分解,得到p和q,求得明文(即压缩包的密码)def isqrt(n): x = n y = (x + n // x) // ...原创 2018-05-19 21:17:42 · 391 阅读 · 0 评论 -
2016 hack.lu-ctf redacted RSA数据恢复
https://github.com/ctfs/write-ups-2016/tree/master/hack.lu-ctf-2016/crypto/redacted-200一位一位的恢复n = p * q的数据,代码来源于链接:from base64 import b64decode, b64encodefrom binascii import hexlify, unhexlifyfrom ...转载 2018-05-26 15:31:04 · 1221 阅读 · 0 评论 -
2016 hack.lu-ctf conrelius1 CRIME攻击
原理:http://www.freebuf.com/articles/web/111927.htmlhttps://blog.youkuaiyun.com/blues1021/article/details/45165777在web的信息传输中,经常会有cookie值等,这其中运用了deflate压缩算法。当我们可以控制输入、且可以观察到输出时,我们就可以一位一位的暴力输入,观察输出的长度是否变化。在尝试过程...原创 2018-05-26 16:45:39 · 738 阅读 · 0 评论 -
hackme pwn homework
根据提示:Index out bound, Return Address根据源码:void run_program(){ int arr[10], i, v, act; …… while(1) { …… switch(act) { case 0: return; ...原创 2019-01-23 22:39:02 · 398 阅读 · 0 评论 -
hackme pwn toomuch1 - 二分法解题
分析函数流程:首先是密码正确性判断,然后是玩游戏~第一关:43210典型的二分法猜数字:0~100的区间,有8次机会!2^8=256>100,次数足够了第一次猜50,大了就说明数字在0~49中,则猜25;小了就说明数字在51~99中,则猜75;最后得到结果,即得到fake_flag(fake_flag是这个题的第一关)截图如下:这里运气比较好,...原创 2019-01-23 23:07:24 · 281 阅读 · 0 评论 -
jarvisoj pwn smashes (2015 32c3-ctf hackme) [Stack Smash]
题目链接:https://www.jarvisoj.com/challenges题目bin文件来源:github - ctfswriteup - 2015 - 32c3ctf - pwn - hackme 分析过程:开启了NX与Canary程序流程:输入名字之后,即可输入一个地址去覆盖flag~这里涉及的知识点是:Stack Smash当程序开启了Can...原创 2019-02-07 23:36:40 · 608 阅读 · 0 评论 -
hackme pwn smash-the-stack [stack smash]
根据提示:stderr!和32C3的readme一样,原理看上篇,这里贴两个exp#! /usr/bin/env python# coding=utf-8from pwn import *#io = process('./smash-the-stack')io = remote('hackme.inndy.tw', 7717)argv_addr = 0xffffcfa4buf...原创 2019-02-07 23:42:56 · 355 阅读 · 0 评论 -
jarvisoj pwn XMAN系列
目录level0level1level2level2_x64level3Level3_x64level0题目明显提示:buf的长度是0x80,可以直接覆盖掉return address到callsystem函数level1漏洞是一样的,难度加大:没有system函数地址,需要泄露;没有"/bin/sh",需要用read函数写入bss段看...原创 2019-02-09 14:47:10 · 441 阅读 · 0 评论 -
三个白帽 pwnme - k0 [fmtstr] - [Hijack RetAddr]
程序运行起来功能很简单:输入用户名密码、输出用户名密码、退出运行起来发现:这里可能会有个缓冲区溢出的漏洞,在输入用户名时可以超过20个,超过的部分成了密码进一步测试发现,该程序存在fmtstr漏洞在程序4008A6处提供了system("/bin/sh"),所以我们的思路是,劫持某个函数返回地址到这儿即可先来计算偏移:在这里下断Breakpoi...原创 2019-02-27 19:55:47 · 1177 阅读 · 2 评论 -
X-CTF Quals 2016 - b0verfl0w [Stack Pivoting]
学习资料:https://ctf-wiki.github.io/ctf-wiki/pwn/linux/stackoverflow/fancy-rop/#stack-pivoting为什么要使用?(1)栈溢出时,覆盖后剩下的栈空间不够写exp、ROP等溢出利用(2)开启了PIE,栈地址不固定,没法利用要求:可以控制EIP或ESP的至少一个,利用gadgets:pop esp...原创 2019-02-13 15:06:09 · 1105 阅读 · 0 评论 -
pwnable.tw start [stack]
题目网站:https://pwnable.tw/challenge/分析题目:在IDA下,还算是看得挺明显的,利用了0x80的syscall,即相当于执行了两个函数:syscall(write, 1, 0x14)syscall(read, 0, 0x3C)但是明显看到:在恢复堆栈的时候,代码是add esp, 14h,即存在缓冲区溢出意味着,我们在read时可以利用...原创 2019-02-13 15:53:34 · 257 阅读 · 0 评论 -
2018 - 安恒杯 - babypie [stack partial overwrite]
明显的是缓冲区溢出呀,read函数可以多读64位程序,开启了NX和PIE,且程序里有了system("/bin/sh")目标:控制RIP到A3E函数即可~首先,要处理canary的问题~然后,覆盖返回地址~partial overwrite:在开启了PIE后,无论高位地址如何变化,低位地址是不变的,意味着有概率“撞到”正确的地址exp如下:#!/usr/bin/e...原创 2019-02-13 22:36:51 · 1420 阅读 · 0 评论 -
2015-CSAW-contacts [fmtstr in heap]
先尝试着找到漏洞点:fmtstr在新建联系人时,如果在Description项中输入格式化字符串,在存在相应漏洞点然后对应到:先Create,再Display,并定位到相关函数程序开启了NX和Canary,来单步调试一下看看在漏洞点处发生了什么Breakpoint 1, 0x08048c22 in ?? ()gdb-peda$ stack 200000| 0xff...原创 2019-03-05 23:05:46 · 1296 阅读 · 1 评论 -
gdb工具pwndbg与peda与gef
在调试时有时候需要不同功能,在gdb下需要安装两个工具pwndbg和peda,可惜这两个不兼容pwndbg在调试堆的数据结构时候很方便peda在查找字符串等功能时方便安装pwndbg:git clone https://github.com/pwndbg/pwndbgcd pwndbg./setup.sh安装peda:git clone https://git...原创 2019-02-07 23:05:02 · 13926 阅读 · 5 评论 -
hackme re [helloworld simple passthis pyyy]
helloworld:拖入IDA里看一下就知道数了simple-rev:拖入IDA里看一下s = "UIJT.JT.ZPVS.GMBH"r = ""for i in s: r += chr(ord(i) - 1)print rpassthis:a = [0xC1, 0xCB, 0xC6, 0xC0, 0xFC, 0xC9, 0xE8, 0xAB, 0xA7, 0xDE,...原创 2019-02-06 11:32:05 · 714 阅读 · 0 评论 -
hackme pwn rop2 [syscall + rop]
先checksec一下:有个大概思路:rop过NXmain中和overflow函数里都有syscall函数,如下:观察到这里有缓冲区溢出!"A" * 0xC!先来学习syscall函数:syscall(int arg1, ……),为可变参数的函数,第一个参数为系统调用号,用以下命令查询:cat -n /usr/include/x86_64-linux-gnu/...原创 2019-02-05 23:12:45 · 564 阅读 · 0 评论 -
hackme pwn toomuch1 - buffer overflow
一开始看到这个漏洞还是蛮明显的~这里s的长度只有0x18个字节,然后用的是gets和strcpy来输入和传递,意味着没有长度限制与安全检查,所以可以直接缓冲区溢出来覆盖函数返回地址返回地址在ebp + 4,这里是ebp - 18中间的填充值也就好算了~和homework一样,这里有现成的函数重用代码如下:#!/usr/bin/env python# coding=utf...原创 2019-01-23 23:12:49 · 346 阅读 · 0 评论 -
RCTF 2015 welpwn [ROP] [x64通用gadgets]
先checksec一下:漏洞点其实蛮好找的:程序里也没几个函数main函数中read了一个字符串,然后当成参数传递给了echo函数在echo中的函数的接收buffer长度仅仅为0x10,而且是一个一个字符赋值的,栈缓冲区溢出漏洞,0x10 + 0x8 = 0x18个填充控制了ESP之后,程序开启了NX,一定想到的是ROP这里的基础知识是:http:/...原创 2019-01-26 23:12:26 · 828 阅读 · 0 评论 -
RCTF 2015 welpwn [ROP] [x64通用gadgets] [简单写法]
https://blog.youkuaiyun.com/u011987514/article/details/70232881按照自己习惯,代码重写一下:#!/usr/bin/env python# coding=utf-8from pwn import *io = process("./welpwn")#gadgetsp4r = 0x40089Cpr = 0x4008A3mai...转载 2019-01-26 23:27:22 · 400 阅读 · 0 评论 -
hackme pwn echo [format string]
题目名称就已经是很明显的提示了!echo ~ 提示:格式化字符串从IDA中看main:即可看到printf(&s)!漏洞原理部分:http://www.cnblogs.com/Ox9A82/p/5429099.html漏洞刷题提升:https://www.anquanke.com/post/id/85785https://www.anquanke.com/pos...原创 2019-01-31 22:28:07 · 505 阅读 · 0 评论 -
湖湘杯 pwn200(pwne) [format string]
网上随便找一下能够找到二进制文件和libc,这里就不贴了~在函数80485CD处有上图所示的printf漏洞checksec发现,32位程序,和hackme的echo不同的是,开了Canary和NX所以思路还是一样,先要泄露偏移值#!/usr/bin/env python# coding=utf-8from pwn import *context.log_lev...原创 2019-01-31 23:19:06 · 423 阅读 · 0 评论 -
hackme pwn rop [ROPgadget]
IDA找漏洞点很快 所以,栈溢出的偏移值为:0xC + 0x4 = 0x10因为开了NX,所以需要ROP~剩下的就是工具:ROPgadget --binary rop --ropchain原创 2019-02-01 13:17:49 · 578 阅读 · 0 评论 -
hackme pwn toomuch2 [buffer overflow + ROPx86]
checksec一下,发现啥保护也没有,不需要再找libc的版本了这里的漏洞点在toomuch1中说过了在toooomuch函数中,覆盖0x18+4个值,即可达到溢出效果下一步目标是:将"/bin/sh"写入bss段中,然后执行system函数即可类似x64平台,在x86中也有相似的通用gadgetsexp1:利用gets+system:#!/usr/bi...原创 2019-01-27 17:59:31 · 399 阅读 · 0 评论