Python
Reverse|[GWCTF 2019]pyre
pyc文件反编译 pcat.py 得到源码直接逆向即可 异或逆向: A ^ A =0,A ^ 0 =A 13、14行使code[i]=code[i]code[i+1],i从0取到l-1-1。处理后,code[l-1]没有变,那么要逆向,则令x从l-2取到0,使code[x]=code[x]code[x+1](abb=a)。 取模逆向: (a%c+b%c)%c=(a+b)%c 所以逆向为(in
Crypto|Buuctf 一张谍报
题目提示: 国家能源总部经过派出卧底长期刺探,终于找到一个潜伏已久的国外内鬼:三楼能源楼管老王。由于抓捕仓促,老王服毒自尽了。侦查部门搜出老王每日看的报纸原来是特制的情报。聪明的你能从附件的报纸中找出情报么?flag是老王说的暗号。(由于老王的线人曾今做的土匪,所以用的行话) 利用str2和str3得到str1中目标字符串的位置 脚本: 运行得到: 今朝梆子二更头,老鹰蹲猎东口,三更鼹鼠
Crypto|Buuctf RSA5
给了一个e , 然后给了一大批c和 n,写个脚本看了一下这些 , 发现这些n里面存在不互质的数对。从而这题就是模不互质攻击。 有最大公约数的n 所以n5和n18存在最大公约数 解密脚本
Crypto|Buuctf 达芬奇密码
分析发现数列为打乱的斐波那契数列,题目提示答案是一串32位十进制数字,猜测是按数列在斐波那契数列的位置更换字符串的顺序 第0位的1就在斐波那契数列第0位,所以3的位置不变,还在第0位。 第1位的233的位置在斐波那契数列第12位,所以6应该移到第12位。 脚本:
Crypto|Buuctf 大帝的密码武器
题目.txt 密文.txt 题目.txt提到的为凯撒密码,凯撒密码核心就是移位,所以可以爆破位移的位数 脚本: 最后可以看出来只有位移13位时像是一个单词,所以密钥为13,再对密文加密
Reverse|[GXYCTF2019]luck_guy
ida64打开文件,搜索字符串 进入please input a lucky number伪代码 输入数字进入patch_me(v4);,输入数字为偶数进入get_flag()函数 flag为f1+f2,f1已知为GXY{do_not_,所以需要求f2 switch case需要的顺序为:case 4、case 5、case 1 s = 9180147350284624745LL;
Web|Buuctf-[NPUCTF2020]ezinclude
查看源码提示md5($secret.$name)===$pass cookie中存在hash,hash随着name的变化而变化 hash填入pass参数请求跳转到404页面 使用burpsuite发包,提示存在flflflflag.php页面 flag不在此页面,并且页面存在文件包含漏洞 读取flflflflag.php页面源码 没有什么有用的信息,扫描一下目录看还有哪些文件 c
Web|Buuctf [NCTF2019]SQLi
直接给出了查询语句 构造语句查询,发现有过滤 fuzz一下,很多参数都被过滤 robots协议下发现hint.txt文件 hint.txt文件,有被过滤的参数,但是没有过滤"、|和,并且提示只要密码与admin的密码相同就可以获得flag 解题思路 无引号闭合:可以利用转义符 注释符#和-- -:%00作为截断字符可以代替 爆破字符:利用regexp(正则匹配)注入配合 ^ 盲注
Reverse|Buuctf reverse3
查壳为32位程序,使用32位ida打开 查询到rright flag字符 查看伪代码 输入一个字符串经过sub_4110BE函数进行加密,再通过一个for循环进行变换,然后与str2进行比较 sub_4110BE函数将3个字符变成4个字符,结合aAbcdefghijklmn的值,可以判断是base64 脚本
selenium--利用input标签上传文件
Selenium利用input标签上传文件 完整流程 打开文件上传页面 选择要上传的文件 点击上传按钮 确认文件上传成功 介绍怎么方便的获取对应元素的Xpath或者Css 简单介绍 在使用Selenium进行浏览器自动化测试时,文件上传是一个常见的需求。而 <input>标签就是实现文件上传功能的一个主要方式。以下是如何使用Selenium利用 <input>标签上传文
Reverse|Buuctf xor
程序为mac 64位应用,且未加壳,使用ida64位程序打开 查看快捷键查看字符串,发现flag字符,下方有个success,猜测是输入正确的字符串后会输出success 点击进入,查看伪代码 if ( strlen(v6) != 33 ),这里先判断字符长度是不是33位 for ( i = 1; i < 33; ++i ) v6[i] ^= v6[i - 1];,然后进行异或运算
Crypto|[BJDCTF2020]easyrsa
rsa_task.py 解析 已知c, z, n, e的值 求d即可求得m,所以最后需要求得p和q的 p和q可以由z求得 z=Fraction(1,Derivative(arctan(p),p))-Fraction(1,Derivative(arth(q),q)) 𝑧=$frac{1}{𝑎𝑟𝑐𝑡𝑎𝑛′(𝑝)}$ − $frac{1}{𝑎𝑟𝑡ℎ′(𝑞)}$ 其中𝑎𝑟𝑐𝑡𝑎𝑛′(𝑝)=$frac{
Crypto|[BJDCTF2020]RSA
task.py 解析 已知了两次输出的c和n,pow(294,e,n)值 要求m需要知道d,求d需要e、p和q的值 e可以根据pow(294,e,n)来爆破,也可以根据第二次的c和n来爆破 已知$n_1$和$n_2$的值,且$n_1$ = $p_1$q,$n_2$ = $p_2$q,所以$n_1$和$n_2$的最大公因数为q,可以根据$n_1$和$n_2$的值求得q,以求得p 求e 解密
Crypto|[NPUCTF2020]EzRSA
attachment.py 分析 gift = lcm(p - 1 , q - 1),lcm为求最小公倍数 因为:$最小公倍数(𝑝,𝑞) ∗ 最大公因数(𝑝,𝑞) = 𝑝∗𝑞$ 代入:$𝑔𝑖𝑓𝑡∗𝑔𝑐𝑑(𝑝−1,𝑞−1)=(𝑝−1)∗(𝑞−1)=𝜙(𝑛)$ 根据已知的数据𝑔𝑖𝑓𝑡 的二进制位数为2045,𝜙(𝑛)=(𝑝−1)∗(𝑞−1) 的位数为2048,可以计算得𝑔𝑐𝑑(𝑝−1,𝑞−1) 占
Crypto|[GWCTF 2019]BabyRSA
encrypt.py scret 分析 F1 = bytes_to_long(flag1)、F2 = bytes_to_long(flag2),只需要示到F1和F2就可以得到flag c1 = F1 + F2、c2 = pow(F1, 3) + pow(F2, 3),将两个等式相加再位移可列出等式, F1 + F2 - c1 = pow(F1, 3) + pow(F2, 3) - c2 根据
Crypto|[NCTF2019]babyRSA
task.py 解析 给出了e、d和c的值 p = getPrime(1024)、q = nextPrime(p),p和q是1024个bit位的素数,并且p和q相邻 m = pow(c,d,n),c、d已知所以需要求n n=pq,所以求p和q即可 根据rsa的公式:ed = 1 mod (p-1) ∗(q-1) 可得:ed - 1 = k * (p-1)(q-1) 根据已知的e和d求得ed
Crypto|[AFCTF2018]可怜的RSA
public.key flag.enc 读取public.key 读取public.key获取e和n 也可使用在线工具读取 分解n 使用factordb分解n 解析明文 查看flag.enc可以发现密文是经过base64加密的,需要base64解码才能解析
编程语言的通用架构——不同的编程语言之间是否存在共性或者说共通之处?能否学会一种编程语言之后,即可触类旁通的学会其它编程语言?
本文重点解决如下问题:不同的编程语言之间是否存在共性或者说共通之处?能否学会一种编程语言之后,即可触类旁通的学会其它编程语言?即本文重点描述了不同编程语言之间的通用架构。需要指出的是,为便于读者理解,使用了编程语言的通用架构这一说法,实际上要归纳出种类繁多的编程语言的通用架构是非常困难的,这里将编程语言的通用架构理解为编程语言之间的共性更为合适。归纳和掌握不同编程语言之间的共性的目的是为了做到触类
node/npm的使用
使用node命令 打开终端输入node,之后输入console.log()可以向控制台输出指定字符串,如下图所示: 如果想要运行一个脚本文件也可以将js代码编写到文件中,执行node指令也是一样的,如下图所示: Node.js模块 在编写大型项目时,为了提高代码的复用,会将项目进行模块化,在node.js中,一个文件对应一个模块,导入时可以根据文件路径导入不同的模块。 exports对象 ex
消息队列Rabbitmq介绍、rabbitmq安装、基于queue实现生产者消费者、基本使用、消息安全(详见笔记)、持久化(详见笔记)、闲置消费(详见笔记)、发布订阅(详见笔记)、发布订阅高级之Routing(按关键字匹配)(详见笔记)
目录1 消息队列Rabbitmq介绍2 rabbitmq安装3 基于queue实现生产者消费者4 基本使用4.1 发送者4.2 消费者5 消息安全(详见笔记)6 持久化(详见笔记)7 闲置消费(详见笔记)8 发布订阅(详见笔记)9 发布订阅高级之Routing(按关键字匹配)(详见笔记) 1 消息队列Rabbitmq介绍 2 rabbitmq安装 3 基于queue实现生产者消费者 4 基本
python IO多路复用理解记录
一、 简述: 1什么是多路 I/O 复用机制 Python 中的多路 I/O 复用机制是一种高效的编程技巧,用于同时监视多个文件描述符是否有可读、可写或错误事件,并在这些描述符中任意一个或多个有事件发生时立即进行响应。 2 使用多路I/O 复用机制的目的 同时处理多个连接时提高网络I/O效率,从而提高程序的整体性能。 3 适用场景 各种 I/O 密集型应用程序的编程。 二、
使用python脚本传递参数:(三种方式可收藏)
背景:使用python脚本传递参数在实际工作过程中还是比较常用,以下提供了好几种的实现方式: 一、使用sys.argv的数组传入说明:使用sys.argv必须按照先后的顺序传入对应的参数;sys.argv则封装了传入的参数数据,作为数组的方式已经传入 通过命令行查看运行结果: 二、使用argparse包传入 说明:parser.add_argument 方法的type参数理论
WEB|[SUCTF 2019]Pythonginx
源码 大概意思是,获取ur主机地址不能是suctf.cc,但是分割idna重新编码后主机地址需要又是suctf.cc urlsplit, urlparse简单区别 urlsplit是拆分,而urlparse是解析,urlparse粒度更为细致 idna与utf-8编码漏洞 国际化域名(Internationalized Domain Name,IDN)又名特殊字符域名:指部分或完全使用特殊
Python编程基础
(应试用) Python是一种面向对象的计算机程序设计语言。 智慧医学语言课程使用主流操作系统Windows下的Python 3.6.8版本。 Pycharm是一款功能强大的用于Python程序开发的的集成开发环境。 Python函数包的安装 Python函数包在windows系统下的安装,可以首先运行命令窗口(WIN+R,输入cmd),使用如下命令安装: pip install Python
rpc介绍、python实现rpc、rabbitmq实现rpc、远程链接linux开发、Elasticsearch介绍
目录今日内容1 rpc介绍2 python实现rpc2.1 内置的2.2 zeroRpc3 rabbitmq实现rpc4 远程链接linux开发5 Elasticsearch介绍 今日内容 1 rpc介绍 2 python实现rpc 2.1 内置的 2.2 zeroRpc 3 rabbitmq实现rpc 4 远程链接linux开发 5 Elasticsearch介绍
WEB|[De1CTF 2019]SSRF Me
页面代码为python代码,题目提示为SSRF,并且flag is in ./flag.txt 格式化代码 代码审计 代码中有三个路由 @app.route('/'),读取本地code.txt文件 @app.route("/geneSign", methods=['GET', 'POST']),根据param、action和secert_key参数调用getSign()方法计算出一个值sign
WEB|[WUSTCTF2020]颜值成绩查询
页面提示输入以查询分数,输入1,链接发现?stunum=1猜测应该是注入 输入2 输入3 输入4 最多输入到4,可以看到输出显示的内容不一样,可以利用这一点进行注入 payload: 如果表名的第一个字符为f值就为1否则就为2,为1显示stunum=1页面,为2显示stunum=2页面 测试一下,没得问题 编写脚本 爆表名 爆字段 爆数据 得到flag