OWASP Security Shepherd


0x001 错误的数据验证

界面如下:
在这里插入图片描述

1)数据验证不良1

根据提示信息要我们免费获取商品,而且该题目是数据的验证的漏洞
在这里插入图片描述
如上图所示提交请求获取密钥。

3zkOkSP7wMJoyAC5k9rfBJ8SaWFyptQ1VcC66rPva9gjuwOBNuXRxezo7hBs0BWxIDyjZ4b0

提交密钥验证成功

在这里插入图片描述

2)数据验证欠佳2

在这里插入图片描述
实际上过滤了前面有-号的数字,只计算正数。

在这里插入图片描述
上图所示两个正数计算结果出现了负数,也就是内存溢出导致计算结果为负数

OJPL7MyDQRhd0B2zuSqUU4qjxtbmq3+7/O3x6F1Xj7gZj+u26k4UO8uhRC2iH6CIsLtOYVVwsaVdxPkKwI8TGTttjVD1hzTIVXEccTZ4k1dFG8inTbQ3AhBpBZlOxj7ArVuX5YXKMfX7daRy8/mh/EPH8bgoPjCNvxKY8OgiFog=

javaint是32位有符号(所谓“有符号”就是有正负)整数类型,其最大值是0x7fffffff,最小值则是0x80000000。即int表示的数的范围是-2147483648 ~ 2147483647之间。当int类型的运算结果超出了这个范围时则发生了溢出,而且不会有任何异常抛出。

对于

int i = 1000000;
System.out.println(i*i);
-----------------------
-727379968
-----------------------

i设置为1000000,在乘方时Java发现结果(1000000000000)已经超出了int基本数据类型的最大范围(2147483647),于是作了默认的类型提升(type
promotion),中间结果做为long类型存放,返回结果时目标数据类型int不能够容纳下结果,于是根据Java的基础类型的变窄转换(Narrowing
primitive conversion)规则,把结果宽于int类型宽度的部分全部丢弃,也就是只取结果的低32位,于是就得到了上面的结果。

下面用一个十六进制表示的例子阐释这个问题


int i3 = 1000000;
System.out.println (Long.toHexString (i3*i3).toUpperCase());
System.out.println (Long.toHexString (i3*i3).toUpperCase());
System.out.println (Integer.toHexString (i3*i3).toUpperCase());
System.out.println ((int)i3*i3);
---------------------------------------------------
FFFFFFFFD4A51000
1000000000000
D4A51000
-727379968

java在线编译:
在这里插入图片描述

参考文章:

https://njucz.github.io/2017/08/16/java-int%E6%BA%A2%E5%87%BA%E6%80%BB%E7%BB%93/

https://bbs.csdn.net/topics/40216116?utm_medium=distribute.pc_relevant.none-task-discussion_topic-BlogCommendFromBaidu-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-discussion_topic-BlogCommendFromBaidu-3.control

https://www.jianshu.com/p/2bc01a5ebe28

0x002 CSRF

以下题目需要两个用户相互配合,一个用户构造url,一个用户访问该url

这里我的两个账户:

  • admin 构造url
  • administrator 访问url
    在这里插入图片描述
1)CSRF1

在这里插入图片描述
构造url

http://192.168.226.132/shepherd/user/csrfchallengeone/plusplus?userid=c7ad33304313f87dd2f149aa2c7bd301514dfe52

发送给平台的其他用户访问得到密钥

在这里插入图片描述
获得密钥

在这里插入图片描述

d6NpQUG5ZMR6GViexyJc1iOxqH8Ik70DMYdfNx2Y5RODMbT0hid87Y41PjtRIk8xeH3lhFM7pQPiDm4omqCRzHdso+99tsOytHXSaVnwwRrXRdIclGwUmtPep8+oGGCSrl7iALBcS+wFiNhgx6BOUBVd5OlVo58iPEqE+XCrqVc=
2)CSRF2

在这里插入图片描述

和第一关相同,只不过把get请求改为post请求。

在这里插入图片描述
在这里插入图片描述

3)CSRF3

在这里插入图片描述
对比前两关这里多了一个csrftoken参数,F12–>network请求参数中即可查看到该参数。

在这里插入图片描述
发给administrator访问

在这里插入图片描述

0x003 无法限制url访问
1)无法限制URL访问3

在这里插入图片描述
点击按钮抓包查看,看到cookie中一个可疑参数,base64解码出aGuest

在这里插入图片描述

设想该参数可能就是用来判断当前用户身份的,如果我们能够获取管理员的标识在编码为base64可能就会获取到密钥。

这时我们就要思考cookie中的currentPerson在什么时候设置的???

点击按钮后抓包查看网页源码,搜索该参数

在这里插入图片描述
如上图所示发现一个可疑的url,根据单词UserList 判断该url是获取用户列表的。

使用hackbar构造请求得到如下页面

在这里插入图片描述
将上面获取到的所有用户base64编码后进行请求发现所有用户均不是管理员。

这里我们猜想可能是我们带着guest用户的cookie去请求用户列表,所以返回的用户中没有管理员用户的信息。

接下来我们抓包请求用户列表的接口查看是否有可以利用的信息

在这里插入图片描述
这里拼接sql语句使等式恒成立查看所有用户信息

"or"1"!="0             ## or 等式两边只要有一个为true,结果为true
Im9yIjEiIT0iMA==       ## base64编码后

在这里插入图片描述
在这里插入图片描述

MrJohnReillyTheSecond            ## 用户名

TXJKb2huUmVpbGx5VGhlU2Vjb25k     ## base64编码

编码后带入查询

在这里插入图片描述

获得密钥

在这里插入图片描述

2)无法限制URL访问1

依旧是在源代码中查看信息
在这里插入图片描述
构造请求获得密钥

在这里插入图片描述

Lh7S845RCoE7qsR7yBf6Rvqdi+x7fl5ETWNy2RvZ5AgfHhWLI5cDAxSuGsEeU523RXs8nTVp4JlQs3QC4LVJvcFW2IqYpH7jtj0EpJ1cn8U=
3)无法限制URL访问2

抓包查看,请求参数中有个guestData,查看源码发现可疑字符串
在这里插入图片描述

在这里插入图片描述

## 参数值|参数名|请求地址
ismcoa98sUD8j21dmdoasmcoISOdjh3189|guestData|278fa30ee727b74b9a2522a5ca3bf993087de5a0ac72adff216002abf79146fa|

## 注意下面字符串出现2个疑似参数值的地方
leAdministratorFormOfAwesomeness|278fa30ee727b74b9a2522a5ca3bf993087de5a0ac72adff216002abf79146fahghghmin|adminData|youAreAnAdminOfAwesomenessWoopWoop

注意:这里我们不知道哪一个是管理员的参数值

  • leAdministratorFormOfAwesomeness
  • youAreAnAdminOfAwesomenessWoopWoop

一个一个测试,构造请求得到如下图所示

在这里插入图片描述
最终youAreAnAdminOfAwesomenessWoopWoop是管理员请求时所带的正确参数
在这里插入图片描述
得到密钥

24i0Zb5bPYkPIsw7S/DeU0YY9VUXvpRvpR1UlzLYAVbZ++nyRNpKe2th06qGfJaQEdkXBoCjpPP1cdFEwTniNXD+OFrCRYk7JCwD5jFjzUrZynvVih1TCzk1S2SlQ68O
0x004 注入
1 SQL Injection 1

在这里插入图片描述
在这里插入图片描述

## 正常字符查询的sql语句
SELECT * FROM <table_name> WHERE userIdentity = '<Our Input>'

a'or'1'='1
a"or"1"="1

// 因为我们不知道源码中使用哪种方式闭合的

在这里插入图片描述
测试时一直获取不到密钥,可能是靶场有问题

未完待续。。。。。。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多学点技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值