文章目录

  想必各位登陆教务处的时候在也有看到在个人信息会有一张自己的照片,右击打开会发现其地址形如:
http://xxx.xxx.xxx.xxx/(vow35o45wcy1tqvn3ya05m55)/readimagexs.aspx?xh=xxxx (此处为学号)

  但是这样只能查看到已经登陆的自己的照片,如果想查看他人照片直接改后面的地址时会自动跳转到登陆界面,很明显这里面有访问限制。如果没有页面的源代码根本无法判断如何判断的,后我在黑x上看到了这一部分的aspx.net的代码,如下:

string s1;
string s3=request.querystring["xh"];
if (stringtype.strcmp(request.querystring[lb"],”xszzcxx”,false)!=0)
{
string s2=stringytpe.fromobject(session["username"]);
if(stringtype.strcmp(module_sjf.getstr(“select yhm from yhb where yhm=’ ” + s2 + ” ‘ ”),”",false)==0)
{
if(stringtype.strcmp(s2,s3,false)!=0)

response.redirect(“”);
}
}
mmtp mmtp=new mmtp();
oracleconection orcleconnection =new orcleconnection(configurationsettings.appsettings["Myconn"]+mmtp.jiemi(configurationsettings.appsettings["MyPwd"]),mmtp.str_jm);
if(stringtype.strcmp(request.querystring["lb"],”xxxgsq1″,false)==0)

s1=”select ap from xszpspb where xh=’ ” + s3 +” ‘ ”;
else
s1=”select ap from xszpspb where xh=’ ” + s3 +” ‘ ”;
oraclecommand oraclecommand =new oraclecommand(s1,oracleconnection);
oracleconnection.open();
oracledatareader oracledatareader =oraclecommand.executereader();
while(oracledatareader.read())
{
response.outputstream.write((byte[]) oracledatareader["zp"],1,1048576);
}
oracledatareader.dispose();
oracleconnection.dispose();

代码解释:

  很简单的一段判定代码,s3为xh参数(即为学号);s2是sesion中的username值;s1为要执行的SQL语句。把Lb的值与字符串“xsdzzcxx”比较,如果不等则比较xh参数的值和session中username的值是否相等,如果不相等则访问违规,然后再判断lb参数是不是“xxxgsql”,如果是的话则查询xszpsqb,不是的话则查询xszpb表。

  so,下面cracker的方法也就小菜一碟啦,直接在地址后附加提交lb=xsdzzcxx,直接跳过用户登录判断,轻松搞定。

  随便挑一个学号测试一下021002007(随机测试),成功访问到图片,至此cracker结束。

  下面给出小程序的源码:

  用的是vb,代码非常简单,只给出截图

  由于某些原因,发觉公布源码是个错误,所以撤销图片,sorry!

  如果这都看不懂,别和俺说你过了二级。

  以后会尝试编写无需登录即可查询成绩与课表的小程序。

  欢迎交流,互相学习,共同进步!

  下面附上编译好的小程序:文件名:淮师学子照片查看器v1.0.exe

  文件大小:24 KB

  下载地址:http://1000eb.com/awh0

  本文涉及到的漏洞已经提交报告给学校老师,也向他们提供了修补方案,估计漏洞很快就会被修补,在没失效之前大家赶紧耍耍。

  2012-8-32日漏洞已修补,上述软件已经失效,大家别下了。


如果觉得文章很有趣或对你带来了帮助,欢迎请我喝杯咖啡哦~

文章目录