测试登陆页面时,如何测试SQL注入漏洞呢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测试登陆页面时,如何测试SQL注入漏洞呢相关的知识,希望对你有一定的参考价值。

参考技术A  许多网站程序在编写时,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码(一般是在浏览器地址栏进行,通过正常的www端口访问),根据程序返回的结果,获得某些想得知的数据,这就是所谓的SQL Injection,即SQL注入。

  网站的恶梦——SQL注入

  SQL注入通过网页对网站数据库进行修改。它能够直接在数据库中添加具有管理员权限的用户,从而最终获得系统管理员权限。黑客可以利用获得的管理员权限任意获得网站上的文件或者在网页上加挂木马和各种恶意程序,对网站和访问该网站的网友都带来巨大危害。

  防御SQL注入有妙法

  第一步:很多新手从网上下载SQL通用防注入系统的程序,在需要防范注入的页面头部用来防止别人进行手动注入测试。

  可是如果通过SQL注入分析器就可轻松跳过防注入系统并自动分析其注入点。然后只需要几分钟,你的管理员账号及密码就会被分析出来。

  第二步:对于注入分析器的防范,通过实验,发现了一种简单有效的防范方法。首先我们要知道SQL注入分析器是如何工作的。在操作过程中,发现软件并不是冲着“admin”管理员账号去的,而是冲着权限(如flag=1)去的。这样一来,无论你的管理员账号怎么变都无法逃过检测。

  第三步:既然无法逃过检测,那我们就做两个账号,一个是普通的管理员账号,一个是防止注入的账号,如果找一个权限最大的账号制造假象,吸引软件的检测,而这个账号里的内容是大于千字以上的中文字符,就会迫使软件对这个账号进行分析的时候进入全负荷状态甚至资源耗尽而死机。下面我们就来修改数据库吧。

  1.对表结构进行修改。将管理员的账号字段的数据类型进行修改,文本型改成最大字段255(其实也够了,如果还想做得再大点,可以选择备注型),密码的字段也进行相同设置。

  2.对表进行修改。设置管理员权限的账号放在ID1,并输入大量中文字符(最好大于100个字)。

  3.把真正的管理员密码放在ID2后的任何一个位置(如放在ID549上)。

  我们通过上面的三步完成了对数据库的修改。

  另外要明白您做的ID1账号其实也是真正有权限的账号,现在计算机处理速度那么快,要是遇上个一定要将它算出来的软件,这也是不安全的。只要在管理员登录的页面文件中写入字符限制就行了,就算对方使用这个有上千字符的账号密码也会被挡住的,而真正的密码则可以不受限制。追问

如何进行测试呢

参考技术B 可以去打开腾讯智慧安全的页面
然后在里面找到御点终端全系统申请是用
然后使用病毒查杀或者修复漏洞去杀毒和修复漏洞就行

老司机带你学安全测试:SQL注入(SQL Injection)漏洞示例

1、在OWASP Top 10(2017 RC2)中,注入类攻击名列榜首;


2、SQL注入是一种将SQL代码添加到输入参数中,传递到服务器解析并执行的一种攻击手法;


3、以下实际场景实验,打开靶机,大家可以看到这是一个根据用户ID查询用户信息的页面:

老司机带你学安全测试:SQL注入(SQL Injection)漏洞示例


4、在“User ID:  ”输入框里输入“3”,提交,可以看到页面显示ID = 3的用户信息,通过页面返回,我们猜测程序伪代码是:select first_name,last_name from TABLENAME where user_id = '+文本框内容+';

老司机带你学安全测试:SQL注入(SQL Injection)漏洞示例


5、模拟黑客“拖库”,在“User ID: ”输入框里输入“' or 1=1 -- ”,这里的"--"是MYSQL数据库的注释符,在它后面的内容全部作为注释信息,不被执行。提交后,程序拼接并在数据库执行的SQL是:select first_name,last_name from TABLENAME where user_id ='' or 1=1(因为--的存在,程序代码里主动拼接出的'符号,变成了注释内容,躲避了语法错误), 攻击成功,因为“or 1=1”的存在,返回表中所有用户信息(可以和数据库客户端截图对比观察):

老司机带你学安全测试:SQL注入(SQL Injection)漏洞示例


老司机带你学安全测试:SQL注入(SQL Injection)漏洞示例


6、猜表名,在“User ID: ”输入框里输入“' 3' and exists(select * from admin) --”,提交,系统返回dvwa.admin表不存在(类似的,我们可以根据数据库返回,判断数据库的具体类型):


7、继续猜表名,在“User ID: ”输入框里输入“' 3' and exists(select * from users) --”,提交,系统返回id =3的数据,证明数据表dvwa.users存在:


8、上面第5步是SQL注入的基础手法。到现在为止,已经猜到表名,且可以在输入框里输入除了ID以外的其他SQL命令,且获得执行,如果还是想不起来能做什么,那你真的不适合做黑客;


9、最后提几个常用SQL注入的预防方法:

--采用预编译 .PreparedStatement、

--严格检查输入变量的类型和格式、

--过滤和转义特殊字符。



Testfan社区在今年正式上线了,大家可在社区交流分享技术经验,并且有测试大牛答疑解惑

Testfan为广大测试人员提供技术交流群:

Selenium自动化测试群:197180340

接口测试开发群:521192806

Appium自动化测试:534129320

LoadRunner性能测试群:495447734

移动APP专项测试群:567341175

RobotFramework群:566755248        

Testfan各个讲师们,定时为大家带来免费公开课

获取链接:http://www.testfan.cn/#gks

以上是关于测试登陆页面时,如何测试SQL注入漏洞呢的主要内容,如果未能解决你的问题,请参考以下文章

SQL注入(手工篇)

如何测试我的网站是不是存在基本的 sql 注入漏洞?

sql注入

墨者靶场 SQL注入漏洞测试(布尔盲注)

墨者靶场 SQL注入漏洞测试(布尔盲注)

老司机带你学安全测试:SQL注入(SQL Injection)漏洞示例