OWASP果汁店是OWASP组织提供的官方提升安全技术的示例网站:
源码:

docker run --rm -p 3000:3000 bkimminich/juice-shop
完成的效果 如下图:
基本按简单到难的方式,涉及的技术大家自己脑补自学。
1、点击搜索,发现url为http://IP/#/search,现使用chrome的F12找到main-es2018.js,在source,打开文件,使用pretty print查看内容。



1、点击提示,组成url为http://IP/#/ftp;或使用上面方法也可以
2、进入查看能看的文件,发现机密文件

在搜索框中输入xss注入用例(参考我写的安全用例https://www.jianshu.com/p/658f10a66acc)
<iframe src="javascript:alert(`xss`)">,
如果出现弹出框,就表示这个脚本运行了。如果换成其他攻击脚本也会执行。所有有这方面的漏洞。

有两种方法实现:
第一种:使用前端技术:修改disabled属性,提交按钮可提交(掌握这个技术可以随意修改任何属性)





1、在左侧边栏中进入【照片墙】,可看如下图:第一张图片显示不出来。




重定向:redirect
1、在提示信息中复制重定向的地址
2、在 main*.js中搜索


1、注册用户,正常输入密码和验证密码,校验通过
2、回头再次修改密码为不同,提交注册成功

点评:开发一 般遵循DRY原则不写重复的代码,测试一般 使用 相反的手段,重复提交,回头修改等 。
1、注册-登陆2、左侧边栏-客服聊天,3、一直 输入就 会得到优惠码。

1、点击帐户,进入登陆页面,在用户名中输入注入 的用例 ' or 0=0 --(可参考我写的安全用例https://www.jianshu.com/p/658f10a66acc),密码随便输入,点击登陆。


1、在第一关通过查看前端js得到一些路由-url的路径



1、抓到添加购物车的请求(fiddler)
2、修改数量为-100,重发(将请求拖拽到composer,修改数量为-100,excute提交)





管理员 可 删除别人的反馈
1、上面通过sql注入方式登陆管理员账号
2、进行管理员界面administration
3、看到所有用户信息和客户反馈直接删除5星客户反馈就行。
下图通过接口层删除的

1、找到购物车的id,更换ID(13-12)

2、直接在地址栏中输入将url中的13改成12就行

1、抓到一个添加购物车的请求
2、修改产品id和购物篮子的id,提交不成功,把购物篮子的id (BasketId)再复制一份(一个自己篮子,一个是别人篮子),再发成功

1、接口层发请求修改角色权限admin
POST向http://localhost:3000/api/Users提交请求:
{“email”:”888@qq.com","password":"admin","role":"admin"} 作为body
并且application/json作为Content-Type

1、删除隐藏hidden标签,激活无法修改的标签,
2、修改id,(用户名)

抓包,修改,重发

很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。
我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A
Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/
我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test
我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r
我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain