自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 Python大整数的小数次方的计算(Decimal使用)

Python大整数的小数次方的计算

2021-11-19 00:09:07 5658 3

原创 2021【陇原战“疫”】crypto部分writeup

这次BUUCTF月赛对我来说确实还行了,不会太难,也能学到东西,主要想说说比特翻转攻击的问题,最近这种题碰的特别多,CBC的,CFB的,GCM的,各种各样的AES模式的攻击问题,从最基本的CBC开始,系统地搞个专题。这次月赛的全面wp请看2021陇原战疫WP - n03tAck我比较菜,就把简单的题细说下。mostlycommon不想多说,简单的共模攻击,只是两个加密指数的最大公因数是2,最后得到的结果开个平方就是flag了。Civet cat for Prince(比特翻转攻击)

2021-11-09 15:40:18 1019

原创 Crypto RSA中的数学技巧

闲聊两句之前做到[GKCTF 2021]RRRRsa的时候遇到过这种问题,就是去构造hint和p,q的关系,感觉也没啥好说的,就是去想、去试,当时也没啥记录,没想到这次2021东华杯遇到了老朋友,感觉有必要写篇文章总结下了。问题解析先看[GKCTF 2021]RRRRsafrom Crypto.Util.number import *from gmpy2 import gcdimport gmpy2flag = b'xxxxxxxxxxxxx'p = getPrime(512)..

2021-11-02 16:24:21 3797 1

原创 莲城杯MT19937_64

题解考的是MT19937,从输出中弹出了第375个随机数,每个随机数为64bit,是足够还原states的,一般情况下对这种问题直接通过624个32bit的out推出用来生成他们的states,然后依据states推出下一轮的states用以生成下一轮的out,发现少了哪个补上哪个就好。但是在这里情况稍有不同,原来用的预测脚本如下:from random import Randomo = 99999999999999999999999999999999999999999999999999999

2021-10-14 20:18:57 885

原创 [羊城杯 2020]GMC题解

def gen_y(gN): gy_list = [] while len(gy_list) != F_LEN: ty = getRandomNBitInteger(768) if gcd(ty,gN) == 1: gy_list.append(ty) return gy_list刚做这道题看到上面的getRandomNBitInteger()函数,不自觉地网MT上靠,但是发现有一个神出鬼没的x存在,让我根本还原不了6...

2021-10-06 20:39:03 2596 1

原创 [GKCTF 2021]XOR

简介这题和之前做的dfs类似,算是个高级版的爆破吧,是个挺好的例子,前面的脚本可以解决第一部分,5space signin(未知低位的dfs和coppersmith)_a5555678744的博客-CSDN博客在这里就不赘述了。重点来说说本题的第二部分。题解参照知乎大佬的算法,自己手敲了个自己比较容易看懂的版本[GKCTF] GKCTF x DASCTF应急挑战杯 个人(or团队) Crypto方向 writeup - 知乎from Crypto.Util.number import

2021-09-30 00:03:56 2303

原创 CVE-2017-17215(华为HG532远程命令执行漏洞)复现问题与解决方案

环境准备:qemu环境的准备:可以看freebuf上大佬的博客通过CVE-2017-17215学习路由器漏洞分析,从入坑到放弃 - FreeBuf网络安全行业门户d注意事项:1.最好就用Ubuntu16.04,不要问我为什么知道的,强上Ubuntu20.04留下的只有泪。2.上面这一步中可能遇到qemu-ifup这个文件本身就存在的问题,建议备份之后删掉重写成博客中那个样子。3.博客中从eth0切换到eth1的操作好像是必定要做的,但是我遇到了一个严重的问题,q.

2021-09-29 23:28:12 1552

原创 DASCTF Sept X 浙江工业大学秋季挑战赛rsa1

这道题其实比较经典,最早应该是出现在2016年的HCTF,出题的思路可以参照这篇博客2016 HCTF Crypto 出题总结#! /usr/bin/env python# -*- coding: utf-8 -*-# from flag import get_flagfrom hashlib import sha512import randomfrom Crypto.Util.number import long_to_bytes, getPrime, bytes_to_longf

2021-09-26 00:08:14 891

原创 2021长安杯 easyRSA

def add(a,b): if(a<b): a0 = str(b).encode() b0 = str(a).encode() else: a0 = str(a).encode() b0 = str(b).encode() ans = 0 for i in range(len(a0)-len(b0)): ans = ans*10+a0[i]-48 for i in range(l.

2021-09-25 23:04:03 514

原创 长城杯baby_rsa题解

from Crypto.Util.number import *from secret import flag, v1, v2, m1, m2def enc_1(val): p, q = pow(v1, (m1+1))-pow((v1+1), m1), pow(v2, (m2+1))-pow((v2+1), m2) assert isPrime(p) and isPrime(q) and ( p*q).bit_length() == 2048 and q < .

2021-09-24 23:22:18 1073

原创 2021羊城杯 Rsa?题解

yafu分解n很快就可以得到p,q但是没什么用仔细观察getloop可以找到像杨辉三角类似的结构其中x1是其中的奇数项和,y1是其中的偶数项和实际上最后得到的x1和y1满足((X+aY)^65536)mod n=(s1 + a*s2)mod n随后根据a = ((inv_Z1-X)*inv_Y)%n ,得知(s1 + a*s2)mod n就是inv Z1随后算出Z1,得到X最后Y =(n+x_add_ay-X)*gmpy2.invert(a,n)%n得到flag...

2021-09-24 21:07:59 399

原创 5space signin(未知低位的dfs和coppersmith)

from Crypto.Util.number import*c = 634883169316521652837689136938162547928965634141885739610106933307751437750309132172808903946590498145705068008696587981997669192797966993873489339809024374754073211864959722070552652664989977138936777892539487744598391.

2021-09-24 20:54:55 438

原创 sage第三方库导入问题

在CTF Crypto方向上,总是会遇到很多sage脚本,有很多很熟悉的python库想调用却成了个难题,或者说大佬写的wp会因为用了python的第三方库而运行不了,这本来是不应该的,sage本身就是基于python写的,内部都有python环境,本来想着是要用pycharm来运行sage程序,但是发现这个在windows上实现是比较困难的,建议在liunx上尝试。本文主要介绍在windows环境下,如何流畅的运行含有python第三方库的sage程序。方法一:pip大法好具体来说就是sage c

2021-09-23 00:11:58 6755 1

原创 [DASCTF八月挑战赛]easymath题解

DASCTF八月赛的Crypto方向,拿下其他两道题很简单,但是这道最多人解出来的题反而解不出来。打完比赛回来看其他师傅写的wp,说是这是TSGCTF原题,所以直接放弃思考,上大佬的wp,我看看大佬这个wp,感觉这题还是有点东西的,里面涉及的基础的一些数学知识还是值得总结总结。题目assert(len(open('flag.txt', 'rb').read()) < 50)assert(str(int.from_bytes(open('flag.txt', 'rb').read...

2021-08-31 15:31:17 848 1

原创 XCTF夏令营选拔赛TooooomanyRSA题解

先看一道类似题目的题解,这是2020羊城杯的simple:引用自:https://blog.csdn.net/jcbx_/article/details/109306542from Crypto.Util.number import *from gmpy2 import invertc = 6472367338832635906896423990323542537663849304314171581554107495210830026660211696089062916158894195561

2021-08-07 10:41:44 429

原创 BUUCTF[SCTF2019]Who is he题解

简介一道unity逆向题,这个unity本身嘛。。虽然不是重点,但是各位师傅看的时候千万别喝水。话说回来,虽然是unity逆向,但是这道题有点特例独行,一般unity的关键信息都会放在assembly-Csharp.dll里面,这道题看似也不例外,但是得到的却是假答案。真正的答案需要依靠动态调试来慢慢找。题解先运行下程序啊这。。随便输入点什么,发现会发一个info:emmmm。。。。这样的提示把exe拖进x64debug由于是unity的程序,直接查字符串不一定管

2021-07-01 00:29:33 587 1

原创 全国大学生信息安全大赛线下赛crypto3题解

打比赛收获挺大的,虽然主要是AWD的经验增长,但解题赛里也是有道有趣的题的。首先看看题目,其实数学基础比较厚实的话,题目思路出的应该挺快,不过中间有两座计算大山,当时一时没搞出来,但是回头想想还是出来了。各位师傅可以先看看,说不定可以直接搞定呢。from random import *from sympy import nextprimefrom serct import flagdef Printprime(bits): A1=getprime(bits) A2=getprime(b

2021-06-28 22:35:01 951 3

原创 [CISCN2018]sm题解

简介这道题比较老了,但是质量还是不错的,本来应该是跟SM加密方式有关的,但是脚本能直接读懂,那就不必再去查了。题解分析函数首先分析一下题目的代码,从运行的顺序来逐个分析函数直接调用的函数是run()这个函数内部最关键的是这个key,这是AES加密的密钥,有了key,才能从ef中的密文还原出flag。再看key的来源:虽然有一大串式子,但是都是在以固定的方式变换形式,真正影响key的只有choose这个变量。顺势就看看choose怎么求:仔细看这段代码,大概意思是,从前往后遍历cho

2021-06-25 09:31:39 1015 1

原创 [羊城杯 2020]Power题解

简介看网上很缺这道题的资料,姑且写一篇给师傅们看下吧,这道题步骤简单但是还是有点有意思的东西在里面的题解初步分析from Crypto.Util.number import *import gmpy2import sympyfrom secret import flagp = getPrime(512)q = getPrime(512)n = p**4*qe = 0x10001phi = gmpy2.lcm(p - 1, q - 1)d = gmpy2.invert(e

2021-06-08 23:14:27 3251 4

原创 [羊城杯 2020]RRRRRRRSA 题解(wiener attack运用)

简介自己写脚本搞定这道题有助于理解wiener attack,在多种关于RSA攻击方法中,这种方法算是比较难理解的一种,本题设计还是比较有意思的,算是该攻击方式的一个灵活运用,单纯依靠现成脚本也是不行的,必须学会wiener attack的原理才能顺利解决该问题。原理阐述wiener attack 是依靠连分数进行的攻击方式,适用于非常接近某一值(比如1)时,求一个比例关系,通过该比例关系再来反推关键信息就简单很多。这种攻击对于解密指数d很小时有很好的效果,一般的用法是通过ed mod phi(N)

2021-06-08 15:24:00 3426 7

原创 [XNUCA2018]baby_crypto题解

简介本题是重合指数问题中经典问题,建议各位师傅能够独立写解密脚本亲测,真的非常有帮助!!废话也不多说了,解这题的方法稍有不同,与网上流传的wp有一定区别,对技术原理有兴趣的师傅一定不要错过。接下来,看题!题解题目给了个伪代码The 26 letters a, b, c, ..., y, z correspond to the integers 0, 1, 2, ..., 25len(key_a) = mlen(key_k) = nc[i] = (p[i] * key_a[i % m] +

2021-06-07 00:15:48 30765 2

原创 [watevrCTF 2019]ECC-RSA 题解

简介刚开始解除ECC,先去补了点基础知识,建议想搞懂相关基础理论的朋友们可以参考这位师傅的博客,解决这道题这些理论绰绰有余了https://blog.csdn.net/sitebus/article/details/82835492了解基础知识之后这道题的分析其实不是很难分析算法逻辑from fastecdsa.curve import P521 as Curvefrom fastecdsa.point import Pointfrom Crypto.Util.number imp

2021-06-05 00:25:42 1986

原创 [De1CTF2019]babyrsa writeup

总述对于学习RSA来说,这道题无疑是很好的教材,这道题集合了许多常考的RSA的出题点,前三步解密较为简单,但是第四步有一定难度,要想做出来得费不少功夫。总而言之是一道很不错的Crypto题。题解第一步最上面一层给了4组n和c,中国剩余定理估计是八九不离十了,而且这里用的lambda函数希望对python不熟悉的可以去查一下了解一下,算是一个很方便的小函数创建,也经常在Crypto的py脚本中出现。中国剩余定理的python脚本如下:import gmpy2import mat

2021-05-27 00:39:07 2296 6

原创 【Neepuctf】Crypto部分writeup

Crypto方向1.RSA先看一下代码,分析一下逻辑,要想得到flag,不仅要知道n的分解方式,还需要知道e是多少,那么把目标分解为两步,而这两者都和encode(p,q,e)有关。分析到encode(p,q,e)里面,发现这个函数里面,S是e的模逆,(m*e-1)%(p+1)==0那么就知道一定要先搞定m和e就可以搞定p了求e的过程这是明显的padding Oracle攻击可以用富兰克林算法搞定注意以下脚本并非python脚本而是sagemath脚本,需要在sag.

2021-05-24 00:21:15 879

原创 [Zer0pts2020]easy strcmp细节探究

这道题大多数的wp不知道这个程序是怎么跑的。这道题是由一个知名的日本战队zer0pts出的,还是挺新颖,挺有意思的总体感知首先来看看ida里的情景这就是main函数的所有了,很简单,感觉啥也没有,输入那串用于比较的字符当然是没用的。那就看看a1是不是在之前有加密,调交叉引用到start函数但是从这里找也没找到加密,所以,此题暗藏玄机呀。函数挺少的,注意看下来不难发现下面这个函数绝对是加密函数很多wp做到这里就结束了,但这不够!实现细节分析交叉引用说明.

2021-03-22 21:16:24 638 2

原创 攻防世界XCTF 3rd-RCTF-2017 easyre153学习笔记

找到的博客对这道题的描述太少太跳了,其实这道题还是有不少细节的。首先查壳,发现upx壳,同时是32位的elf文件放到虚拟机里脱壳upx -d filename脱壳之后再用ida打开,看到如下的main函数关键函数其中有两个函数比较麻烦:pipe()和fork()根据网上其他大佬对这两个函数的解释,我简单分析了一下在这里的作用首先说一下pipe(管道)函数:顾名思义的“管道”,相信用过linux操作系统的大都用过“|”(管道符号),这个函数在这意思也是相近的,

2021-03-13 00:04:19 412 4

原创 BUUCTF[GWCTF 2019]xxor学习笔记

总体结构:首先找到main函数,结构很清晰前半段是输入和初始化后半段开始着手加密最后给出相应的输出逐步分析:首先在liunx中运行程序(注意要使用64位版本的liunx系统,后缀是AMD64的那种)由题目给的这些字串可以得知,我们要输入六个数据来玩一个猜数游戏这六个数据仔细分析就会发现就是v6,v6的每个元素占据4个字节然后跟踪v6的行踪,仔细分析与v6有关的加密代码这里dword_601078是取了每个v6元素四个字节中的后两个字..

2021-03-03 19:22:23 1878 3

原创 [ACTF新生赛2020]Universe_final_answer学习笔记

[ACTF新生赛2020]Universe_final_answer题目重述熟练地打开main函数程序的意思很明显:就是做一个判断,如果通过了就给你flag,但是可以看到,输出里面有两个%s而后面只有一个对应参量,这么说另一个隐藏起来的就不能单纯靠静态分析解决了。关键函数这里很显然sub_860是关键函数,只要它判断成功了,问题就得到解决了这个乍一看挺吓人的,但是分析问题要先总体分析,这么一些v1-v10的参数,乘上参数线性组合得到一个值,这不就是矩阵吗?跟着这个思路,.

2021-02-10 23:35:35 641

原创 [GUET-CTF2019]number_game学习笔记

此题一开始让我疑惑的地方就是那些递归算法的逆向问题,最后到底会生成哪些元素,我自己分析甚至最后生成的字符数量都不对,其实还是没法很清晰地分析递归算法的结果,另外就是对一些特殊的形式还是不够敏感,比如这串代码这个递归有两层,分别是2*a+1和2*a+2,前面还有个直接赋值的,这不是有点像前序遍历吗?题目中出现的加密都不是毫无章法的加密,看到一个加密算法的时候要先将它和已知的加密算法向比较,先从整体理解再深入到细节中,直接分析细节容易让认识片面,只知道一些自己推出来的结论。题目开始显然这里.

2021-02-07 00:10:23 1192 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除