ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

软件安全复习押题

2021-07-05 15:58:50  阅读:204  来源: 互联网

标签:include 复习 PROCESS 虚拟地址 押题 物理地址 软件 NULL hProcess


Table of Contents

  1. 填空题
    1. 大概率必考
      1. SDl开发模式
      2. 计算硬盘容量
      3. 主引导扇区的组成
    2. 其他
      1. 什么是软件安全
      2. 系统监控工具
      3. 流氓软件
  2. 简答题
    1. 大概率必考
      1. 画出堆栈示意图
      2. 三年来和软件缺陷、漏洞相关的重大安全事件
      3. 可信计算思路
      4. 计算机的启动过程
      5. 当前操作系统的移动引导形式及其区别
      6. 用户模式、内核模式
      7. 检测调试器是否存在
    2. 其他
      1. 主引导分区、扩展分区、逻辑分区的区别
      2. Win32病毒是怎样被运行的
      3. 缓冲区溢出漏洞原理
      4. 什么是SQL注入
      5. 病毒检测技术
      6. 隐藏技术,隐藏XX的思路
  3. 综合题
    1. 虚实地址转换
      1. Info
      2. Target
      3. Process
      4. Reference
    2. 远程线程插入
      1. Info
      2. Target
      3. Process
      4. Reference

填空题

大概率必考

SDl开发模式

计算硬盘容量

主引导扇区的组成

其他

什么是软件安全

系统监控工具

流氓软件

简答题

大概率必考

画出堆栈示意图

三年来和软件缺陷、漏洞相关的重大安全事件

可信计算思路

计算机的启动过程

当前操作系统的移动引导形式及其区别

用户模式、内核模式

检测调试器是否存在

其他

主引导分区、扩展分区、逻辑分区的区别

Win32病毒是怎样被运行的

缓冲区溢出漏洞原理

什么是SQL注入

病毒检测技术

隐藏技术,隐藏XX的思路

综合题

虚实地址转换

Info

  • 实际的虚拟地址,实际的寄存器CR3

Target

  • 手工将虚拟地址转为实际的物理地址

Process

  1. 理论依据

    img

    img

  2. 整体思路

    • 首先分解题目中已给的虚拟地址,按照10、10、12的位数进行分解组合,得到各处索引,再根据已知的cr3,即页目录表基址进行加法运行,得到页表项地址,再得到页面物理地址,最后根据页内偏移得到实际的物理地址。
  3. 配置环境

    • WIndbg双机调试环境配置
    • 调试模式下禁用PAE

    img

  4. 输入标志信息

    • 打开notepad,输入信息

    img

  5. 查看进程信息

    img

    • 得到:DirBase: 3c3ae000
  6. 切换到当前进程

    img

    img

    • cr3=3c3ae000
  7. 确定要转换的虚拟地址

    img

    • 要转换的虚拟地址:0017ddd0
  8. 分解

    kd> .formats 0x17ddd0
    Evaluate expression:
     Hex:     0017ddd0
     Decimal: 1564112
     Octal:   00005756720
     Binary:  00000000 00010111 11011101 11010000
     Chars:   ....
     Time:    Mon Jan 19 10:28:32 1970
     Float:   low 2.19179e-039 high 0
     Double:  7.72774e-318
    
    • PDE:0000 0000 00 =0x0

    • PTE:0101 1111 01 =0x17d

    • 页内:1101 11010000 =0xdd0

  9. 转换

    img

    • 得到:3ba00867,舍去后三位,得到3ba00000,查看3ba00000+0x17d*4

    img

    • 得到:00ee5867,舍去后三位,得到00ee5867,查看00ee5000+0xdd0

    img

    • 地址的后三位为权限等属性,需要置为0.
  10. 验证

    img

Reference

远程线程插入

Info

  • 给出一些关键的信息,pid,dll路径,关键部分代码等

Target

  • 完善代码或编写代码

Process

  1. 配置环境 Win7 X86 + 关闭PAE

  2. 新建Win32 DLL项目

    img

    img

    #include <windows.h>
    #include <tchar.h>
    
    BOOL WINAPI DllMain(HINSTANCE hInstDll, DWORD fdwReason, PVOID fImpLoad) {
    
       if (fdwReason == DLL_PROCESS_ATTACH) {
         MessageBox(NULL,"HACK_HENU",TEXT("hack by jovy-rtt"),MB_OK);
       }
       return(TRUE);
    }
    
  3. 新建WIn32 控制台应用程序

    img

    img

    #include <windows.h>
    #include <stdio.h>
    #include <tchar.h>
    #include <string.h>
    #include <malloc.h>
    
    int main()
    {
      HANDLE hProcess = NULL, hThread = NULL;
      //此处为notepad的PID,先运行notepad,再手工填入
      DWORD dwProcessId = 2444;
      PSTR pszLibFileRemote = NULL;
      //此处需要修改路径信息
      char szLibFile[]="C:\\Users\\Administrator\\Desktop\\Sample1\\MyInjlib\\Debug\\TipInject.dll";
    
      // Get a handle for the target process.
      hProcess = OpenProcess(
             PROCESS_QUERY_INFORMATION |   // Required by Alpha
             PROCESS_CREATE_THREAD     |   // For CreateRemoteThread
             PROCESS_VM_OPERATION      |   // For VirtualAllocEx/VirtualFreeEx
             PROCESS_VM_WRITE,             // For WriteProcessMemory
             FALSE, dwProcessId);
    
      int cch = 1 + strlen(szLibFile);
      int cb  = cch * sizeof(char);
    
        // Allocate space in the remote process for the pathname
      pszLibFileRemote = (PSTR)
        VirtualAllocEx(hProcess, NULL, cb, MEM_COMMIT, PAGE_READWRITE);
    
      // Copy the DLL's pathname to the remote process' address space
      WriteProcessMemory(hProcess, pszLibFileRemote, szLibFile, cb, NULL);
    
      // Get the real address of LoadLibraryA in Kernel32.dll
        PTHREAD_START_ROUTINE pfnThreadRtn = (PTHREAD_START_ROUTINE)
             GetProcAddress(GetModuleHandle(TEXT("Kernel32")), "LoadLibraryA");
    
      // Create a remote thread that calls LoadLibraryA(DLLPathname)
        hThread = CreateRemoteThread(hProcess, NULL, 0,
             pfnThreadRtn, pszLibFileRemote, 0, NULL);
    
      // Wait for the remote thread to terminate
        WaitForSingleObject(hThread, INFINITE);
    
    
      return 0;
    }
    
  4. 打开notepad,并获取PID,手工修改PID

    img

    img

  5. 开始编译、组建、逐步调试

    img

  6. 调试到最后,显示插入成功界面

    img

Reference

软件安全-实验三

《软件调试》-第22章

标签:include,复习,PROCESS,虚拟地址,押题,物理地址,软件,NULL,hProcess
来源: https://blog.csdn.net/zmx2473162621/article/details/118491325

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有