sql注入实践初体验

  我们知道都web攻击有着许多种方式,作为一个web开发程序员,不但需要了解常见的攻击方式,还要简单熟悉其攻击方法,楼主不是搞CTF的,但很羡慕那种玩CTF的,这两天玩了一下实验吧的web题,学习了一些关于SQL注入的知识,很多人对SQL注入概念背的很熟悉,但是并没有对其实践过,于是我简单写了两个SQL注入小练习。部署到了楼主的服务器里。这篇文章主要针对和我一样web安全的初级爱好者吧。

先了解一下SQL注入的原理吧:

  所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。 [1]  比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入攻击。

上面这段话我是摘百度百科的,其实SQL注入的最大的原因就是使用原生SQL对参数进行连接查询,利用SQL语句的某些特点,达到改造原生SQL语句的目的。大多数框架已经有着很好的防SQL注入的措施了,我常和别人闲聊说如果你不是很牛,就少写原生SQL吧,框架使用的PDO会有预编译功能,把SQL语句作为一个模板,再进行参数的插入。

最常见的SQL注入就是用注释或者改写条件的方式了。几乎每个教程都会拿这两个进行举例,常用的工具则有SQLmap等。

接下来我们尝试第一个小实践:sql注入简单实践1

点击进去尝试一下,发现显示 lose id  ,说明id是必须参数。那么用get方式传递一个参数吧。例如这样:

我们发觉,该SQL语句是直接使用连接参数的方式进行查询的。那么如何获取所有信息呢?这时候就需要改写条件了,我们如果将where的条件改成true,那么该语句将直接转换为select * from article  。如下图:

传入的参数是 id= -1 or 1=1  ,地址栏会对参数进行urlencode. 好吧,你已经完成了第一个史上最简单的SQL注入了。接下来我们试着使用表单注入吧。

第二个小实践:SQL注入小实践2

如图,咋们看见的是一个表单,题目已经给了用户名和密码了,我们尝试登陆正确的密码: 

密码我并没有进行md5加密,很明显登陆成功了,通过观察SQL语句我们可以发现他也是用的常规的用户名密码匹配机制。那么如果我们把密码匹配给想办法注释掉了,那么这个select便可以匹配到数据。那么登陆也就成功了,我们可以如下操作:

这种注入方式是十分常见的使用"#来提前闭合双引号以及注释后面的条件。还有这另一种写法:

这里要注意的是--后面还要加个空格,两种方式的原理是一样的。很好,史上两个最简单的注入你都完成了。

这两个小栗子基本一个初级程序员都能写出来,不过我觉得很多人并不是像我现在如此的闲,结束了秋招,等待着第二份工作的到来。既然代码写了,还是不要浪费了,于此写个记录博客将这两个小栗子给大家玩玩。

 见证我的web安全学初体验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MClink

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值