Security Shepherd实战笔记(答案)
Cross Site Scripting Challenge One
<img οnerrοr=alert(`lalala`);>
What is SQL Injection?
admin’ or '1=1
Insecure Cryptographic Storage Challenge One
加密方式:Caesar cipher
解密工具:https://www.dcode.fr/caesar-cipher
Poor Validation 1
这题是不是有bug(填1*3000 and -100*30)
Broken Authentication and Session Management Challenge One
需要改两处
① 图二选中部分(参数checksum的value已用base64加密,解密后如图一所示)
② 请求主题后两个参数为true
根据分析源代码推测,正确连接为下图选中部分:4a1bc73dd68f64107db3bbc7ee74e3f1336d350c4e1e51d4eda5b52dddf86c992
如下图所示,将选中部分替换即可。
SQL Injection Challenge One
Hint:
SELECT * FROM customers WHERE customerAddress ='xxx';
后台应该有邮箱格式校验,故需满足邮箱格式条件(注意不能有空格):
What are Unvalidated Redirects and Forwards?
https://9.112.73.26/user/redirect?to=https://9.112.73.26/root/grantComplete/unvalidatedredirectlesson?userid=465030851
Broken Authentication and Session Management Challenge Two
本题参考的网上回答。
CSRF 1
这个需要把自己加到一个class里面,再注册一个用户A同样加到该calss里面。然后使用用户A发送GET请求,请求的URL是:(需要替换为自己的id)
https://9.112.73.26/user/csrfchallengeone/plusplus?userid=exampleId
Broken Authentication and Session Management Challenge Three
输入admin,点击sign in,修改请求中的如下cookie参数value为:WVdSdGFXND0=。
此参数通过base64进行了二次加密,如图所示:
Cross Site Scripting Challenge Two
答案:
<input type="button" onmousemove="alert('qwer')" />
解析:事件被过滤了,试了几个onmousemove和onmouseup都可以。。。onerror不行
HTML 事件参考手册:HTML 事件参考手册 (w3school.com.cn)
Insecure Cryptographic Storage Challenge Two
答案:TheVigenereCipherIsAmethodOfEncryptingAlphabeticTextByUsingPoly
解析:
加密方式:维吉尼亚加密维吉尼亚密码在线加密解密 - 千千秀字
解密需要密钥,密钥和加密后的value都需要在源代码里面找到。
thekey是密钥
theKey = “kpoisaijdieyjaf”;
DwsDagmwhziArpmogWaSmmckwhMoEsmgmxlivpDttfjbjdxqBwxbKbCwgwgUyam是加密后的value
if(output == “DwsDagmwhziArpmogWaSmmckwhMoEsmgmxlivpDttfjbjdxqBwxbKbCwgwgUyam”)
页面JS部分源代码如下:
$("#leForm").submit(function(){//2D encryptionvar input = $("#resultKeyAttempt").val();**theKey = "kpoisaijdieyjaf";**var theAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz";// Validate theKey:theKey = theKey.toUpperCase();var theKeysLength = theKey.length;var i;var adjustedKey = "";for(i = 0; i < theKeysLength; i ++){var currentKeyChar = theAlphabet.indexOf(theKey.charAt(i));if(currentKeyChar < 0)continue;adjustedKey += theAlphabet.charAt(currentKeyChar);}theKey = adjustedKey;theKeysLength = theKey.length;// Transform input:var inputLength = input.length;var output = "";var theKeysCurrentIndex = 0;for(i = 0; i < inputLength; i ++){var currentChar = input.charAt(i);var currentCharValue = theAlphabet.indexOf(currentChar);if(currentCharValue < 0){output += currentChar;continue;}var lowercase = currentCharValue >= 26 ? true : false;currentCharValue += theAlphabet.indexOf(theKey.charAt(theKeysCurrentIndex));currentCharValue += 26;if(lowercase)currentCharValue = currentCharValue % 26 + 26;elsecurrentCharValue %= 26;output += theAlphabet.charAt(currentCharValue);theKeysCurrentIndex =(theKeysCurrentIndex + 1) % theKeysLength;}//Check result for validity$("#resultDiv").hide("fast", function(){if(output == "DwsDagmwhziArpmogWaSmmckwhMoEsmgmxlivpDttfjbjdxqBwxbKbCwgwgUyam")$('#resultDiv').html("<p>Yeah, that's correct</p>");else$('#resultDiv').html("<p>No, that's not correct</p>");$("#resultDiv").show("slow");});//Output the output variable/*$("#resultDiv").hide("fast", function(){$('#resultDiv').html("Encrypted Output: " + output);$("#resultDiv").show("slow");});*/
});
Insecure Direct Object Reference Challenge Two
本题的请求参数中的userId通过MD5加密,分别为2,3,5,7,11。以此类推,下面一个数字是13(均为质数)。13加密后的值是:c51ce410c124a10e0db5e4b97fc2af39
工具网址:md5加密,sha1加密–md5在线解密
Cross Site Scripting Challenge Three
双写绕过(四层。。。)
答案:类似下面这种应该都可以(●ˇ∀ˇ●)
<INPUT TYPE="BUTTON" onmouonmonmouonmonmouseupouseupseupouseupseup="alert('XSS')"/>
Insecure Direct Object Reference Bank Challenge
实际做题的时候,因为不小心把用户1的钱汇到hahaha账户(一个不存在的账户)去了,所有1没钱给我的用户2汇了(ノへ ̄、)
SQL Injection Challenge Three
Mary Martin’ union select creditCardNumber from customers where customerName='Mary Martin
CSRF 2
本题做法和CSRF 1一样,URL换成下面这个就行了(注意本题是POST请求)(userID换成自己的)。
https://9.112.73.26/user/csrfchallengetwo/plusplus?userId=8d92219c1f08033fda0f42fe8d465a09a6d47481
CSRF 3
试了好几次都不好使,后来发现是题干给的参数名“csrftoken”,大小写拼写错了。。。正确的是:csrfToken
答案:用其他用户(用户A)发送POST请求,url为https://9.112.73.26/user/csrfchallengethree/plusplus,请求体为userid=8d92219c1f08033fda0f42fe8d465a09a6d47481&csrfToken=19422046358182368578328724819668437487。
注)此处的csrfToken值为用户A的tocken值
CSRF 4
用户A发送请求,url和请求体如下所示(都是题干给的原值),注意题干的参数名又给错了。。。
CSRF 5
总之,如下图所示,把csrfToken的值设为0就成功了。啥原理没有搞懂。
CSRF 6
没搞定,mark
CSRF 7
① 还是按照前面几个的套路,用户A发送一个POST请求如下(url,userId和csrfToken是题干给的):
返回了如下信息:
No CSRF Token Detected for this Challenge. You’re token is now 14416139482578450777120196210836391866
Increment Failed
② 直接把token给我们了,那就用它试一下:
成功了~
CSRF Challenge NEW
用其他用户发送请求,url和post请求主体如下图所示:
Session Management Challenge Four
Base64双重加密,admin的userId为0000000000000021(从当前用户0000000000000001推断而来,就一个个试)
工具地址:Base64加密、解密 - 站长工具
Cross Site Scripting Four
类似下面这种:
https://something" Onclick=alert(123)
SQL Injection 4
UserName: admin
Password: or username=“admin” –
解析:反斜杠\把单引号‘给转义了,相当于去掉了原有的单引号。
于是实际上执行的sql大致如下所示:
select * from tablename where username=**'admin password='** or
username="admin" -- ;
注)-- 后面一定要加空格
参考:Security Shepherd Challenges SQL Injection 4_我,我的博客-CSDN博客
NCTF sql injection 4_雨九九的小窝-CSDN博客
Insecure Cyrpto Challenge 3
加密后数据:IAAAAEkQBhEVBwpDHAFJGhYHSBYEGgocAw==
原数据:This crypto is not strong
不知道是什么加密算法,题目要求得出加密密钥。Mark
Poor Validation 2
随便试的:999999 999999 999999999 9999
返回信息:Your order comes to a total of $-2121842994
应该试溢出导致的
参考:关于int的范围以及溢出问题 - Leon_W - 博客园
Failure to Restrict URL Access Challenge 2
修改请求的URL和请全体如下图:
url和请全体是在页面源代码里找到的:(网上说是JS被加密了)
guestData|278fa30ee727b74b9a2522a5ca3bf993087de5a0ac72adff216002abf79146fa|leAdministratorFormOfAwesomeness|278fa30ee727b74b9a2522a5ca3bf993087de5a0ac72adff216002abf79146fahghghmin|adminData|youAreAnAdminOfAwesomenessWoopWoop
Cross Site Scripting Five
http://xss" "οnclick=alert(123)
SQL Injection Challenge 5
没做出来,mark
SQL Injection Stored Procedure Challenge
不太了解存储过程没做出来,可以参考下面的提示,mark
Insecure Crypto Storage Challenge 4
没做出来,mark
Cross Site Scripting Six
答案同Cross Site Scripting Five:https://xss" "οnclick=alert(123)
SQL Injection Challenge 6
本题可以参考源代码:(反斜杠和单引号被过滤了)
SecurityShepherd/SqlInjection6.java at dev · OWASP/SecurityShepherd · GitHub
PreparedStatement prepstmt = conn.prepareStatement("SELECT userName FROM users WHERE userPin = '" + userPin + "'");
没做出来,Mark
Broken Auth and Session Management Challenge Five
没做出来,mark
Failure to Restrict URL Access 3
① 点击button,cookie里面多了一个参数:currentPerson :“YUd1ZXN0”
② YUd1ZXN0通过base64解密为aGuest
③ 打开页面源代码,找到下图选中部分,作为之后请求的url
④ 利用sql注入,设置currentPerson的值为Im9yIjEiIT0iMA== ,它是"or"1"!="0通过base64加密后的数据。
⑤ 发送请求,响应体如下图所示:
⑥ 上图里面的username通过base64加密后,作为currentPerson参数值发送请求,挨个试一遍,发现MrJohnReillyTheSecond的用户是好使的,对应的值为:TXJKb2huUmVpbGx5VGhlU2Vjb25k
Session Management Challenge Six
这题看起来有点难度,鲜果,mark
Security Misconfiguration Cookie Flag Challenge
mark
Session Management Challenge 7
mark
SQL Injection Challenge 7
mark
Session Management Challenge 8
① 点击button,发现请求中多了一个参数:challengeRole:”LmH6nmbC” LmH6nmbC是经过加密的,加密方式是ATOM-128。工具网址:http://qbarbe.free.fr/crypto/eng_atom128c.php
② 然后就随便试一试admin,administrator啥的,正确答案是superuser,加密后是nmHqLjQknlHs
③ 修改challengeRole值为nmHqLjQknlHs,重新发送请求即可。
部分答案可以参考:
https://sythonic.github.io/2016/OWASP-Security-Shepherd/
https://woj.app/2354.html
https://susiecybersecurity.wordpress.com/category/09_owasp-security-shepherd/
Security Shepherd实战笔记(答案)相关推荐
- Spring实战笔记——(1)Spring之旅(上)
Spring实战笔记--(1)Spring之旅 文章目录 Spring实战笔记--(1)Spring之旅 1.1简化Java开发 1.1.1 激发POJO的潜能 1.1.2依赖注入 依赖注入的实现 构 ...
- python爬虫从入门到实战笔记——第四章Scrapy框架
推荐阅读: python爬虫从入门到实战笔记--第一章爬虫原理和数据爬取 python爬虫从入门到实战笔记--第二章非结构化数据和结构化数据的提取 python爬虫从入门到实战笔记--第三章动态HTM ...
- [转载]秀脱linux实战笔记linux-kernel-3.0.3实战篇
+++++++++++++++++++++++++++++++++++++++++++++++++++++++ 秀脱linux实战笔记linux-kernel-3.0.3实战片篇: QQ: 6 ...
- 机器学习实战笔记(Python实现)-04-Logistic回归
转自:机器学习实战笔记(Python实现)-04-Logistic回归 转自:简单多元线性回归(梯度下降算法与矩阵法) 转自:人工神经网络(从原理到代码) Step 01 感知器 梯度下降
- Unity3D项目实战笔记(10):Unity3D编译IPA的PostEvents–节约时间利器
最近,SDK支付等接入差不多了,就从Unity3D生成IPA (企业版License), 然,需要手动执行的PostEvents竟然多大10项+, 这些我默默的承受了1周时间,每次约浪费20分钟-额外 ...
- 云炬Qtpy5开发与实战笔记 2PyCharm添加QTDesinger扩展并创建第一个.ui文件
1.配置使用QTDesigner扩展工具 在pycharm的项目配置中配置扩展工具,将QTDesigner加入其中: 2.在pycharm中打开QTDesigner 或者: 此时,我们就可以使用QTD ...
- 云炬Qtpy5开发与实战笔记 1开发第一个桌面应用Hello World
云炬Qtpy5开发与实战笔记 0搭建开发环境(傻瓜式安装) 1.打开 Pycharm,选择 Create New Project,创建一个新项目 2.选择Pure Python表示创建一个纯Pytho ...
- mysql颠覆实战笔记(五)--商品系统设计(二):定时更新商品总点击量
继续回到沈老师的MYSQL颠覆实战,首先回顾下上一节课的内容,请大家会看下上节课写的存储过程. 打开prod_clicklog表, 我们只要把日期(不含时分秒)的部分存在数据库中, 如果同一日期有相同 ...
- kaggle实战笔记_1.数据处理
kaggle实战笔记_1.数据处理 数据处理的重要性比模型更重要 如果正负样本是1:100的话,直接拿去做建模,问题是非常大的,如果其评判标准为accuracy的话,如果把任何一个样本都判定为负样本的 ...
最新文章
- 开启注册丨EMNLP 2021论文预讲会,邀你一起共赏自然语言处理学术盛宴(日程全公开)...
- python 字符串去除中文
- 【转】根据起止日期+时间取数
- 自学Springboot(一)
- vue 2个方法先后执行_4个简单靠谱的所得税节税方法,老板看完都批示财务执行...
- ABAP SOAMANAGER暴露的函数function module,以web service方式执行的运行时细节
- 监控系统简介(二):使用 App Metrics 在 ASP.NET Web API 中记录指标
- 离散数学 习题篇 —— 关系的性质
- w10连接远程计算机控制,win10远程电脑怎么设置_win10通过远程桌面控制其他电脑的方法...
- 支付宝app登录授权的infoStr授权登录流程
- 如何批量删除PDF文件中的页面
- 无线接入控制服务器(ac),无线AP控制器是什么?无线AP与无线AC的区别
- [OpenCV实战]24 使用OpenCV进行曝光融合
- NB-IoT 模块连接移动ONENET平台
- 电子招标系统源码之了解电子招标投标全流程
- java piwik_Piwik学习 -- 插件开发
- MicroPython应用基础-准备MicroPython开发板
- 数九寒冬,中老年人要谨防腰椎“出轨
- 软件工程毕设选题推荐
- SMB小传 —— SMB网络文件系统协议介绍
热门文章
- CS224W图机器学习笔记5-消息传递与节点分类
- 机器视觉 零基础Python+OpenCV+MediaPipe手势识别教程(一)手势识别基础入门
- sql的sum函数(与group by,having子句混合使用)
- 火焰特性识别的Matlab实现方法
- html编辑器渗透,渗透测试之编辑器漏洞与旁注、跨目录、跨库、CDN绕过
- 三国演义中最具个性的名人名言
- 计算机主板 辐射,想当年单反镜头竟然还有核辐射?
- 个人空间岁末大回报活动12月26日获奖名单
- Android tips(十二)--Android开发中使用矢量图
- mysqlOracle导入导出txt格式的数据