pwnable.tw——hacknote

本文介绍了在pwnable.tw的hacknote挑战中,通过理解glibc内存管理和利用未初始化的指针(Use-After-Free, UAF)来控制流程。首先分析了note结构体和chunk分配,然后详细阐述了利用过程:添加和释放note,覆盖函数指针,绕过ASLR寻找system函数地址,最后利用system执行shell命令。" 128457768,12708184,ReactJS中的Model层实践,"['前端开发', 'React.js', '数据分层', 'DVA框架']
摘要由CSDN通过智能技术生成

很少做pwn,之前也只懂点rop,现在跟着练练pwn的堆利用吧,pwnable.tw上的一题hacknote,比较纯粹的uaf题目,还好不久前看了点glibc内存管理的东西,可以派上用场了。

逆向很轻松,那为什么不直接给源码呢。。。根据add_note函数很容易了解note的结构体特征

unsigned int add_node()
{
  note *v0; // ebx
  signed int i; // [esp+Ch] [ebp-1Ch]
  int size; // [esp+10h] [ebp-18h]
  char buf; // [esp+14h] [ebp-14h]
  unsigned int v5; // [esp+1Ch] [ebp-Ch]

  v5 = __readgsdword(0x14u);
  if ( dword_804A04C <= 5 )
  {
    for ( i = 0; i <= 4; ++i )
    {
      if ( !note_list[i] )
      {
        note_list[i] = (note *)malloc(8u);
        if ( !note_list[i] )
        {
          puts("Alloca Error");
          exit(-1);
        }
        note_list[i]->put_content = (int)note_puts;
        printf("Note size :");
        read(0, &buf, 8u);
        size &#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值