sqlmap指定cookie_sqlmap处理cookie数据

Cookie,指某些网站为了辨别用户身份而储存在用户本地终端上的数据。Cookie在web应用中至关重要,用户的唯一标识session id也是存在cookie中的。

那么,在sqlmap使用的时候,也会经常需要考虑到cookie。sqlmap也提供了和cookie相关的命令,本文将会介绍。

1. cookie保存了用户登录状态

很多网站的功能都是需要登陆后才能访问,而http本身是无状态的,因此服务器通常是通过cookie确认用户身份。

sqlmap进行检测时,默认是不带cookie的,发出去的请求会被服务器拒之门外。

这时,我们需要带上cookie才能进行sql注入检测,我们可以通过多种方法增加cookie,注意-v 4表示输出请求头信息,因为cookie在请求头中。

默认情况下不带cookie,注意看header。

root [~] ./sqlmap.py -u 'http://localhost/sqltest.php?id=1' -v 4

[18:57:46] [TRAFFIC OUT] HTTP request [#1]:

GET /testforcoolcard/sqltest.php?id=1 HTTP/1.1

Accept-language: en-us,en;q=0.5

Accept-encoding: gzip,deflate

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

User-agent: sqlmap/1.0.9.8#dev (http://sqlmap.org)

Accept-charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7

Host: 192.168.16.51

Pragma: no-cache

Cache-control: no-cache,no-store

Connection: close

使用--header命令,可以增加自定义header,这里加入一个cookie字段为is_login,可以看到sqlmap发出去的请求已经加入了cookie。

root [~] ./sqlmap.py -u 'http://localhost/sqltest.php?id=1' -v 4 --headers 'Cookie: is_login=1'

[19:06:15] [TRAFFIC OUT] HTTP request [#1]:

GET /testforcoolcard/sqltest.php?id=1 HTTP/1.1

Host: 192.168.16.51

Cookie: is_login=1

Accept-encoding: gzip,deflate

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

User-agent: sqlmap/1.0.9.8#dev (http://sqlmap.org)

Connection: close

使用-r命令,可以模拟指定的请求行为。

一般情况下,手动去复制cookie在放到header里面,太复杂。一般都是通过工具,直接把想要分析的网络请求抓下来,存成一个文本,sqlmap可以自己分析这个文本。

我们可以通过浏览器调试工具复制请求头信息,也可以通过Burpsuite抓包解惑,什么样的方法都可以,总之格式保证是正确的就好。

假设存储文件为test.cookie,sqlmap命令如下,注意此时不需要再输入-u网址了。

root [~] ./sqlmap.py -v 4 -r test.cookie

[19:17:11] [TRAFFIC OUT] HTTP request [#1]:

GET /testforcoolcard/sqltest.php?id=1 HTTP/1.1

Host: 192.168.16.51

Accept-language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3

Accept-encoding: gzip, deflate

Cache-control: max-age=0

Cookie: is_login=1

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0

Connection: close

使用--cookie命令,这个命令更方便。

root [~] ./sqlmap.py -u 'http://localhost/sqltest.php?id=1' -v 4 --cookie 'is_login=1'

[19:21:23] [TRAFFIC OUT] HTTP request [#1]:

GET /testforcoolcard/sqltest.php?id=1 HTTP/1.1

Accept-language: en-us,en;q=0.5

Accept-encoding: gzip,deflate

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

User-agent: sqlmap/1.0.9.8#dev (http://sqlmap.org)

Accept-charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7

Host: 192.168.16.51

Cookie: is_login=1

Pragma: no-cache

Cache-control: no-cache,no-store

Connection: close

2. 参数在cookie中的注入

检查一个请求是否存在sql注入,一般是通过GET和POST进行测试,但是有些时候,参数是放在cookie里面,我们需要对cookie的参数进行注入测试,这个时候怎么办呢?

我们继续以is_login为注入点,直接使用--cookie 'is_login=1'带上is_login参数,并没有用。此时,sqlmap是不会构造不同的is_login进行攻击的。

首先,看一下sqlmap源代码,有对--level说明。

# Test User-Agent and Referer headers only if

# --level >= 3

skip = (place == PLACE.USER_AGENT and conf.level < 3)

skip |= (place == PLACE.REFERER and conf.level < 3)

# Test Host header only if

# --level >= 5

skip |= (place == PLACE.HOST and conf.level < 5)

# Test Cookie header only if --level >= 2

skip |= (place == PLACE.COOKIE and conf.level < 2)

可以看到,我们只要输入的--level大于等于2,cookie就会进行注入检测。

由于此时,我不想检测id参数,只想检测is_login。我们可以通过-p命令指定检测具体对象。

root [~] ./sqlmap.py -u 'http://localhost/sqltest.php?id=1' -v 4 --cookie 'is_login=1' --level=2 -p 'is_login'

do you want to URL encode cookie values (implementation specific)? [Y/n]

sqlmap使用cookie,就写到这里吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值