GET
POST
Cookie
GET提交方式:在URL传递参数的请求,就是GET方式,是以name=value的方式出现
例如:http://xx.com/demo.php?id=1这就是一个很典型的GET请求.
这个id可能就是像数据库中进行查询匹配值,这个时候就可以在后面加上’ and 1=1 and 1=2这些sql语句进行测试是否可注入
这是我数据库中的内容:
存在注入页面代码:
很简单的一个页面.后面加个单引号试试
And 1=1 测试正常 and 1=1测试错误
看一下sql语句的执行过程
Id = 1时,构造的SQL语句
select * from news where id = 1’在后面加了一个单引号,数据中又没有1’这个id记录,自然就报错
select * from news where id = 1 and 1=1正常
select * from news where id = 1 and 1=2错误
And是且的意思,也就是两边的条件都为真是就是真,否则就是假
1=1吗?1=2吗?不懂的请补数学,谢谢
对输入的字符没有进行过滤,就造成了一个注入,上面所说的注入是数字型注入,还有一种是字符型,本质都是一样的
只需要将这里的条件加个单引号就行了
这个时候输入’是可以报错的,但是and 1=1 and 1=2都是正常页面,简单的看一下SQL语句
Select * from news where id = ‘1’’这里输入的单引号吧前面的闭合了,但后面的怎么办?
Select * from news where id = ‘1 and 1=1’因为mysql数据库会吧这个字符串中的从第一个数字到第一个非数字这部分的数字拿出来作为数字来查询,之前好像听别人提过sqlserver貌似不会这样,自己试试==
And 1=2 同理的.
咋办勒? 输入俩单引号试试
正常了.SQL语句:select * from news where id = ‘1’’’两个都闭合了.
那我们是不是就可以写select * from news where id = ‘1’ and 1=1 ‘’?
很遗憾,不行,如果是个空字符串的话mysql可以认为他没发生,但是你中间插的数据是什么玩意?
继续换个SQL语句:select * from news where id = ‘1’ and 1=1 -- ’注释掉怎么样?