前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL注入精讲

SQL注入精讲

作者头像
用户1467662
发布2018-03-30 10:34:54
7160
发布2018-03-30 10:34:54
举报
文章被收录于专栏:农夫安全农夫安全

SQL注入的三大块:

GET

POST

Cookie

GET

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 -- ’注释掉怎么样?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络安全社区悦信安 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SQL注入的三大块:
    • GET
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档