CVE-2020-11790
[[CVE]] NETGEAR R7800 存在命令注入漏洞环境:Ubuntu 22 IDA 9.1 固件下载 FirmAE binwalk 固件仿真1binwalk -Me R7800-V1.0.2.62.zip 根据poc 漏洞存在于uhttpd文件中,我们使用qemu user mode 仿真对其进行仿真操作 123456/CVE-2020-11790/_R7800-V1.0.2.62.zip.extracted/_R7800-V1.0.2.62.img.extracted#cd 至此处sudo apt install qemu-user-static libc6-arm* libc6-dev-arm*cp `which qemu-arm-static` .sudo chroot . ./qemu-arm-static --strace ./usr/sbin/uhttpd -h /www -r R7800 -f -x /cgi-bin -t 80 -p 0.0.0.0:80 -C /etc/uhttpd.crt -K /etc/uhttpd.key -s 0.0.0.0...
CVE-2018-5767
固件下载连接1https://drivers.softpedia.com/dyn-postdownload.php/d27e8410d32cd9de63a3506c47ded1bc/61ff85c5/75eb7/4/1 虚拟机环境ubuntu 18 binwalk 解包1binwalk -Me US_AC15V1.0BR_V15.03.1.16_multi_TD01.rar 使用 qumu 启动 ./bin/httpd 进行固件模拟 1234打开到此处 _US_AC15V1.0BR_V15.03.1.16_multi_TD01.rar.extractedsudo apt install qemu-user-static libc6-arm* libc6-dev-arm*cp /usr/bin/qemu-arm-static .sudo chroot ./ ./qemu-arm-static ./bin/httpd 程序卡在了 Welcome to … 123使用ida打开/_US_AC15V1.0BR_V15.03.1.16_multi_TD01.r...
[2021 鹤城杯]easyecho
Stack SmashCanary保护,是在栈上插入一段随机数;进入函数后,也就是call完后会有push ebp,mov ebp,esp,最后来个mov esp。canary保护特殊在上述操作后会再加一个canary。最后函数leave ret前会检测一次,canary与原先值是否相同来判断是否被栈溢出覆盖返回地址了。 Stack Smash 就是利用 canary 检测的机制漏洞将栈上的__libc_argv[0] 内容将其输出 注意在libc2.23 后此机制无法使用1234567891011void __attribute__ ((noreturn)) __stack_chk_fail (void){ __fortify_fail ("stack smashing detected");}void __attribute__ ((noreturn)) internal_function __fortify_fail (const char *msg){ /* The loop is added only to keep...
tcache_perthread_struct
tcache_perthread_struct 是GLIBC从2.27开始引入的机制,用于 add 有限的 chuank 数量,可以申请的 size 过小无法 free 到unsorted bin。 tcache的结构体定义12345typedef struct tcache_perthread_struct{ char counts[TCACHE_MAX_BINS]; tcache_entry *entries[TCACHE_MAX_BINS];} tcache_perthread_struct; tcache_perthread_struct 在本质上是一个 0x250-0x290的堆结构 1234567891011pwndbg> x/20gx 0x4050000x405000: 0x0000000000000000 0x00000000000002510x405010: 0x0000000000000000 0x00000000000000000x405020: 0x0000000000000000 0x00000000000000000...
CVE-2022-26258
固件地址:http://www.dlinktw.com.tw/techsupport/download.ashx?file=2663 环境 Ubuntu18,(22 在模拟固件时会有问题) FirmAE 下载12345678# 从GitHub克隆项目git clone --recursive https://github.com/pr0v3rbs/FirmAE# 运行download.sh脚本,下载相关程序./download.sh#运行安装脚本./install.sh binwalk 下载123pip3 install git+https://github.com/ReFirmLabs/binwalk.gitcd binwalkpython3 setup.py install CVE-2022-26258 固件模拟无法转发至宿主机,所以在 Ubuntu18 中安装 bp 进行操作 可以参考以下师傅的文章https://blog.csdn.net/dustbinhoj/article/details/128587565 使用binwalk 进行解包1binwalk -Me...
侧信道爆破
侧信道攻击是一种非正常的攻击手段,是根据程序的反馈报错信息来参考的一种攻击方式 原理是讲 flag 文件中的字符读取到缓冲区,将文件中的字符一个字节一个字节的对比 使用前提: 1-输入的 shellcode 能够被执行 2-程序禁用了execve系统调用,和关闭了标准输出流才用必要进行使用,因为爆破所需要的时间较长 3-read、open、openat、readv、fread 都可以被使用,但是一定要确保可以打开文件并且 read 读取到 4-标准错误不能被关闭,我们需要更具系统的反馈信息进行循环判定 侧信道攻击其实是比较模板化的,基本可以套用以下公式 12345678910111213141516171819202122232425mov r12, 0x67616c66 ; 将字符串 "flag" 的 ASCII 值加载到寄存器 r12 中push r12 ; 将 r12 的值推送到栈上mov rdi, rsp ; 将栈上的地址赋给寄存器 rdixor esi, esi ; 将 es...
CTFshow PWN164
muea 中只有 add 和 delete add 中使用的是 realloc 什么是 realloc 呢? 可以参考如下文章 https://squarepants0.github.io/2020/11/18/2019-realloc-magic-realloc-yu-tcache/#toc-heading-2 简单来说就说 mallco 和 free 的结合 plus 版 1234567891011void *realloc(void *ptr, size_t size)# ptr=0 && size!=0# 视作mallco(size) 返回对应的地址# ptr!=0 && size==0# 视作free(ptr)#ptr!=0 && size!=0#当上一次mallco返回的ptr值的size > 现在需要申请的size,则会进行缩小,然后多余的进行free#当上一次mallco返回的ptr值的size < 现在需要申请的size,则会进行扩容#如果上一次mallco返回的ptr已经被free了,且 <...
CTFshow PWN162
此文章参考了: CTFshow PWN162 堆利用技巧大杂烩_ctfshow-pwn-162-CSDN博客 好好说话之IO_FILE利用(1):利用_IO_2_1_stdout泄露libc_libc泄露方式-CSDN博客 使用realloc函数来调整栈帧让one_gadget生效 - ZikH26 - 博客园 感谢师傅的讲解 本文章只描述了本地是操作是如何打通程序的,远程需要爆破出I0_2_1_stderr_ 的第四位 1/16 概率 本题使用了double_free,unsortedbin_attack 、_IO_2_1_stdout、house of spirit,UAF 经典的增删改查 add 后会有一个固定的 0x28 大小的 chunk,和一个自行输入 size 大小的 chunk,size 被限制大小,add 的 chunk 数量也被限制为 0x13,并且 s->data 为 inuse 此时的堆结构 show 是假函数,无法 show delete 函数中,if 检测 chunk_s+v1 实际上并不是inuse 的值,所以这边是一个假判...
CTFshow PWN160
libc 下载链接:https://files.buuoj.cn/files/85ee93d92fc553f78f195a133690eef3/libc-2.23.so 简单的增删改查 在 add 中,我们输入 size 创建的 chunk 为 s,固定生成的一个 chunk 为 v3 s 在 v3 内存的上方,后续将 s 的 data 段地址赋值给 v3data 段 将 v3 放入 chunk 管理数组 chunk_s 中 edit 函数中有验证 v3->s+v2 的值于 s 的 size 做比较,如果我们在 v3 和 s 之间添加 chunk 使其不连续即可绕过此检查 add 后的 chunk 如图所示 delete 函数中将 s 清空,未将 v3chunk 清空,存在 uaf,但是这题不用 uaf 也可以写 show 输出 s 和 v3 中的 nam 和 test edit 就是上面 add 中的修改 test 中使用的 目前我们的思路为: 使 s 和 v3 中有其他 chunk 存在,这样我们就可以绕过 edit 中的检测使其修改到别的 chunk 内...
[HNCTF 2022 WEEK4]ezheap
经典的增删改查 我们先看 add 函数 重要的是这几行,先创建一个 0x20 大小的堆块(实际是 0x30)放入heaplist 数组中,类似于管理堆块的数组 v0 是 chuank0 data 段的地址,v0+0x10 中放入新 chunk 的 data 段地址,v0+0x20 存入 puts 函数的真实地址 后续又往 chunk0 和 chunk1 中读入数据 堆块的大致情况入下图 delet 函数 free 后置零没有 uaf 漏洞 edit 函数 重点在这边,修改的 size 大小是我们输入进去的,所以我们可以申请两个 chunk,修改 第一个 chunk 的时候把第二个 chunk 的内容也修改掉。 show 函数 heaplist[v1] + 0x20 的地方就是 puts 函数,这边的本意就是调用 puts 函数输出heaplist[v1]->data 段内容,heaplist[v1] + 0x10->data 和第二个 chunk 中 data 段的内容 目前我们的思路就很清楚了,我们可以先申请两个堆块,然后通过 edit 函数修改第一个堆...



![[2021 鹤城杯]easyecho](/img/22.jpg)





![[HNCTF 2022 WEEK4]ezheap](/img/17.jpg)


![[BJDCTF 2020]YDSneedGirlfriend](/img/8.jpg)




