又是一个XSS题,Docker里起了一个Web一个Bot一个Redis,Web使用Java写的,用的Eclipse的Jetty服务器,上层是Micronaut微服务框架来的,整体打包成一个JAR。
HXPCTF 2023 Web复现
valentine
Web签到题,考的是Node.js的ejs模板库命令执行。首先给出源码,里面的库版本都是最新的:
NeSE十二月升级赛WriteUp (Web)
一个硬核的XSS题,收获相当大(还得感谢CrumbledWall师傅点拨了我几次)
开局给了后端的源码,能看见里面用了腾讯的COS对象存储,可以上传文件到上面,docker-compose.yml里面还有一个名为的bot
的服务但没有给出源码,能看出来后端有个接口会去连接这个bot
。
UCORE Lab 2
UCORE的段页式内存布局
从UCORE启动到物理内存管理的初始化结束,一共加载了3次GDT,实现了由单纯的分段到段页式内存管理的布局。
在内核链接脚本中,内核的加载地址由Lab1中的0x100000
改为了0xC0100000
:
1 | OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") |
N1CTF 2022 Web 复现
Easy_S2
这题主要考察的是Struts2的路径匹配规则以及Java Web中的Security-Constraint安全约束选项。题目附件是一个.war包,将其解压之后可以直接通过Tomcat部署,代码实现也很简单。通过web.xml可以了解到整个网站的路由都被导向了中间Struts2,同时有两条安全约束项:
UCORE Lab 1
Ex.1
Makefile 狗都不看
Node.js require() RCE复现
前言
前阵子参加了Balsn CTF 2022,有道Node.js的题目叫2linenodejs,个人觉得思路十分巧妙,遂进行了完整的复现,收获颇多。下面是整个复现的过程。
题目代码如下:
1 | // server.js |
NeSE十月升级赛WriteUp (Web)
学到了一些SQL注入的新姿势~
ByteCTF 2022 WriteUp
感觉可以抽个时间专门再学学SQL注入了…
Web
easy_grafana
打开题目,Grafana v8.2.6,经典CVE-2021-43798,但是原始的POC没法用,返回400,后来查了一下发现可能是中间件对URL做了标准化导致没法打,在POC中添加#
可以顺利绕过。
浅析动态链接中GOT与PLT的工作方式
前言
动态链接是一种高效且节省空间的程序间共享代码方式。若程序使用静态链接方式,则程序所有代码都将集成到同一个二进制文件中,其优点在于无依赖关系,可以在不同运行环境的OS下运行。但是缺点也十分明显,由于二进制文件中包含全部代码,所以所占空间较大;如果多次运行同一个程序,则OS可能会对某个库函数进行多次重复 的加载,占用了不必要的内存;若某个公用的库函数产生了更新,则需要重新编译所有使用了该库的程序,工作量较大。
静态链接的一个典型的例子就是Golang,其默认所有程序都是使用静态链接的方式,包含有所有使用到的Golang库函数,因此使用Golang编写的程序因为具有优秀的可移植性和开箱即用受到较多好评。但较为直观的也能看见上面所说的缺点:Linux x86_64下,一个Golang编写的HelloWorld二进制文件占用空间为1.7MB。
而为了解决静态链接存在的重复加载、重复编译等问题,引入了动态链接的方式。使用动态链接的程序不包含库函数的代码,库函数通过动态链接库(.so)的形式独立存在。当程序开始运行并产生外部函数调用时,动态链接器将承担加载动态链接库和重定位函数地址、变量地址的工作,在运行时确定外部函数地址和变量的值,也叫惰性加载。动态链接能够减少程序的启动时间(程序占用空间变小),且动态链接器也不会产生较多额外的性能开销,因此动态链接还是如今比较广泛应用的一种链接方式。