css study
CSSCSS (Cascading Style Sheets,层叠样式表),是一种用来为结构化文档(如 HTML 文档或 XML 应用)添加样式(字体、间距和颜色等)的计算机语言
语法CSS规则由两个主要的部分构成:选择器,以及一条或多条声明:
h1{color:blue;font-size:12px;}
选择器通常是您需要改变样式的 HTML 元素。
每条声明由一个属性和一个值组成。
属性(property)是您希望设置的样式属性(style attribute)。每个属性有一个值。属性和值被冒号分开。
注释为:
/**/
id和class选择器id 选择器id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。
HTML元素以id属性来设置id选择器,CSS 中 id 选择器以 “#” 来定义。
以下的样式规则应用于元素属性 id=”para1”:
#para1{ text-align:center; color:red;}
ID属性不要以数字开头
class选择器class可以在多个元素中使用
.c ...
js study
JavaScript脚本语言,可以插入进html
改变HTML内容<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head><body> <h1>我的第一段 JavaScript</h1><p id="demo">JavaScript 能改变 HTML 元素的内容。</p><script>function myFunction(){ x=document.getElementById("demo"); // 找到元素 x.innerHTML="Hello JavaScript!"; // 改变内容}</script><button type="button" oncli ...
html study
前言也是学上web了。
HTML实例<!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鸟教程(runoob.com)</title></head><body> <h1>我的第一个标题</h1> <p>我的第一个段落。</p> </body></html>
解释:
<!DOCTYPE html>声明为 HTML5 文档
<html> 根元素
<head> 包含了元数据如meta内的内容(定义网页编码格式为utf-8)
title 描述了标题
<body> 包含了可见页面内容
<h1> 定义了一个大标题
<p> 定义了一个段落
什么是html超文本标记语言: HyperText Markup Language
是一种标记语言,是一套标记标签
使用 ...
IoT入门_DLINK815栈溢出漏洞复现
前言也是学上IoT了。
https://www.cnblogs.com/hetianlab/p/18097167
https://bbs.kanxue.com/thread-272318.htm
https://xz.aliyun.com/news/15948
模拟仿真使用FirmAE进行仿真,基本是傻瓜式操作
安装FirmAE
https://github.com/pr0v3rbs/FirmAE
安装过程不再赘述
之后
./download.sh./install.sh./init.sh
运行
sudo ./run.sh -d dlink ../../dir/dir.bin
要注意得在frimAE文件夹下使用
其他使用
-c check
sudo ./run.sh -c <brand> <firmware>
-r run
sudo ./run.sh -r <brand> <firmware>
成功的界面成功需要等半分钟左右,可以在提示中看到192.168.0.1开启了服务
[*] ../../dir/dir. ...
linux内核学习入门2
前言记录20250424-20250425通过gdb调试学到的东西
参考博客:
https://arttnba3.cn/2021/02/21/OS-0X00-LINUX-KERNEL-PART-I/
https://arttnba3.cn/2021/02/21/OS-0X01-LINUX-KERNEL-PART-II/
https://arttnba3.cn/2021/03/03/PWN-0X00-LINUX-KERNEL-PWN-PART-I/
内核态与用户态切换昨天学习了一下内核态用户态是如何切换的,今天通过gdb调试与询问gpt大概知晓了之中的过程。
前置知识MSR寄存器MSR (Model Specific Registers) 是一类专门为 CPU 架构或微架构设计的寄存器,主要用于存储 CPU 特定的控制、状态和配置信息。它们与处理器的核心功能和硬件特性密切相关。MSR 寄存器在不同的处理器型号和微架构之间可能会有所不同,因此它们被称为 “Model Specific”(特定型号的寄存器)。
简而言之,MSR寄存器中记录了关于CPU的一些信息。
gs_baseM ...
linux内核学习入门1
前言记录20250423及之前关于linux内核学习的内容
参考博客:
https://arttnba3.cn/2021/02/21/OS-0X00-LINUX-KERNEL-PART-I/
https://arttnba3.cn/2021/02/21/OS-0X01-LINUX-KERNEL-PART-II/
https://arttnba3.cn/2021/03/03/PWN-0X00-LINUX-KERNEL-PWN-PART-I/
由题目开始的内核学习示例题目为 强网杯2018 - core
开始解压命令本题目中core.cpio使用了gzip压缩,解压命令:
mkdir file_foldercd file_folderzcat ../core.cpio | cpio -idmv
解压后有一堆文件
其中几个文件夹很明显就是linux根目录的文件夹,另外在当前目录下还有core.ko init gen_cpio.sh等文件
core.ko就是有漏洞的内核模块了
gen_cpio.sh我们先看gen_cpio.sh,这里面的内容是打包命令
find . -print ...
largebin_attack+house_of_apple2+栈迁移orw
前言阴间ctf的一道pwn题,好久没做pwn了复建一下
题目分析glibc2.36 没有_free_hook 要么打envrion堆栈结合,要么打IO攻击
增删查改均有
add函数是calloc,而且只能申请largebin大小的堆块。
delete只能2次,view只能一次,但是view的时候不是printf或者puts而是write 32个字节
delete存在UAF
开启了沙箱,ban了execve,需要考虑orw
思考只能申请largebin,那么利用tcache实现任意地址申请就不可能了,而且calloc会把申请到的空间全部置零,也就没办法任意地址读取。
而且view只能view一次,我们需要同时view出libc地址和heap地址。
largebin大小的堆块可以满足这个需求,对于一个largebin大小的堆块,第一次释放会释放到unsortedbin里面,这时候读取只能泄漏libc,但是我们申请一个比这个堆块更大的堆块,那么这个堆块就会被扔进largebin里面,此时就能泄漏出libc和heap地址。
注意到只能delete两次,largebin attack刚好满足这个 ...
ciscn2019华南pwn1
前言每日一Pwn做到了这个题,复习了一下通过off_by_null造成堆块重叠。
https://www.nssctf.cn/problem/131
题目分析glibc2.27
malloc函数只能申请0x80-0x100大小的堆块,并且可以泄漏出heap地址,另外malloc函数还兼具写的功能。
free函数没有uaf漏洞
edit函数通过一个全局变量来限制只能使用两次,并且存在off_by_null漏洞
show函数在没有篡改全局变量的情况下一次也不能使用。
off_by_null造成堆块重叠当一个堆块要被释放进unsortedbin时,假如他的prev_inuse位是0,那么就会查看heap_addr-prev_size位置的堆块是否也是放入unsortedbin的堆块,如果是,那么就会将两个堆块合并。
假如我们有off_by_null漏洞,我们就可以篡改某一个将要放入unsortedbin的堆块的prev_inuse位,并且伪造一下prev_size,使得当前堆块的地址-prev_szie位置的堆块也是unsortedbin的堆块,这样释放被篡改的堆块的时候,就会将两个un ...
lonelywolf题解
前言每日一Pwn做到了这个题,又学到了新东西,主要是对于tcache_perthread_struct的攻击。
https://www.nssctf.cn/problem/856
题目分析glibc2.27-1.4(????)
alloc函数只能分配小于0x78大小的堆块,并且存储堆块指针的全局变量只有一个,多次alloc就会把之前的指针覆盖掉。
delete函数可以任意的uaf。
tcache_perthread_structtypedef struct tcache_perthread_struct{ char counts[TCACHE_MAX_BINS]; tcache_entry *entries[TCACHE_MAX_BINS];} tcache_perthread_struct;# define TCACHE_MAX_BINS
简单来说,会有一串单字节数组表示对应的tcache已经放了多少个,之后的就是各个tcache的表头了,我们如果能申请堆块到这个地方,从而修改tcache表头,我们就可以实现任意地址申请(即使申请到的堆块实际大 ...
2024 网鼎杯青龙组初赛pwn4复现
前言复现了一下去年网鼎杯青龙组pwn4题目,学了一下新的东西
爆破用户名与密码from pwncli import *from time import *context(log_level='debug', arch='amd64', os='linux')context.terminal = ["tmux", "splitw", "-h"]uu64 = lambda x: u64(x.ljust(8, b'\x00'))s = lambda x: p.send(x)sa = lambda x, y: p.sendafter(x, y)sl = lambda x: p.sendline(x)sla = lambda x, y: p.sendlineafter(x, y)ru = lambda x: p.recvuntil(x)ti = lambda : p.interactive()leak = lambda name,addr :log.succ ...













