注入注入注入注入....哎!!

xxxxxxxxia 2009-11-29 07:38:06
网站被注入,因为程序不是自己写而且网站也很大不知道注入点在哪,查了网站访问日志也找不到(其实可能是没有查到,可能是方法不当吧,但是文件太大了)。
所以就想通过数据库的记录找到是通过什么方式注入的,注入代码是什么?
试过log explore(没有SA密码,进不了)没成功。
请问各位,1.在网站访问日志中查找注入点一般有哪些方式?2.怎么查看所有对数据库执行过的操作 3.在不知道注入点无法改程序的情况下怎么在数据中防止注入(麻烦不要贴一大堆防注入基础知识的文章给我,谢谢)
4.我想过设置一个触发器,当修改操作的字符中包含注入的代码(通常都是包含一段js),但是不知道怎么在触发器中设置事务,这种方法行不行?

数据库为 sql server 2000
救命呐,先谢谢各位了
...全文
98 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Felven 2011-06-15
  • 打赏
  • 举报
回复
study
yang677888 2009-11-29
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 icelovey 的回复:]
对注入不了解, 搬凳子来学习~~
[/Quote]

看看楼上的,学习啦
icelovey 2009-11-29
  • 打赏
  • 举报
回复
对注入不了解, 搬凳子来学习~~
--小F-- 2009-11-29
  • 打赏
  • 举报
回复
说了那么多,其实防范的方法很简单,我们把特殊字符(如and、or、'、")都禁止提交就可以防止注入了。ASP传输数据分为get和post两种, get是通过将数据添加到URL后提交的方式,post则是利用邮寄信息数据字段将数据传送到服务器。
--小F-- 2009-11-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xxxxxxxxia 的回复:]
引用 1 楼 js_szy 的回复:
http://topic.csdn.net/u/20081205/09/3dd06076-bcbe-45d4-998c-8999fdbe6fae.html

小F ,给我个明路吧....
[/Quote]
1、对,限制用户输入肯定有效
2、应该也可以做到,但正则不是一种高效的方法,用HtmlEncode的方法可以有效防止空格等被DBMS解释,但注意别把编码、解码搞反了;存储过程是DBMS执行的一段程序,把数据操纵交给存储过程执行,而不是提交SQL语句,可以有效防止SQL注入。
3、地址栏的Sql攻击,下面我引用了一段资料解释,他关于机制说的较清楚,关于解决,只是从客户端考虑的,实际上用存储过程等都可以防范。
资料:
首先,入侵者会对一个网站确定可不可以进行注入,假设一篇文章的地址为:http://www.naohou.cn/show.asp?id=325一般会以提交两个地址来测试,如:
http://www.naohou.cn/show.asp?id=325 and 1=1
http://www.naohou.cn/show.asp?id=325 and 1=2
第一个地址后面加了 and 1=1,构成的SQL语句也就变为了:Select * from 表单名 where id=1 and 1=1这句话要成立就必须and前后语句都成立。那么前面的文章地址是可以访问的,后面的1=1也是客观成立的,那么第一个地址就可以正常显示;相反1=2是显然不成立的,关键就看这步了,如果提交and 1=2页面还是正常显示说明他并没有将and 1=2写入SQL语句,此站也就不存在注入漏洞;但如果提交and 1=2之后返回了错误页面则说明此站点将后面的语句带入了SQL语句并执行了,也就说明他可以进行SQL注入。(注:如果地址后面跟的是news.asp?id='1'就得变为news.asp?id=1' and '1'='1来补全引号了)
那么,知道可以注入后入侵者可以做什么呢?
这里就简单的说一下,比如提交这样的地址:
http://www.naohou.cn/show.asp?id=325 and exists (select * from 表名 where 列名=数据)
根据返回的正确或错误页面来判断猜的表名和列名是否正确,具体实现时是先猜表名再猜列名。当猜出表名和列名之后还可以用ASC和MID函数来猜出各列的数据。MID函数的格式为:mid(变量名,第几个字符开始读取,读取几个字符),比如:mid(pwd,1,2)就可以从变量pwd中的第一位开始读取两位的字符。ASC函数的格式为:ASC("字符串"),如:asc("a")就可以读出字母a的ASCII码了。那么实际应用的时候就可以写为:asc(mid(pwd,1,1))这样读取的就是pwd列的第一个字符的ASCII码,提交: asc(mid(pwd,1,1))>97以返回的页面是否为正确页面来判断pwd列的第一个字符的ASCII码是否大于97(a的ASCII码),如果正确就再试是否小于122(z的ASCII码)……这样慢慢缩小字符的ASCII码的范围,猜到真实的ASCII码也只是时间的问题。一位一位的猜就可以得到数据库中的用户名和密码了。还有一种ASP验证缺陷——就是用户名和密码都输'or '1'='1,构造SQL语句Select * form 表单名 where username='' or '1'='1' and pwd='' or '1'='1'就可以达到绕过密码验证的目的。
说了那么多,其实防范的方法很简单,我们把特殊字符(如and、or、'、")都禁止提交就可以防止注入了。ASP传输数据分为get和post两种, get是通过将数据添加到URL后提交的方式,post则是利用邮寄信息数据字段将数据传送到服务器。
xxxxxxxxia 2009-11-29
  • 打赏
  • 举报
回复
dawugui老大,这只是补救措施不解决根本问题啊,难道每注入我都替换一次?
我看看你给我网址
dawugui 2009-11-29
  • 打赏
  • 举报
回复
SQL注入专题
http://topic.csdn.net/u/20081205/09/3dd06076-bcbe-45d4-998c-8999fdbe6fae.html
dawugui 2009-11-29
  • 打赏
  • 举报
回复
数据库被注入攻击 所有文本型字下段数据都被加了 <script_src=http://ucmal.com/0.js> </script>
怎么删掉?


--sql 2000解决方法
DECLARE @fieldtype sysname
SET @fieldtype='varchar'

--删除处理
DECLARE hCForEach CURSOR GLOBAL
FOR
SELECT N'update '+QUOTENAME(o.name)
+N' set '+ QUOTENAME(c.name) + N' = replace(' + QUOTENAME(c.name) + ',''<script_src=http://ucmal.com/0.js> </script>'','''')'
FROM sysobjects o,syscolumns c,systypes t
WHERE o.id=c.id
AND OBJECTPROPERTY(o.id,N'IsUserTable')=1
AND c.xusertype=t.xusertype
AND t.name=@fieldtype
EXEC sp_MSforeach_Worker @command1=N'?'




--sql 2005 解决方法
declare @t varchar(255),@c varchar(255)
declare table_cursor cursor for
select a.name,b.name from sysobjects a,syscolumns b
where a.iD=b.iD AnD a.xtype='u'
AnD (b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167)
declare @str varchar(500)
--这里是你要替换的字符
set @str='<script_src=http://ucmal.com/0.js> </script>'
open table_cursor fetch next from table_cursor
into @t,@c while(@@fetch_status=0)
begin
exec('update [' + @t + '] set [' + @c + ']=replace(cast([' + @c + '] as varchar(8000)),'''+@str+''','''')')
fetch next from table_cursor into @t,@c
end
close table_cursor deallocate table_cursor;


Mirana_NightShade 2009-11-29
  • 打赏
  • 举报
回复
学习
xxxxxxxxia 2009-11-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 js_szy 的回复:]
http://topic.csdn.net/u/20081205/09/3dd06076-bcbe-45d4-998c-8999fdbe6fae.html
[/Quote]
小F ,给我个明路吧....
Q315054403 2009-11-29
  • 打赏
  • 举报
回复
可跟踪到,有偿支持
--小F-- 2009-11-29
  • 打赏
  • 举报
回复
4.我想过设置一个触发器,当修改操作的字符中包含注入的代码(通常都是包含一段js),但是不知道怎么在触发器中设置事务,这种方法行不行?

这个不可行 注入的太多
华夏小卒 2009-11-29
  • 打赏
  • 举报
回复
可以参考一下,具体不是很懂
--小F-- 2009-11-29
  • 打赏
  • 举报
回复
就想通过数据库的记录找到是通过什么方式注入的,注入代码是什么?

动态语句会导致注入

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧