sqlmap相对手工注入的优点
在找到一个注入点后,相信大家都会很烦接下来的注入测试,好不容易找到了一处注入点,我还要手工去使用布尔盲注,时间盲注一个一个测试等,但是sqlmap可以很好的帮助我们完成这个任务,可以去简化我们的测试
sqlmap的命令
在使用sqlmap之前,我们需要知道sqlmap的命令有哪些。
这个我们可以先从最简单的几个开始。对于数据库,里面必不可少的是数据库,表单,列,数据。
1 | -u 指定目标URL (可以是http协议也可以是https协议) |
在知道这些命令后我们就可以来构造完整的命令了
1.对于一个知道注入点的url,我们首先需要得到他的数据库:
1 | python sqlmap.py -u URL --current-db |
这里我们可以得到其相关信息:
2.得到数据库之后我们需要得到某个数据库中的表单(先指定数据库)
1 | python sqlmap.py -u URL -D 数据库名字 --tables |
3.得到数据库和表单后,我们需要知道表单里面有哪些列:
1 | python sqlmap.py -u URL -D 数据库名字 -T 表单名字 --columns |
4.最后我们需要知道某一列中具体的数据:
1 | python sqlmap.py -u URL 数据库名字 -T 表单名字 -C --dump |
对于sqlmap的一个简单使用就是这个流程。更多的命令可以搜索一下sqlmap的命令。如对于一些网站会限制你访问的频率,我们可以用–delay多久访问访问等
实战
确定参数(判断注入点)
对于实际中的sqlmap使用,我们大致可以分为两种get型和post型
get型注入:
对于get传参,我们很好确定参数,url/?后的参数即为我们需要判断注入点的地方,我们可以直接尝试前面数据库,表单,列,数据的思路即可
POST型注入:
对于POST型注入,我们无法直接得到参数,需要先去确定参数,通常我们采用抓包的方法。
这里我们发现有三个参数uname,passwd,submit。
确定了参数我们就可以直接用sqlmap了。
第一种,通过url注入
这里需要采用–data,
1 | python sqlmap.py -u URL --data="key=value" --current-db……………… |
在得到数据库后,我们在命令后面加–tables,–columns等即可
第二种,通过文本注入
这里我们采用-r,注意:-r不能和-u一起用。因为-r中已经包含了url
前面我们抓包得到了传递的数据包,我们将其全部复制下来,放入一个txt文件中,就可以了
1 | python sqlmap.py -r 文件地址 --current-db |
后面的过程就和前面一样了
如何深入使用sqlmap
到这里,已经可以满足大部分需求了。接下来要更深入的了解sqlmap就需要从web的防护入手,
1 | 例如,某个网站为了加强防御,于是对用户的访问时间做了检验,如果一秒 |
你还可以控制sqlmap测试时的线程,这些都需要你对sqlmap的指令有清晰的认识。
建议:先从简单的sqlmap命令使用,熟练后,去深入了解sqlmap的命令,最后就是去实践