Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

yikesoftware/Iot_challenges

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

9 Commits

Repository files navigation

Iot Challenges

题目摘要格式:

## 类别
No. [赛事] 题目
 - 摘要1
 - 摘要2
 ... 

Httpd

  1. [qwb] gamebox

    • mips64架构,大端续,uClib运行库
    • error_request中向堆缓冲区memcpy拷贝发生错误的参数内容时超长,存在堆溢出
    • uClib下堆利用,类似早期的dlmalloc,fastbin伪造不检查大小
    • 没有__free_hook__malloc_hook,但libc中函数间调用通过got表
    • free函数检查chunk大小和标志位满足特定条件时会调用munmap,可以借此调用systemgetshell
  2. [qwb] xx_easy_server

    • x86架构
    • Location拼接过长,导致整数溢出,栈上越界写
    • 溢出后需要EOF截断输入,不能leak,需要结合已知地址构造rop
    • 单字符拼接文件名,栈迁移调用do_file实现任意文件读
  3. [RWCTF] Game2048

    分析:

    • 使用了协程库,可以并行处理多个HTTP请求
    • 堆的UAF漏洞发生在submit的处理逻辑中,进入submit时会先尝试free之前的comment,但不立刻置NULL
    • 但是在修改同一个用户的comment时,如果前一个请求阻塞在AIO::read,则后一个请求会把同一个comment指针再free一次。然而这不会直接double free,因为这部分内存会被别的结构占住。
    • submit_page里面会输出comment的内容,造成地址泄漏。

    利用:

    • 泄漏出libc地址
    • 请求A:free一个comment然后阻塞在AIO::read
    • 请求B:对同一个用户的comment再次free
    • 继续完成请求A,此时会凑巧在tcache上出现一个loop chain
    • 请求C:尝试修改fd即可指向__free_hook-0x10 (C++对象创建和销毁操作比较多,不当的操作很容易crash,只能慢慢试)
    • 请求D:同样进入AIO::read的逻辑,借助一个合适大小的buffer拿到__free_hook-0x10,写入参数和system地址
    • 当请求D被完成,buffer被free后就可以getshell了
  4. [qwb] qwbhttpd

    分析&利用:

  5. [ByteCTF] Master of HTTPD

    分析&利用:

Protocol

About

iot安全题目学习记录

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /