releasethecow / monster Goto Github PK
View Code? Open in Web Editor NEWCode Monster SB code
Code Monster SB code
举个栗子
curl -o this-is-page.html -D this-is-cookie.txt http://baidu.com
下次访问带上 “this-is-cookie.txt” 作为 cookie
curl -o this-is-page.html -D this-is-cookie.txt -b this-is-cookie.txt http://baidu.com
param | e.g. | desc |
---|---|---|
-o |
-o this-is-page.html | 输出内容目标文件 |
-D |
-D this-is-cookie.txt | cookie |
-b |
-b this-is-cookie.txt | 带上浏览器信息(user-agent) |
-A |
-A "Mozilla/4.0 ..." | cookie |
-x |
-x 123.45.67.89:1080 | 使用代理 |
-e |
-e "mail.yahoo.com" | cookie |
-d |
-d "param1=value1¶m2=value2" | 设置POST请求和 body |
早上有朋友群里发了这样的信息
#早起点一点#亲们,点这个链接每天可以投一票,免关注免注册。谢谢~
http://{马赛克}/ebiz/activity/opusActivity.action?action=toOpus&ajax=true
__xx号, {名字}__
于是好奇上去看了一眼, chrome 上抓了下请求, 只是一个简单的 POST 请求, 并不复杂, 但是,
这个是按IP的...如果是TCP的话比较难搞... 如果后台是根据http包头判断的话是可以伪造的...
于是决定使用代理
研究了一下, 设置代理就可以了, 连 GET 请求也接受呢...为了结果的公正性, 就拿远远抛离其他人的第一名做例子…
curl -x 183.233.179.172:8080 http://{马赛克}/ebiz/activity/opusActivity.action?action=doVote&channel=1&activityCode=20160715&opusCode=5&ajax=true
我只试了下这个代理是可以的 183.233.179.172:8080
➜ ~ curl -x 183.233.179.172:8080 http://{马赛克}/ebiz/activity/opusActivity.action\?action\=doVote\&channel\=1\&activityCode\=20160715\&opusCode\=5\&ajax\=true
{"object":{"id":43,"createdUser":"425365","activityCode":"20160715","opusCode":"5","createdDate":1470012245000,"modifiedDate":1473820885326,"modifiedUser":null,"isDelete":0,"voteNum":"2959","voteDate":null},"success":true,"resultCode":"1","resultInfoDesc":"交易处理成功","validateErrors":null}%
再试一次
➜ ~ curl -x 183.233.179.172:8080 http://{马赛克}/ebiz/activity/opusActivity.action\?action\=doVote\&channel\=1\&activityCode\=20160715\&opusCode\=5\&ajax\=true
{"object":null,"success":false,"resultCode":"0","resultInfoDesc":"您已经投过票","validateErrors":null}%
每个代理也算IP, 只能用一次
当然, 可以 -A伪造 UA 和 -b 伪造 cookie, -d 设置POST, 管理员发现的几率不会很大的
也就是说, 写一个像这样的脚本, 随便在网上找一批随便能用的免费代理, 轮一遍就可以把排名怼上去了 :)
当然我不会这么做的, 我又不抢月饼对不对? 啊不, 因为我价值观正确. :)
早上群里面有个朋友(zhi)有(zhang)突然 at 了全家, 问这事什么, 有么有人牛逼了能解析下不:
(!(~+[])+{})[--[~+""][+[]]*[~+[]]+~~!+[]]+({}+[])[[~!+[]]*~+[]]
作为一个数十年如一日写代码的好(chou)孩(jiang)子(you), 听到有人在召唤我, 一看就觉得应该用 JavaScript 去解释, 因为 "能用 js 实现的终将被 js 改写"
.
因此这个表达式应该这么理解(没错, 高亮不一样而已):
(!(~+[])+{})[--[~+""][+[]]*[~+[]]+~~!+[]]+({}+[])[[~!+[]]*~+[]]
首先本身只是一个普通表达式, 我们可以分解这样看 (expression)[expression]; 然后隐式把 () 的内容转化为一个数组解释.
我们假设这个表达式并没有问题, 通过程序员精致的断句, 那么这句表达式是两个()[]相加, 即
其实这个问题核心是需要理解清楚 js 运算符的优先级. 然后拆解分析.
(expression1)[expression2] + (expression3)[expression4]
我们需要分开去理解,
// 第一个表达式 (expression1)[expression2]
(!(~+[])+{})[--[~+""][+[]]*[~+[]]+~~!+[]]
// 第二个表达式:
({}+[])[[~!+[]]*~+[]]
那么问题就好理解了, 开始拆解一步一步分析
通过 expression1 为切入.
(expression1)
即 (!(~+[])+{})
=> (非(取反+一个数组对象) + 一个对象)
=> !(非(+[])) + 对象
;
根据 js 自动转义, +[]
解析为把一个长度为 0 的数组转化为一个数字, 因数组长度为 0, 返回数字 0;
取反0
取值 -1, 这个好理解, 可以了解下取反原理, 不累赘; !(-1)
取反 -1 不为 0, 自动转义 Boolean 为真, 取反则为假 => false;
加上后面解释, 则是 false + 对象
, 自动转化对象为字符串则是 "false[object Object]" 作为一个字符串被解释;
"false[object Object]" 后面加 [] 自动转化为数组解释;
[expression2]
=> [--[~+""][+[]]*[~+[]]+~~!+[]]
这句话比较复杂, 我们先拆解下
expression2
=> [--[~+""][+[]]
*[~+[]]
+~~!``+[]
]
+[]
=> 0+""
=> 0=> [--``[-1][0]
*[~0]
+~~!
0`]
=> [--``[-1][0]
*[-1]+~~
!0`]
=> [--[-1]
*[-1]+ ~~``true
]
~~``true
按位数取非再取非(别打人) => ~``0
=> 1--[-1]
=> --(-1) => -2=> (-2 * -1) + 1 => 3
所以其实在[]转化为数字 3.
真棒...
那么答案就来了 "false[object Object]"[3] 转化解释, 答案就是数组的第3
个, 注意数组js 里面 3代表要数四下, 0, 1, 2, 3, 就是字符(串) "s"
后面同理, 我们不太复杂解释后面的内容, 反正泽铭也看不懂, 泽铭是谁也不用关心, 不重要. 解析为字幕 b
=> (expression1)[expression2] + (expression3)[expression4]
=> s + b
=> "sb"
=> !@#$%^&*, 靠, 我似乎要报警了.
参考资料 js 运算符的优先级
考的是 javascript 的运算理解细节问题.
如果作为面试题的话建议看分解逻辑, 而不是答案本身.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.