不安全的直接对象引用

点击刷新的个人资料并用burpsuite抓包

将username参数guest改为admin并发送,获取key

失效的数据认证

根据题意输入负数,结果报错

F12查看源码,发现前端验证,可以绕过

先输入一个整数提交并抓包

然后在burp中修改为负数提交

获取到key
安全性设定缺失


用户名爆破出admin


密码爆破出password

失效的会话管理

点击完成该课程并抓包

发现cookie中多了个lessionComplete参数,试着把值改为lessionComplete,把Not删除能否完成

结果成功
没有限制URL访问

一看就是有隐藏内容,直接F12查看源代码

发现隐藏页面

进去发现空白?
往下拉

跨站脚本 (XSS)

直接<script>alert(1)</script>试试

成了!
跨站脚本 (XSS) 1

还是老样子<script>alert(1)</script)试试

发现不行,换个方式<img onerror="alert(1)">试试

成功!
不安全的加密存储

这明显是个base64密码,直接解密

SQL 注入

随便输个错误字符试试

发现报错,可能有SQL注入

闭合字符串注入1'or'1'='1
不安全的加密存储 1

感觉像凯撒密码

发现熟悉的The,应该就是这个:后面的是key
不安全的直接对象引用 1

随便选中一个提交,抓包

没什么异常,依次往下尝试


发现是奇数增加,用burpsuite更改为11,提交

失效的数据认证 1

题目要求免费买个trolls的脸,就是第三个,直接买1个trolls再买-100个最后一个,看能不能抵消掉

直接成功
SQL 注入 1

发现单引号不行了,试试双引号字符型

报错,直接注入真值1"or"1"="1

成功
会话管理 1

直接点击按钮,显示我不是管理员,直接抓包看看

Cookie多了个checksum参数,值看着像base64解密

试试改为administrator,为什么不是Admin,因为题里给了提示,只有administrator才能看



成功
没有限制URL访问 1

点击按钮什么反应都没有,抓个包

依旧是熟悉的checksum,改下试试

竟然没反应!试了Admin,administrator都无反应
只好从源代码下手看看

好家伙,竟然有两个提交函数,其中一个是Admin,肯定是这个了

把两个提交按钮的标签换一下,点击按钮

完美
跨站请求伪造 (CSRF)

emmmmm,直接复制链接,改userId试试


成功
未验证的重定向和转发

将重定向的URL和请求URL组合起来https://192.168.223.148/user/redirect?to=https://192.168.223.148/root/grantComplete/unvalidatedredirectlesson?userid=exampleId
把exampleId更改为自己的id

SQL 注入 2

题目说是Email,那就按邮箱格式注入
payload:'or'1abc@abc.com

在邮箱前面加个1,是真值
NoSQL 注入 1

点击按钮就是普通的回显,抓包看看

题目说是SQL注入,那就试试吧
在发送的数据后加个'试试能不能注入

报错了,现在只要返回值为真就能查询所有数据了
构建NOSQL payload:';return true;'

得到所有信息

题目要Marlo的GamerId
SQL 注入转义


单引号双引号都被过滤了,题目说注入转义,那我引号转义一下试试?

成了
不过这题的payload要变一下,加个注释把后面的引号注释一下1'or"1"="1"#

会话管理 2

题目说了admin,那就试试admin登录

不出所料密码错误,密码爆破应该不可取,下面有个忘记密码找回,点击看看

输入上面显示的邮箱

提示密码重置请求已发送,F12看看请求

显示改变成这个,那试试这个密码

跨站请求伪造 (CSRF) 1

题里给了个很重要的提示
任何用户都能增加你的计数器,除了你自己
所以我们创建个小号,用小号的cookie来访问这个链接
exampleId换成要过关的Id,不能用自己的账号访问自己的链接

显示成功,登录自己账号去看一眼

显示key了
SQL 注入 3

输入单引号报错,应该能注入

没用,试试其他语句,来源 手工SQL注入(二)

好家伙,终于让我试出问题了,原来是or被过滤了,那就只能不用or语句了
根据上面链接的内容进行注入,首先注入出当前数据库

查看数据库内表名

竟然没权限。。。
只好从题入手,看看有没有提示

这几个标紫的单词应该暗示着表、数据库和字段
credit card numbery应该是要查询值的字段,customers应该是表名,customer name应该是查询的条件,Mary Martin应该是要查询的人,题里也提示要Mary的信用卡号作为key提交
构建payload:1'union select creditCardNumber from customers where customerName='Mary Martin'#

成功了
其实payload可以简化一些,,不用刻意增加条件,直接1'union select creditCardNumber from customers#

不过不知道哪个是题要的,而且提交错误也扣分

直接用*也不行,因为只回显一个字段

让我康康CSRF!!
大佬牛🍺
大佬666