Web安全
基础漏洞
01前端基础【HTML】
02前端基础【CSS】
03后端基础【PHP速通】
04后端基础【PHP面向对象】
05MySQL基础操作
06前后端联动【代码练习】
07SQL注入【1】
07SQL 注入【2】
08SQL注入 Labs
08SQL注入速查表
09XSS
09跨站脚本攻击【XSS】
09XSS Labs
10跨站请求伪造【CSRF】
11服务器端请求伪造【SSRF】
12XML 外部实体注入【XXE】
13代码执行漏洞
14命令执行漏洞
15文件包含漏洞
16文件上传漏洞
17反序列化漏洞
18业务逻辑漏洞
19未授权访问漏洞集合
20跨源资源共享【CORS】
21SSTI模板注入
22并发漏洞
23点击劫持【Clickjacking 】
24请求走私
25路径遍历
26访问控制
27身份验证漏洞
28WebSocket
29Web缓存中毒
30HTTP 主机头攻击
31信息泄露漏洞
32原型污染
33NoSQL注入
API 安全
01web应用程序
02HTTP协议
03API概述
04分类类型
05交换格式
06身份验证
07常见API漏洞
08crAPI靶场
09JWT
10OAuth 2.0身份验证
11GraphQL【1】
11GraphQL【2】
12DVGA靶场
13服务器端参数污染
14API文档
15API Labs
16OAuth Labs
17GraphQL API Labs
18JWT Labs
小程序
小程序抓包
数据库
MySQL
Oracle
MongoDB
Redis
PostgreSQL
SQL server
中间件
Nginx
Apache HTTP Server
IIS
Tomcat
框架
ThinkPHP
Spring
Spring Boot
Django
访问控制
-
+
首页
17GraphQL API Labs
靶场地址:https://portswigger.net/web-security/all-labs#graphql-api-vulnerabilities ## 访问私人 GraphQL 帖子 任务:请找到隐藏的博客文章并输入密码。 1、观察网站有四篇文章,不难发现改变postId参数的传参就可以访问不同的文章。   2、当传参为3时,发现访问不了  3、通过burp进行抓包,找到graphql,将该数据包发送到repeater模块中。  4、将参数改为3,再进行发包观察  成功访问  5、通过burp自带的自省查询,在响应包中找到了postPassword字段。   6、添加postPassword字段。  ## 意外暴露私有 GraphQL 字段 任务:以管理员身份登录并删除用户名`carlos` 1、既然以管理员的身份,就先尝试登录口。  2、在burp 的http history中发现/graphql/v1  3、发送到repeater模块中,鼠标右键选择**GraphQL > Set introspection query**,自省能力   4、将数据包发送到站点地图【site map】模块中。 Burp 的站点地图本质是对目标应用所有可访问资源(如页面、API 端点、参数、数据类型等)的结构化梳理。  5、观察站点地图,发现有不同的请求类型。  6、找到getUser类型,很明显可以观察到,通过传入id,返回id对应的账户名和密码,将数据包发送到repeater模块中。  7、改变ID,查询数据。   8、登录管理员账户,删除账户。  ## 查找隐藏的 GraphQL 端点 任务:请找到隐藏的端点并删除`carlos`。 1、观察目标网站,为购物网站,每件商品有详情页,还有登录功能,尝试进行登录。 商品的详情页通过productId传参    2、在burp的http history中没有发现和api相关的链接。  3、猜测后缀并且输入自省语法。 ``` /api?query={__typename} ```   4、通过burp自带的自省语句。**GraphQL > Set introspection query。**   被拦截,尝试绕过。 5、在__schema后加入%0a,尝试绕过。 ```txt /api?query=query+IntrospectionQuery+%7B%0D%0A++__schema%0a+%7B%0D%0A++++queryType+%7B%0D%0A++++++name%0D%0A++++%7D%0D%0A++++mutationType+%7B%0D%0A++++++name%0D%0A++++%7D%0D%0A++++subscriptionType+%7B%0D%0A++++++name%0D%0A++++%7D%0D%0A++++types+%7B%0D%0A++++++...FullType%0D%0A++++%7D%0D%0A++++directives+%7B%0D%0A++++++name%0D%0A++++++description%0D%0A++++++args+%7B%0D%0A++++++++...InputValue%0D%0A++++++%7D%0D%0A++++%7D%0D%0A++%7D%0D%0A%7D%0D%0A%0D%0Afragment+FullType+on+__Type+%7B%0D%0A++kind%0D%0A++name%0D%0A++description%0D%0A++fields%28includeDeprecated%3A+true%29+%7B%0D%0A++++name%0D%0A++++description%0D%0A++++args+%7B%0D%0A++++++...InputValue%0D%0A++++%7D%0D%0A++++type+%7B%0D%0A++++++...TypeRef%0D%0A++++%7D%0D%0A++++isDeprecated%0D%0A++++deprecationReason%0D%0A++%7D%0D%0A++inputFields+%7B%0D%0A++++...InputValue%0D%0A++%7D%0D%0A++interfaces+%7B%0D%0A++++...TypeRef%0D%0A++%7D%0D%0A++enumValues%28includeDeprecated%3A+true%29+%7B%0D%0A++++name%0D%0A++++description%0D%0A++++isDeprecated%0D%0A++++deprecationReason%0D%0A++%7D%0D%0A++possibleTypes+%7B%0D%0A++++...TypeRef%0D%0A++%7D%0D%0A%7D%0D%0A%0D%0Afragment+InputValue+on+__InputValue+%7B%0D%0A++name%0D%0A++description%0D%0A++type+%7B%0D%0A++++...TypeRef%0D%0A++%7D%0D%0A++defaultValue%0D%0A%7D%0D%0A%0D%0Afragment+TypeRef+on+__Type+%7B%0D%0A++kind%0D%0A++name%0D%0A++ofType+%7B%0D%0A++++kind%0D%0A++++name%0D%0A++++ofType+%7B%0D%0A++++++kind%0D%0A++++++name%0D%0A++++++ofType+%7B%0D%0A++++++++kind%0D%0A++++++++name%0D%0A++++++%7D%0D%0A++++%7D%0D%0A++%7D%0D%0A%7D%0D%0A ```  6、成功之后,将数据包发送到站点地图模块,方便观察。  7、找到了一个getUSer。  8、将数据包发送到repeater模块中,更改id参数,以获得不同的username。    找到了目标账号对应的id号。 8、回到站点地图,发现还有一个数据包,观察命名,好像是可以通过id删除用户账号。  9、发送到repeater模块中,将id修改为3,请求成功。  10、刷新目标网站,通关。 
毛林
2025年9月7日 11:24
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码