10月->月末总结

10月->月末总结

 0x01->感悟

     这个月是复现cve的第一个月,跟着看了学习了不少知识,不得不说看着大牛的文章学到了很多,分为几个方面,一是调试器的使用,学到了很多新的用法,这是一起没有接触到的,二是这些新鲜的实战利用手法,这是只看二进制基础不可及的,三是对汇编编写、python、js(IE)这些感觉到欠缺,比如在改写虚表和改对象的结构使之rop化的运行等等。

 0x02->windbg

     windbg,我是这个月才开始学用,之前一直使用OD(ps:感觉做RE,OD的字符串插件比windbg的用户体验好多了),windbg 的符号功能的确很牛逼,命令行用多了也就记住了,然后就是mona插件,做二进制很强大的插件。

  0x02-01->windbg 遇到的问题

     1.很多次符号路径莫名的被改变(至今也不知道为什么),导致一直在Busy


     2.如何快速定位到程序入口, bp $exentry 即可


     3.为何我的新打开或者附加一个程序会Busy* 很久,这是因为windbg在下载符号


     4.bp 符号,bm 符号,都不能断下来断点的话,可以先试试x 符号,得到地址,对地址进行断点


     5.自己编写的程序用windbg调试的时候,在进入main调试源代码的时候,我们的汇编单步会自动变成源码单步,使用 l-t 可以变成汇编单步 ,使用 l+t 变成源码单步

     

 0x03->IDA

     IDA这个不用多说,用了很久了比较熟悉,

  0x03-01->IDA6.8不能自动加载符号表的问题

     我百度到如下解决方法


          原帖地址

http://www.cnblogs.com/Lnju/articles/5115370.html

修改ida安装目录下的pdb.cfg文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// PDB plugin
#ifdef __PC__ // INTEL 80x86 PROCESSORS
//
// The downloaded symbols are stored in the specified directory.
// Microsoft's public symbol store is used for downloading the symbols.
//
// If this option is omitted or empty - use _NT_SYMBOL_PATH if set, otherwise use %TEMP%\ida directory
// If the value is not empty - use it
//PDBSYM_DOWNLOAD_PATH = "c:\\symbols";
// Full symbol path (in _NT_SYMBOL_PATH format)
// If set, PDBSYM_DOWNLOAD_PATH and _NT_SYMBOL_PATH are ignored
PDBSYM_SYMPATH =
//把下面这行的注释去掉,改成自己的本地符号路径就好了
"SRV*e:\\sym*http://symbols.mozilla.org/firefox;SRV*c:\\symbols*http://msdl.microsoft.com/download/symbols";
// remote server where win32_remote.exe is running
// used when loading PDB symbols on non-Windows platforms
// NB: it will be used only if there is not already an existing debugging session started
PDB_REMOTE_SERVER = "localhost";
PDB_REMOTE_PORT = 23946
// password for the remote server
PDB_REMOTE_PASSWD = "";
#endif

  0x03-02->IDA 遇上ASLR 怎么动静结合问题

     IDA加载文件的时候选Manualload打勾.然后手动指定imagebase你可以看下你动态载入后的IMAGEBASE是多少先.然后把IDA的手工指定基址到中动态的那个基址。

 0x04->Exploit

     这个月复现的cve,只有buffoverflow,Heap,都是溢出覆盖型基本利用手法就是

     1.找到溢出点,(heap,用gflag开堆页)

     2.查看模块的保护,找未开保护的模块,跳到其中去执行想要的gadget(确实不一定绕过DEP才用这种手法,很多情况都可以使用rop,比如自己构造对象,修改其虚函数,)
     3.由审计反汇编代码,查看是否有检查(输入数据)的地方,绕过其检查,保证程序正确执行
     4.由上面三步收集的信息,构造exploit

(╭ ̄3 ̄)╭♡

(╭ ̄3 ̄)╭♡

(╭ ̄3 ̄)╭♡