新手
Hush^
这个作者很懒,什么都没留下…
展开
-
PwnCollege shellcode第一章
课程https://www.youtube.com/watch?v=715v_-YnpT8漏洞程序 hello.cvoid bye1(){ puts("Goodbye!"); }void bye2(){ puts("Farewell!"); }void hello(char * name ,void (* bye_func)()){ printf("Hello , %s\n",name); bye_func();}int main(int argc,char **argv){ ch原创 2022-05-17 14:49:28 · 747 阅读 · 0 评论 -
kernel ROP - 2018 强网杯 - core
初学kernel,做个笔记。Kernel ROP - CTF Wikiwiki上有着详细的分析,这里只对一些wiki上没有讲到的做个笔记。首先是对文件:引用一句其他师傅的话:类比于libc中的pwn,感觉*.ko就是binary文件,vmlinux就是libc … 不同的是保护机制是由如何启动决定的(start.sh 中修改)。Rop大体思路:栈上有Canary防护的话,需要先泄露出Canary,来促使RopRop具体思路是和Libc中的类似,利用一些寄存器进行传值调用com原创 2022-05-09 19:48:25 · 195 阅读 · 0 评论 -
swpuctf2019 p1KkHeap
做一下笔记。这道题的限制还是挺多的。版本不低不高2.27限制:1.Delete 3次限制2.程序只能进行18次增删改查3.有UAF和Double free4.2.27不包含对tcache的double free 检查机制5.exec被禁用。但是有一片可读可写的内存空间用以shellcode要点:1.通过double free 可以快速的从tcache bin 中绕过。 方法是:double free 同一块,此时count为2。之后create3次相同大小的chunk。2-3原创 2022-04-17 20:30:10 · 202 阅读 · 0 评论 -
Kernel内核第一道KernelUAF
CISCN2017 - babydriver详细分析请移步kernel UAF - CTF Wiki,文章用作记录。1.KVM问题:KVM是虚拟化技术,有的机器可以通过bios中打开VT开启。但是我CPU i7-10875H并不支持。但这并不影响执行boot.sh启动Qume。只需要把boot.sh 中有关KVM那一行选项删掉即可。2.exp分析:CISCN2017_babydriver [master●●] cat exploit.c #include <stdio.h>原创 2022-04-17 17:42:58 · 141 阅读 · 0 评论 -
roarctf_2019_easy_pwn
没有UAF,但是存在着off-by-one所以先add(0x18)#chunk0和一个(0x10)#chunk1,add(0x90),add(0x10)为什么是0x18?因为0x18会开辟一个共0x20的chunk,一开始我也以为是一个0x30的大小,但是在chunk结构中 0x560df2c462b0 -0x560df2c462b8 这片区域中也会被chunk0使用。这样才能更接近chunk1的size域,对其进行攻击。所以,根据上面的off_by_one修改chunk1的si...原创 2021-07-30 15:20:22 · 359 阅读 · 0 评论 -
[BUUCTF]PWN——roarctf_2019_easy_pwn
白天睡觉,晚上来写道题。这道题涉及了unsortedbins,malloc_hook,堆溢出。heap的菜单选项常规题,做到目前为止,主要是两个思路:先check,根据RELRO。如果为full,那么就需要malloc_hook。如果为partial,就直接更改got表就可以了。在create函数中可以明显看出来这是个结构体一个结构体有24个字节,前8个为标志位,中间8个size位,后8个是alloc出来的chunk的指针。(alloc和malloc不同的是 alloc的fr原创 2021-07-29 04:57:39 · 290 阅读 · 0 评论 -
npuctf_2020_easyheap
这题的结构,像是hacknote 和之前一个easyheap的融合。但是漏洞利用手法不太一样。之前的一个easyheap是利用fastbin里面的一种漏洞。伪造一个fake chunk。(这道题的原因是因为,就算伪造了一个fake chunk ,我们malloc时也无法利用它)这次的漏洞:是将control chunk 和content chunk 对调,然后对control chunk攻击。from pwn import *elf = ELF("./npuctf_2020_easyhea原创 2021-07-27 11:54:26 · 279 阅读 · 0 评论 -
ex2(canary绕过)
先上IDA看一波反汇编原创 2021-05-25 23:59:31 · 489 阅读 · 0 评论 -
ciscn_2019_c_1
第一次写到ret2libc,记个笔记加深印象。F5反汇编main函数后,会让我们选择函数。我们注意到encrypt函数中存在着gets(s) 栈溢出漏洞。但是并没有存在system函数,所以我们不能直接利用。所以我们要用ret2libc技术,先考虑泄露libc基地址。在mian和encrypt函数中都出现了puts函数我们知道根据延迟绑定技术:plt表中的函数如果没有被调用过,那么got表中该函数的对应项则指向plt表的第二行指令。当完成了第一次调用后,got表中会存放原创 2021-05-25 00:15:00 · 377 阅读 · 1 评论 -
[GXYCTF2019]Ping Ping Ping 1
打开后空空如也,随便输入1;ls 开始尝试直接cat flag尝试啊 这... 看样子是空格被屏蔽了********************记一下几种空格绕过方法 1 ${IFS}替换 2 $IFS$1替换 3 ${IFS替换 4 %20替换 5 <和<>重定向符替换 6 %09替换试..原创 2021-04-26 23:35:48 · 104 阅读 · 0 评论 -
P1025 [NOIP2001 提高组] 数的划分
有两种方法 :1.DP(也可以说是递推法):2:DFS对于递推法:我们用二维数组M[i][j] 来表示 i个数分成j份有多少次分法,这样我们递推下去,M[n][k]就是所求结果递推关系: M[i][j]=M[i-1][j-1]+M[i-j][j];其实就是 对于每次i所加的1 让他去哪,第一种方法,让这个1单独为1组,就是M[i-1][j-1];还有就是让 每一组都加上1来改变分组情况 就是M[i-j][j];#include<bits/stdc++.h&...原创 2021-03-26 15:23:21 · 115 阅读 · 0 评论 -
信息传递(dfs)
题目描述有 n 个同学(编号为 1 到 n)正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为TiTi的同学。游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息,但是每人只会把信息告诉一个人,即自己的信息传递对象)。当有人从别人口中得知自己的生日时,游戏结束。请问该游戏一共可以进行几轮?输入格式输入共 2 行。第 1 行包..原创 2021-03-25 17:49:27 · 337 阅读 · 0 评论 -
彩票(深度优先搜索)
题目描述有一种彩票的玩法是从1~49这49个整数中挑选6个数字。小明为此研究出一个选号的策略,就是从这49个数字中选出一个子集S,S中包含了k(k>6)个数字,然后从S中再选择6个数字作为最终选定的号码。你的任务是,给你k和集合S,输出从S中选择投注号码的所有组合。输入输入包含多组测试数据。每组输入首先是一个整数k(6<k<13)。然后是k个整数,表示集合S,这k个整数按升序给出。当k=0时,输入结束。输出对于每组输入,输出所有的投注组合,每行一种,每种按..原创 2021-03-19 12:48:29 · 437 阅读 · 0 评论 -
[luogu p1127] 词链
问题 E: 词链时间限制:1 Sec内存限制:128 MB提交:10解决:4[提交] [状态] [讨论版] [命题人:201824100354]题目描述给定一个仅包含小写字母的英文单词表,其中每个单词最多包含 50 个字母。如果一张由一个词或多个词组成的表中,每个单词(除了最后一个)都是排在它后面的单词的前缀,则称此表为一个词链。例如下面的单词组成了一个词链:iintinteger而下面的单词不组成词链:integerintern请在给定的单词...原创 2021-03-17 10:51:01 · 214 阅读 · 0 评论 -
非负权变单源最短路
题目描述给一个n(1≤n≤2500)个点m(1≤m≤6200)条边的无向图,求s到t的最短路。输入格式第一行四个由空格隔开的整数n、m、s、t。之后的m行,每行三个正整数si、ti、wi(1≤wi≤1e9),表示一条从si 到ti长度为wi的边。输出格式一个整数表示从s到t的最短路长度。数据保证至少存在一条道路。样例输入7 11 5 42 4 21 4 37 2 23 4 35 7 57 3 36 1 16 3 42 4 35 6 37 2 ..原创 2021-03-04 16:01:08 · 403 阅读 · 1 评论 -
动态规划:数字组合
这是一道01背包模型题。区别在于 01背包求的是 max,也就是 max(dp【j】,dp【j-a[i]】);而这道题求的是 count,也就是 在和为m时,有多少种拿法,也就是 dp【j】+=dp【j-a-[i]】;#include<iostream>using namespace std;int a[100010];int n;int m;int f[1000010];int main() { cin >> n >> m; for...原创 2021-02-10 17:03:57 · 309 阅读 · 0 评论 -
P2024 [NOI2001]食物链
题目描述动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述:第一种说法是“1 X Y”,表示X和Y是同类。 第二种说法是“2 X Y”,表示X吃Y。此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。当前的话与原创 2021-02-03 21:12:22 · 160 阅读 · 1 评论 -
出栈合法性
题目描述已知自然数1,2,...,N(1<=N<=100)依次入栈,请问序列C1,C2,...,CN是否为合法的出栈序列。输入输入包含多组测试数据。每组测试数据的第一行为整数N(1<=N<=100),当N=0时,输入结束。第二行为N个正整数,以空格隔开,为出栈序列。输出对于每组输入,输出结果为一行字符串。如给出的序列是合法的出栈序列,则输出Yes,否则输出No。样例输入53 4 2 1 553 5 1 4 20样...原创 2021-02-02 21:05:48 · 567 阅读 · 0 评论 -
划分数列
【问题描述】给你一个有n个正整数元素的数列,要求把它划分成k段,使每段元素和的最大值最小。【输入格式】sqea.in输入第一行两个正整数n,k第二行为此数列ai。【输出格式】sqea.out一个数,表示每段元素和的最大值最小的那个数。【样例输入】5 22 1 3 4 5【样例输出】9【数据范围】n <= 100000, k <= n, 0<=ai <= 109talk is cheap,show me your code`#include<iost原创 2021-01-31 03:00:45 · 827 阅读 · 2 评论 -
NOIP2012提高组day2第2题 借教室
题目描述 在大学期间,经常需要租借教室。大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。 面对海量租借教室的信息,我们自然希望编程解决这个问题。我们需要处理接下来n天的借教室信息,其中第i天学校有ri个教室可供租借。共有m份订单,每份订 单用三个正整数描述,分别为dj,sj,tj,表示某租借者需要从第sj天到第tj天租借教室(包括第sj天和第tj天),每天需要租借dj个教室。 我们假定,租借者对教室的大小、地点没有要求原创 2021-01-30 21:34:41 · 233 阅读 · 0 评论 -
PTA整除光棍
L1-046 整除光棍 (20分)这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。提示:一个显然的办法是逐渐增加光棍的位数,直到可以整除x为止。但难点在于,s原创 2021-01-20 23:09:04 · 319 阅读 · 1 评论 -
攻防世界re1 writeup
初入ctf,尝试做了一道题,深有体会,写一篇博客记录一下!1 查壳 :无壳,32位2;ida打开程序,找到main函数,按下F5反汇编;3;阅读一下发现是对比v5,v9,若v5相等,即v3=0则进入flag get。若不等于0,则v3会进行运算使v3!=0,得到ps:_mm_storeu_si128((__m128i *)&v5, _mm_loadu_si128((const __m128i *)&xmmword_413E34));(给自己记个笔记)原创 2020-11-18 10:39:08 · 367 阅读 · 2 评论 -
2020-11-08
本人大一新生,初次接触编程,记录一下自己的学校oj题解。C语言-报数:题目描述有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。输入初始人数n输出最后一人的初始编号;样例输入3样例输出2对于这种题目,我本人很菜,对于代码的理解还没有规范,做题也很少。用的方法也很普通。希望大哥们指点,交流#include <stdio.h>#include<str...原创 2020-11-08 22:58:10 · 180 阅读 · 1 评论