sqlmap

sqlmap用法不存在太多难度,略过。

对sqlmap源码的一些注解:

1. sqlmap/lib/core/common.py

输出函数dataToStdout中的sys.stdout.write

控制主要输出点

2. logging调级

sqlmap/lib/core/option.py

设置logging级别函数setVerbosity中,添加conf.verbose=0,则级别将设置为ERROR,级别较高,基本不输出,如有需求,可再设置为critical。 

控制sqlmap logging输出级别,设置为0则只有最高级的logging才会输出。

4. 多线程调用sqlmap时,如果不存在注入,调用的程序也会终止。即使使用 try抓取异常,也会被中断。

这一点刚开始找不到原因。

  1. 表面现象,raise后程序也终止了,注释掉raise SqlmapNotVulnerableException之后,还是会终止。

  2. sqlmap程序return值后,主程序收不到值,同时也终止了,看上去好像return时同时终止了程序。

  3. 最后找到了try: except:finally:,finally中有exit(0)。而finally优先级高于return,就算在try中return了,finally中exit,主程序还是会被exit给退出。

  

sqlmap.py  main()函数最后一行:

  if threading.activeCount() > 1:
    os._exit(0)

该语句解决了sqlmap跑完结果出现、该结束时还存在线程在运行(在sqlmap运行时,线程存在于inject过程中;但在二次开发过程中,主程序的线程会影响sqlmap中该处的判断语句),可能导致报错的问题,但也导致主程序被中断。

将之换成return吧。

之后想要全面消除这种现象,就要将程序中所有exit都看一下。

猜你喜欢

转载自www.cnblogs.com/huim/p/8978042.html