Sqlmap能自动获取Google搜索的前一百个结果,对其中有GET参数的URL进行注入测试。当然,所处的网络环境要能访问Google才行。下面是Sqlmap手册中“-g”参数的例子:
python sqlmap.py -g "inurl:".php?id=1""
8.从配置文件中载入攻击目标
参数:-c
使用参数“-c”指定一个配置文件(如:sqlmap.conf),Sqlmap会解析该配置文件,按照该配置文件的配置执行动作。配置文件中可以指定攻击目标,实际上除了攻击目标外,配置文件还可以指定各种参数的值。
Sqlmap的按照目录中有一个名为sqlmap.conf的文件,该文件是配置文件的模板,看看该文件内容,就能明白配置文件是什么意思了。
五、请求
HTTP是一个复杂的协议。HTTP请求有很多种方法(method),可以在不同位置(GET、POST、cookie和User-Agent等)携带不同参数。往往只有在特定位置携带了特定参数以特定方法发起的请求才是合法有效的请求。Sqlmap运行时除了需要指定目标,有时还需要指定HTTP请求的一些细节。下面这些参数都用于指定HTTP请求细节。
1.HTTP方法
参数:–method
一般来说,Sqlmap能自动判断出是使用GET方法还是POST方法,但在某些情况下需要的可能是PUT等很少见的方法,此时就需要用参数“–method”来指定方法。如:“–method=PUT”。
2.POST数据
参数:–data
该参数指定的数据会被作为POST数据提交,Sqlmap也会检测该参数指定数据是否存在注入漏洞。如:
python sqlmap.py -u "http://192.168.56.102:8080/user.php" --data="id=0&name=werner"
3.指定分隔符
参数:–param-del
上一个例子中“–data”的数据“id=0&name=werner”其实由两个部分组成:“id=0”和“name=werner”,默认地以“&”作为分隔符。我们可以使用“–param-del”来指定分隔符,如:
python sqlmap.py -u "http://192.168.56.102:8080/user.php" --data="id=0;name=werner" --param-del=";"
4.cookie
参数:–cookie、–cookie-del、–drop-set-cookie和–load-cookies
有两种情况会用到这些参数:
要测试的页面只有在登录状态下才能访问,登录状态用cookie识别
想要检测是否存在cookie注入
当“–level”设置为2或更高时,Sqlmap会检测cookie是否存在注入漏洞,关于“–level”的更多信息见下文。
(1).“–cookie”和“–cookie-del”
在浏览器中登录目标网站后复制出维持登录状态的cookie,用参数“–cookie”来指定这些cookie,如:
python sqlmap.py -u "http://192.168.56.102:8080/user.php" --cookie "JSESSIONID=E5D6C8C81;NAME=werner;"
与POST参数不同,cookie默认的分隔符为“;”,想要指定cookie中的分隔符,使用参数“–cookie-del”。
(2).“–drop-set-cookie”
若HTTP响应头中有“Set-Cookie”,Sqlmap会自动设置“Set-Cookie”设置的cookie,并对这些cookie进行检测。若不想让Sqlmap这么做,添加参数“–drop-set-cookie”即可,这样,Sqlmap会忽略“Set-Cookie”。
(3).“–load-cookies”
该参数用于从文件中载入Netscape或wget格式的cookie。
wget可以保存和载入cookie,示例如下:
# Log in to the server. This can be done only once.
wget --save-cookies cookies.txt
--post-data 'user=foo&password=bar'
# Now grab the page or pages we care about.
wget --load-cookies cookies.txt
-p
5.User-Agent
参数:–user-agent和–random-agent
默认情况下Sqlmap发送的HTTP请求中的User-Agent值为:
sqlmap/1.0-dev-xxxxxxx ()
使用参数“–user-agent”可以指定一个User-Agent值。但正常的User-Agent值长什么样我们可能并不记得,所以有了参数“–random-agent”,使用该参数,Sqlmap会从文件./txt/user-agents.txt中随机地取一个User-Agent。注意,在一次会话中只有使用同一个User-Agent,并不是每发一个HTTP请求包,都随机一个User-Agent。
用如下命令统计user-agents.txt行数:
cat sqlmap/txt/user-agents.txt | wc -l
结果为4211,当然其中还包含空行、注释等,但总的来说该文件中存储的User-Agent也有4千多个。
当“–level”设置为3或更高时,Sqlmap会检测User-Agent是否存在注入漏洞,关于“–level”的更多信息见下文。
6.Host
参数:–host
使用该参数可以手动指定HTTP头中的Host值。
当“–level”设置为5或更高时,Sqlmap会检测Host是否存在注入漏洞,关于“–level”的更多信息见下文。
7.Referer
参数:–referer
使用该参数可以指定HTTP头中的Referer值。Sqlmap发送的HTTP请求头部默认无Referer字段。
当“–level”设置为3或更高时,Sqlmap会检测Referer是否存在注入漏洞,关于“–level”的更多信息见下文。
8.额外的HTTP头
参数:–headers
使用该参数可以在Sqlmap发送的HTTP请求报文头部添加字段,若添加多个字段,用“n”分隔。如命令:
python sqlmap.py -u "http://192.168.56.101:8080/" -v 5 --headers "X-A:AnX-B: B"
发送的HTTP请求包为:
GET / HTTP/1.1
X-B: B
Host: 192.168.56.101:8080
Accept-encoding: gzip,deflate
X-A: A
Accept: */*
User-agent: sqlmap/1.1.10#stable ()
Connection: close
加参数“-v 5”是为了让Sqlamp输出发送的HTTP请求包,便于我们观察。
9.身份认证
参数:–auth-type和–auth-cred
这些参数用于进行身份认证。“–auth-type”用于指定认证方式,支持以下三种身份认证方式:
Basic
Digest
NTLM
“–auth-cred”用于给出身份认证的凭证,格式是“username:password”。
如:
python sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/basic/get_int.php?id=1" --auth-type Basic --auth-cred "testuser:testpass"
10.基于证书的身份认证
参数:–auth-file