SQL注入 为什么会有 num1’ order by num2# , 为什么会有 union select 1,2,3…
- group by / order by
如 1’ order by 3#
group by, order by 后面跟数字,指的是 select 后面选择的列(属性),这里的3 代表第一个属性,依次类推。
当表中只有3个列时,order by 4就会出错
union 是联和查询的一个关键字,这个有一个前提就是必须满足所有的列是相同的,所以在这前面必须要添加一些没有意义的列来作为填充。
e.g. : -1’ union select 1,2,3,4#
1、select语句一般在指明要查询的内容属性(如select id)后,要加from指明是从哪个数据库表中获得数据。
2、select直接加数字串时,可以不写后面的表名,那么它输出的内容就是我们select后的数字,这时我们写的一串数字就是一个数组(或1个行向量)。这时select实际上没有向任何一个数据库查询数据,即查询命令不指向任何数据库的表。返回值就是我们输入的这个数组,这时它是个1行n列的表,表的属性名和值都是我们输入的数组。
3、如果我们直接输入查询字段进行查询,语句会非常冗长,而且很可能还需要做很多次测试,这时候我们利用一个简单的select 1,2,3,根据显示在页面上的数字就可以知道哪个数字是这个“通道”,那么我们只需要把这个数字改成我们想查询的内容(如id,password),当数据爆破成功后,就会在窗口显示我们想要的结果。