之前一搞渗透的同事问我。sqlmapapi.py是干啥的,我猜非常多人都玩过sqlmap,但玩过sqlmapapi的应该比較少,今天就和大家一起看看怎样使用以及一些美的地方。

说白了。sqlmapapi.py就是提供了一个检查sql注入的接口。我们能够直接通过发送http请求扫描sql注入。获取扫描结果等一系列操作。

以下通过实例演示怎样使用:

一.启动server端

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXVlZ3VhbmdoYWlkYW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />

server后端使用的是bottle,一个Python Web微框架。

二. 我们使用requests这个库发送请求

1.新建任务

2.发送扫描选项,开启扫描

注意:那个cd92e4e99406715b就是新建任务返回的taskid

3.查看扫描状态

任务已经结束。能够获取扫描结果了

4.查看扫描结果

我们非常明显的看出是存在sql注入的

嘿嘿,是不是非常easy,但非常强大啊,事实上假设深入源代码查看,你会发现也非常easy。

比方说启动一个任务,

def engine_start(self):
self.process = Popen("python sqlmap.py --pickled-options %s" % base64pickle(self.options),
shell=True, stdin=PIPE, close_fds=False)

其他的也是一目了然。

   def engine_stop(self):
if self.process:
return self.process.terminate()
else:
return None def engine_kill(self):
if self.process:
return self.process.kill()
else:
return None def engine_get_returncode(self):
if self.process:
self.process.poll()
return self.process.returncode
else:
return None def engine_has_terminated(self):
#怎样任务没有结束,returncode的返回值为None
return isinstance(self.engine_get_returncode(), int)

我们restful api设计也是非常有讲究的,一般少用动词,而是通过http的方法代表动作。比方说获取状态。并非getstatus,而是通过get方法。和status名称就非常贴切。

但有时动词是不可避免的,怎样说start,stop等。事实上看看新建任务的api设计作者肯定也非常纠结。本来假设新建任务有參数的话,直接post方法就能够,压根不须要new这个动词。但因为新建任务不须要不论什么參数。使用post方法也不太恰当,所以改为get方法了。这也符合上面开启任务使用post。而停止任务使用的是get。

很多其他细节问题须要大家去看文档或源代码。刚好趁着这个机会好好分析下subprocess模块和bottle框架,后期也会有这方面的分析。

最新文章

  1. ACM: FZU 2112 Tickets - 欧拉回路 - 并查集
  2. undefined reference to `_init'问题解决
  3. salesforce 零基础开发入门学习(八)数据分页简单制作
  4. Android自动化测试-Robotium(一)简介
  5. Django views 中的 shortcut function
  6. Javascript类型检测
  7. java final 关键字醍醐灌顶
  8. jQuery基础---Ajax进阶
  9. 关于 IDEA 自动识别问题,jsp页面Controller路径自动识别的问题
  10. 迷宫问题(bfs+记录路径)
  11. 数据存储之HTTP Cookie
  12. maven install报错 Failed to execute goal on project my-manager-mapper: Could not resolve dependencies for project com.my:my-manager-mapper:jar:0.0.1-SNAPSHOT:
  13. python之使用set对列表去重,并保持列表原来顺序(转)
  14. IsWindowVisible
  15. PHPCMS9.6.0最新版SQL注入和前台GETSHELL漏洞分析 (实验新课)
  16. feign调用接口session丢失解决方案
  17. java实现 HTTP/HTTPS请求绕过证书检测代码实现
  18. 多线程执行顺序诡异现象谈,你不知道的pthread_create
  19. 白盒测试实践--Day5
  20. javascript大神修炼记(3)——条件分支

热门文章

  1. 批量还原数据库 SQL Server 2008
  2. 再来说说Activity
  3. Java Core 学习笔记——3.char/Unicode/代码点/代码单元
  4. 设计模式 工厂-Factory
  5. MVC dropdownlist使用
  6. 【Python学习笔记】字典操作
  7. MATLAB将矩阵使用.txt文件格式保存
  8. HUE 安装
  9. php 解压 .gz 文件
  10. NServiceBus-进阶