WebGoat第三关:AJAX Security(续)

接着上篇日志来。

3-6 JSON Injection

首先在输入框里输入BOS和SEA,这时候触发AJAX,向服务器发送一个请求,服务器返回机票的价格信息,截取返回信息,修改成想要的内容(将第一个没有中转的机票改便宜点),即可提交过关。

或者不修改截取的信息,直接提交,发现机票价格是post过去的,改post过去的信息也行(最后一个值,%24是$符号,改后面的数字即可)。

两种方法均能过关。

经验教训:别用js了吧。。。。

 

3-7 Client Transations Attack

这关挺有意思,首先界面上有个confirm,然后通过点击抓包怎么也过不了关。然后仔细研究过关目标:Your goal is to try to bypass the user's authorization and silently execute the transaction.关键在于silently,所以猜测过关条件是在后台默默的不点击confirm进行转账操作。

也有两种方法过关:

第一种,分析js代码,发现提交的实质是submitData函数,该函数里通过js向服务器某个地址发送了一个GET请求,把这个url记下来,打到浏览器里,回车,过关。这个url大概是这样子的:

http://localhost/WebGoat/attack?Screen=40&menu=400&from=ajax&newAccount=1111&amount=222222&confirm=Confirm

第二种,直接调用submitData函数,本以为firefox在地址栏里直接输入javascript:submitData(1111,22222)就可以,结果貌似不能运行,看来出于某些原因或者某些选项没有打开不能直接在地址栏里运行js。这时候使用firefox的代码速记器(shift+f4),然后把那段代码复制上,运行即可。

经验教训:还是js惹的祸。

 

3-8 Dangerous use of Eval

这关有点意思,题目是让你用js通过alert的方法显示cookie。首先点击purchase会产生一个ajax请求,然后返回一个alert(...)代码,很明显浏览器会执行这段代码。首先我直接截取ajax的返回请求,把这段代码改了,然后没有通过。

其次通过分析发现,服务器端会直接不加任何修改的回传你输入的信息,比如这样:

alert('Purchase completed successfully with credit card "111" and access code "222“‘);

因此我们可以直接在浏览器里注入并提交js,这大概也就是本关的目的。

我使用我输入222的地方(第二个文本框)作为注入点,可以先想象一下注入后的代码的样子,例如:

alert('Purchase completed successfully with credit card "111" and access code "222"');alert(document.cookie+'""');

然后根据比较得出需要注入的部分:

"');alert(document.cookie+'"

提交后居然也没成功,而且没有显示cookie,截取ajax响应发现,居然给我把document.cookie+'""'的加号去掉了,导致语法错误,无奈在截取到的请求中自己手动加上一个加号,然后过关。

(加号被去掉了)
经验教训:别把用户提交的代码不加思索的放到js中运行。(话说我们实验室的qa系统还真被我发现了不少js注入点,而且还是持久注入型的)
 
 
3-9  Insecure Client Storage
第一步是让你输入一个正确的优惠劵码,通过查看js可以发现,优惠劵的代码是直接硬编码到js里面的,是一个数组。当你输入优惠劵码时,首先浏览器把这个数组中的元素拿出来,进行一个变换,按后再和你的优惠劵码进行比较,如果相等则判断优惠劵有效。变换的规则是先逆序,然后每个字母按字母表中的顺序循环左移,当然这个变换规则并不重要。我们要做的就是,拿出随便一个优惠劵代码,直接调用js函数变换一下,得出的结果填入文本框,提交即可过关。
 
第二步是让你打0折,通过截取http请求发现,折扣会作为一个阐述post过去,直接改成0即可,无难度。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值