博客文章汇总(目录)
文章逐渐增多,为了查阅方便,增加一个目录。
可以通过下面的索引跳转相应的文章,本目录会实时更新。
技术文章
强制下载某钉直播回放
编程C/C++
C语言实训 - 万年历(包括公农历转换)
快速入门C++(一):类
快速入门C++(二):函数重载与运算符重载
快速入门C++(三):构造函数和析构函数
快速入门C++(四):封装、继承和多态
Java
浅谈Java面向对象三大特性:封装、继承和多态
算法算法笔记算法笔记(一):位运算
算法竞赛进阶指南例题(一):位运算
题解报告
训练联盟热身训练赛(一)题解报告
训练联盟热身训练赛(二)题解报告
训练联盟热身训练赛(三)题解报告
ACM队内Rating赛题解报告(一)
ACM队内Rating赛题解报告(二)
ACM队内Rating赛题解报告(三)
ACM队内Rating赛题解报告(四)
ACM队内Rating赛题解报告(五)
ACM队内Rating赛题解报告(六)
ACM队内Rating赛题解报告(七)
ACM队内Rating赛题解报告(八)
ACM队内Rating赛题解报告(九)
ACM队内Rating赛题解 ...
攻防世界Pwn进阶区—forgot
预备知识本题涉及到的知识点:
栈溢出(ret2text)
程序分析
使用checksec查看保护情况:
32位程序,开启了NX保护。
12345Arch: i386-32-littleRELRO: Partial RELROStack: No canary foundNX: NX enabledPIE: No PIE (0x8048000)
运行程序,首先输入昵称,然后输入邮箱。
拖入IDA分析。发现main函数很复杂,有一堆指向函数的指针。
继续分析,我们可以找到后门函数,system(“cat flag”)。
利用思路覆盖函数指针第一个输入点不存在漏洞,第二个scanf(“%s”, v2)存在栈溢出漏洞。
并且,程序末尾有 (*(&v3 + –v14))(); 执行函数的命令。
我们可以将v3当作基址,v14为偏移量。通过scanf,我们可以覆盖v3—v12之间的任意地址。
于是,我们可以覆盖v3的地址为后门函数的地址,然后让v14 = 1即可执行后门函数。
控制函数返回0通过分析,我们发现,只要让下面的函数返回 ...
攻防世界Pwn进阶区—Stack2
预备知识本题涉及到的知识点:
栈溢出(ret2libc)
动态调试
程序分析
首先,使用checksec查看保护情况。
32位程序,开启了Canary和NX保护。
12345Arch: i386-32-littleRELRO: Partial RELROStack: Canary foundNX: NX enabledPIE: No PIE (0x8048000)
运行程序,首先输入数字数量,然后依次输入数字。随后出现程序菜单。
拖入IDA进行分析。程序通过while循环不断执行菜单里的功能。没有发现太明显的漏洞。
经过分析,发现一处增加数字功能,在往数组写入时没有检查边界。
通过该函数,我们可以实现任意地址写数据。
继续分析,可以发现存在一个后门函数:hackhere。
不过该函数调用system(‘/bin/bash’),服务器环境没有提供bash命令。
我们可以利用system函数,直接执行system(‘sh’)。
利用思路动态调试计算偏移地址写入system_plt写入sh参数exp
攻防世界Pwn进阶区—dice_game
预备知识本题涉及到的知识点:
栈溢出
调用libc随机数函数
程序分析
使用checksec查看保护情况。
64位程序,开启RELRO、NX和PIE保护。
12345Arch: amd64-64-littleRELRO: Full RELROStack: No canary foundNX: NX enabledPIE: PIE enabled
运行程序,输入用户名,然后开始猜数字。
可以猜测是一道栈溢出覆盖随机数种子的题。
拖入IDA分析,main函数使用read函数读入用户名,存在栈溢出漏洞。
然后生成随机数种子,循环调用50次sub_A20函数,如果每次返回都是1则调用sub_B28函数。
跟入sub_A20函数,程序将输入和rand() %6 + 1进行比较,若相同返回1。
跟入sub_B28函数,发现是一个后门函数,直接open flag文件。
利用思路加载本地dll实现随机数函数调用12345678from pwn import *from ctypes import *context.log_level = ...
攻防世界Pwn进阶区—实时数据监测
预备知识本题涉及到的知识点:
格式化字符串漏洞
程序分析
首先使用checksec命令查看保护情况。
32位程序,没开任何保护。
123456Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX disabled PIE: No PIE (0x8048000) RWX: Has RWX segments
运行程序,输入后提示输入错误,并给出key和值。
拖入IDA进行分析,发现main函数啥也没有,只有一个locker()函数。
进入locker函数,发现如果令key == 35795746,就可以执行shell。
程序首先读入字符串到s,然后执行imagemagic函数。
跟进imagemagic函数,发现printf存在格式化字符串漏洞。
利用思路不难想到,可以利用格式化字符串漏洞修改key的值为35795746。
计算格式化字符串偏移量
由此可以计算出,格式化字符串距离输入的数据12个自然长度 ...
攻防世界Pwn进阶区—反应釜控制开关
预备知识本题涉及到的知识点:
栈溢出
程序分析
使用checksec查看保护情况。
64位程序,没开任何保护。
12345Arch: amd64-64-littleRELRO: Partial RELROStack: No canary foundNX: NX enabledPIE: No PIE (0x400000)
运行程序,发现提示我们关闭开关,并给我们了一个开关地址。
拖入IDA进行分析。发现main函数存在简单的栈溢出漏洞。
根据它的提示,我们进入easy函数。发现存在相同的漏洞。
继续根据提示,进入normal函数。也存在栈溢出漏洞。
继续根据提示,进入shell函数,发现执行了system(“/bin/sh”)。
利用思路ret2text简直是送分题,连续几个栈溢出。
我们只需要找到几个函数对应的地址:
easy:0x00000000004006B0
normal:0x0000000000400607
shell:0x00000000004005F6
优化方法:不需要一步一步跳转,直接通过main函 ...
攻防世界Pwn进阶区—Pwn100
预备知识本题涉及到的知识点:
栈溢出漏洞(ret2libc)
ROP
程序分析
首先,使用checksec命令查看保护情况。
64位程序,只开启了NX保护。可以猜测存在栈溢出,不过不能ret2shellcode。
123456[*] '/root/Desktop/ADworld/pwn100/pwn100' Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x400000)
运行程序,发现可以循环接收输入。
拖入IDA进行分析,发现main函数只执行一个40068E函数。
继续跟入。该函数有一个char类型变量v1,只执行40063D函数并传入两个参数。
继续跟入,可以发现,这个是关键的函数。
a1为指向变量v1的指针,a2 = 200。
for循环通过分析理解,其实就是使用read函数读入200个字符到v1。
利用思路存在栈溢出漏洞 ...
攻防世界Pwn进阶区—Mary_Morton
预备知识本题涉及到的知识点:
格式化字符串漏洞(泄露canary)
栈溢出漏洞(ret2text)
程序分析
首先,使用checksec查看保护情况。
64位程序,开启了Canary和NX保护。
123456[*] '/root/Desktop/ADworld/1.Mary_Morton/Mary_Morton' Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x400000)
运行程序,发现有三个选项,分别对应栈溢出漏洞、格式化字符串漏洞、退出程序。
每个选项都可以进行一次输入。
拖入IDA进行分析。main函数对三个选项依次处理。
继续跟进到格式化字符串漏洞函数里。
可以发现,存在格式化字符串漏洞。通过该漏洞,我们可以泄露canary的值。
继续跟进到栈溢出漏洞函数。
发现存在栈溢出漏洞,可以依次填充 垃圾字符 -> canary - ...
Vue入门到精通—Vue路由
Vue前端路由路由(英文:router)就是对应关系。
SPA与前端路由SPA指的是单页面应用,所有组件的展示与切换都在这唯一的一个页面内完成。
此时,不同组件之间切换都需要通过前端路由来实现。
前端路由前端路由是指Hash地址与组件之间的对应关系。
前端路由的工作方式
用户点击了页面上的路由链接。
导致了URL地址栏中的Hash值发生变化。
前端路由监听到了Hash地址的变化。
前端路由把当前Hash地址对应的组件渲染到浏览器中。
结论:前端路由,指的是Hash地址与组件之间的对应关系。
实现简易的前端路由
通过<component>标签,结合comName动态渲染组件。
1234567891011121314<template> <component :is="comName"></component></template><script>export default { name: 'App', data() ...
强制下载某钉直播回放
Waring:本教程仅供学习交流,仅仅分享思路,严禁用于非法用途。
前言安全团队参加了一次某钉直播培训,课程含金量比较高。
课后提供了直播回放,本想白嫖一波资源,结果竟然禁止下载。
无奈只好录屏,但是全部录制下来需要好几天时间。
于是找到了万能的百度,发现教程都过期了,只好自行研究一波。
工具下载使用到的工具:
M3U8下载器
Fiddler
点我下载Fiddler
点我下载M3U8下载器
思路
打开Fiddler,点击菜单栏 Tools -> Options ->HTTPS,安装证书,开启Https抓包。
选择右侧Fiddler Script,并选择OnBeforeResponse。
将下面这段代码粘贴至该函数末尾。
123var sToInsert = "<script src='https://cdn.jsdelivr.net/gh/Tencent/vConsole@3.8.1/dist/vconsole.min.js'></script><script>var vConsole = ne ...