sqlmap --eval 用法
今天查资料发现 sqlmap 有一个 --eval 的参数
--eval=EVALCODE Evaluate provided Python code before the request (e.g.
对应执行sqlmap 中 \sqlmap-master\lib\core\common.py 中的 evaluateCode 函数
def evaluateCode(code, variables=None):
"""
Executes given python code given in a string form
""" try:
exec(code, variables)
except KeyboardInterrupt:
raise
except Exception, ex:
errMsg = "an error occurred while evaluating provided code ('%s') " % getSafeExString(ex)
raise SqlmapGenericException(errMsg)
我们来看一下 sqlmap 带上 --eval 的执行过程
debug 参数

在\sqlmap-master\lib\request\connect.py 中设置如下断点


点debug
sqlmap 首先会把各个参数都给解析出来,cookie ua 等等

然后接着sqlmap 会进行 evaluateCode(conf.evalCode, variables) 调用 \sqlmap-master\lib\core\common.py evaluateCode 函数,运行到 exec(code, variables)
这中间sqlmap 会进行 pay.load 构造 一系列动作

流程大致是 解析输入命令-> 解析url,header -> exec(code, variables) <-> payload 构造
用法:
--eval "import base64;id=base64.b64encode(id)" // 对id参数值进行base64编码, id 参数必须存在,否则出错
--eval "id=id.replace(' ','/*****/')" // 将id参数值中的空格转换为 /*****/
--eval="_locals['auxHeaders']['Host'] = 'xxx.com'" // 如果host字段存在则将其改为 xxx.com
--eval="_locals['auxHeaders']['xxx'] = 'fdsafdsf'" // 添加xxx头为fdsafdsf
sqlmap --eval 用法的更多相关文章
- Pikahu-SQL注入模块和sqlmap经典用法
一.概述 SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的"数据"拼接到SQL语句中后,被当作SQL语句的一部分执行. 从而导 ...
- ASP.NET中EVAL用法大全
<%# Bind("Subject") %> //绑定字段<%# Container.DataItemIndex + 1%> //实现自动编号<%# ...
- JavaScript学习(2)call&apply&bind&eval用法
javascript学习(2)call&apply&bind&eval用法 在javascript中存在这样几种特别有用的函数,能方便我们实现各种奇技淫巧.其中,call.bi ...
- Sqlmap 工具用法详解
Sqlmap 工具用法详解 sqlmap是一款自动化的sql注入工具. 1.主要功能:扫描.发现.利用给定的url的sql注入漏 ...
- shell eval用法
转自:http://blog.csdn.net/w_ww_w/article/details/7075867 eval可读取一连串的参数,然后再依参数本身的特性来执行.eval是shell内建命令,可 ...
- eval用法
在shell的学习中,我们会遇到这两种符号:反引号(` `)和$(),那么它们之间有什么区别和联系呢? 我们都知道在bash中,反引号和$()都是用来做命令替换的,命令替换就是用来重组命令行,先完成引 ...
- linux之eval用法(高级bash程序员的必修之技)
1. eval command-line 其中command-line是在终端上键入的一条普通命令行.然而当在它前面放上eval时,其结果是shell在执行命令行之前扫描它两次.如: pipe=&qu ...
- eval 用法
计算 eval('1+1') # 2 在字典中提取键 的值 eval('a',{'a':1}) # 1 计算 Boolean 值 eval( 'True',{'a':1}) # True eval(' ...
- python eval 用法
eval 功能:将字符串str当成有效的表达式来求值并返回计算结果. 语法: eval(source[, globals[, locals]]) -> value 参数: source:一个Py ...
随机推荐
- C++ 结构体案例2 升序打印数组中的元素
1 //结构体案例 2 2 #include<iostream> 3 #include<string> 4 #include<ctime> 5 using name ...
- 用传纸条讲 HTTPS
我和小宇早恋了,上课的时候老说话. 老师把我们的座位分得很远,我在第一排,她在最后一排,我们中间隔了很多人. 但我们还是想通过传纸条的方式交流. 我们中间的那些同学,虽然坏心思比较多,但好在可以保证将 ...
- Docker部署ELK之部署logstash7.6.0(4)
前言: logstash 和filebeat都具有日志收集功能,filebeat更轻量,占用资源更少,但logstash 具有filter功能,能过滤分析日志.一般结构都是filebeat采集日志,然 ...
- Eclipse的变量标记开关
例如有如下代码: int var_a = 0; int var_b = var_a + 2; 当光标在var_a变量上时,Eclipse会将代码进行如下标记: int var_a = 0; int v ...
- golang 日志框架(zap)完整配置和使用
目录结构: logger.go文件: package log import ( rotatelogs "github.com/lestrrat-go/file-rotatelogs" ...
- Java之Listener
Java之Listener Listener监听器 监听器有很多种,大部分还是在GUI用的比较多,这里简单记录一点关于HttpSessionListener的 统计session count List ...
- Java线程池中submit()和execute()方法有什么区别
两个方法都可以向线程池提交任务,execute()方法的返回类型是void,它定义在Executor接口中,而submit()方法返回有计算结构的Future对象,它定义在ExecutorServic ...
- pycharm使用Djiago创建第一个web项目
安装PyCharm专业版(注意社区版创建Djiago需要配置,比较麻烦) 创建Djiago项目点上 1.Inherit glocal site-packages(不然pycharm不去下载Djiago ...
- 十一:JavaWeb中的监听器(二)
一.监听域对象中属性的变更的监听器 域对象中属性的变更的事件监听器就是用来监听 ServletContext, HttpSession, HttpServletRequest 这三个对象中的属性变更信 ...
- JDBC基础篇(MYSQL)——使用statement执行DML语句(insert/update/delete)
注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package day02_statement; import java.sql.Connection; import java.s ...