ASP注入原理是什么?
首先声明几点:一、关于发这篇帖子没有其他的意思,只是想和大家一起学习而已,在学习中提高自己。
二、关于郑州某大学,我已经和他们的管理员联系了,告诉了他们网站的这个漏洞,相信他们很快就会补好。入侵不存在任何恶意!!!
三、就目前来说,我昨晚试的,还有很多ASP网站存在SQL注入漏洞。所以请不要高非法入侵否则后果自负。
四、此篇不是写给高手看的。:)大虾们不要笑我菜。其实我是很菜。
好了,最后转贴请注明出处——河南理工大学好学力行BBS,呵呵。
ok!let's go!
ASP注入原理及手工入侵经过
关于ASP网站的SQL注入入侵的方法网站上已经有很多了。但是我觉得有些写得不是很全面。有些可以入侵的网站,出现的页面是不同的。这需要自己亲手写过ASP网站的才可以领会。所以我想把我的感觉写出来。我希望通过我这篇文章可以使我们学校的ASP初学者可以更熟练asp一些,将来写代码的时候注意这个漏洞,同时使不懂ASP的同学也可以搞手工入侵,呵呵(只要你有时间,和不会出事)。
近来做机械设计课程设计。早就做完了,闲着没事就天天上网。
关于asp网站的SQL注入的漏洞很早就有了。但不是很引起人们的注意。
因为原来我们系的网站就有这样的漏洞。入侵者可以很容易的就搞到了我们系了后台管理帐号,在网站上发新闻,加管理员,删用户等等
搞得我们几个做系网站很没面子。那时候很菜的,也很幼稚。当然现在也很菜。:)
关于asp注入要怎么做呢?说简单了,就是在地址栏里加上一些信息,使服务器执行你的这些SQL语句。从而达到入侵的目的
现在不是很多网站都有信息发布吗。如首页上有新闻的调用。当你打开时可以看见例如:news_show.asp?id=***,show.asp?id=***等的信息,这就是说明这些网站在调用数据库的新闻,或信息。
我们要做的首先就是搞到他们的管理员帐号。
怎么搞呢?聪明的你可能已经猜到了,对在数据库里搞。我们只要搞到他数据库中的表里存放管理员的信息就可以了。具体怎么做了,猜咯,呵呵。不要生气,其实你猜的关键就只有两个,一个表名、一个是字段。但网上说关键是猜具体帐号。但我想至于具体的帐号,只要你猜对这两个了,那是迟早的事!!哪怕它的密码是MD5加密的,破解也是可以的了.
关于ASP注入现在网上流传一个叫NBSI2软件。建议大家不要用任何软件。那个软件我昨天也用过,感觉如果遇到很差了网站,那么破解速度是很快的。但是因为软件不会具体分析,所以很多可以注入的网站它并不能分析出来。
ASP注入步骤:
一、首先判断是否可以注入
在news_show.asp?id=***,show.asp?id=***或是其他的相类似的网页后加上'and rainor'='rainor'呵呵先用我的名字。
如:news_show.asp?id=154 and 'rainor'='rainor'那么它会怎么样呢?
我想只有两种结果。一、ok,没事。二、出错。要是OK就先爽以下,要是出错,在多试几次试试,如加上and 1=1;and 2=2等等试试。如果还是出错,那就有可能管理员对一些字符进行了屏蔽,没办法了。(具体的屏蔽方法我后面会写了)
试完'rainor'='rainor'后可以,就接着加上 and 'rainor'='rain'。这样敲回车后,绝对出错,不出错是不可能的。分析的关键就在这里,软件和人最大的区别也就在这里。为什么软件扫描没错,但最后却可以注入呢。只有一个答案:软件sb,的却软件是sb
出错的结果有好多好多种。最直白的,贴在脸上告诉别人我有漏洞的就是这样的如图:
还有很多情况拉,如:可能出现500错误啊,网页自动转跳啊,网页可以正常显示但新闻内容没有拉等等这里有些只是表面显现。其实本质还是可以注入的。至于原理,精通ASP的异想就知道了
strSql ="Select * From articl where id="& request.QueryString("id")&" Order By upload_time desc "
这是最常见的SQL语句,把request.QueryString("id")用你输入的代替。就以目了然了
strSql ="Select * From articl where id=154 and 'rainor'='rainor' Order By upload_time desc "
加上'rainor'='rain'后成了
strSql ="Select * From articl where id=154 and 'rainor'='rain' Order By upload_time desc "
以上的意思是搜索但id=154和字符串'rainor'='rain'时articl表中的全部字段。出错是因为压根不可能字符'rainor'='rain'
最后我感觉,只要第一次你输入 and 1=1 或 and 'rainor'='rainor'或是其他的你想的。只要不出错,就98%说明该网页可以注入
二、猜解表名和字段名
我想着才是关键的。至于网上说猜具体的帐号,我觉得,只要关键的表名和字段名对了,帐号是一定可以搞到的。
本来这个世上就没有什么100%并且很容易成功的黑客手段。
前面我已经说了原理了,这里不想再重复了,不然要说道猴年马月去了。
艾~~~,打字很不爽阿。(刚刚机子死机,没有保存,现在又在重打):。(
方法:在用前面的方法测试的可以注入的网页后加上 and exists(select * from 某某你猜得表名)
当然猜表名不能乱猜,只猜关键的。比如说:admin,user,users,admin_user,administrator,manager等等等,其实也不是等等等拉,要是你用这几个猜就可以才对好多好多网站,有兴趣你可以试试100%不会让你失望的。
如果你才对表名了,那你就成功了90%以上。因为可以这样被你手工猜对表名的网站,你还怕猜不对字段名。这些网站存放用户帐号的字段名无非就是name,password,userpwd,userpsw,username,membername等等。我为什么这么说了,其实不止我这么说80%以上独立设计过数据库的人都这么说,想想,你会把你的存放用户帐号的字段都叫kl3543u87、ci3dk87fd87等等的你自己都要记个七八百年才记住的字段名吗,不会,至少我不会,要是那样我宁愿被别人入侵。因为不容易看的字段名和表名在写代码时是相当痛苦的事!!!
好了,在才对表明后,你因该用 and exists(select 你猜得字段名 from 你猜到的表名)来猜名段名。
关于猜字段还有一个提高成功率的方法,十分灵,因为这是80%的网络程序员的爱好。我也相当喜欢。那就是,他的网站或后台管理不是有登陆吗,你看他网页的源代码其中他的表单中输入密码的叫什么名字,输入用户名的叫什么名字。一般我就是用这个名字命名对因的数据库字段,我坚信他们也是。原因就是,方便书写。
本文地址:http://www.45fan.com/dnjc/68128.html