SQL Injection 처리 2
SQL Injection 처리 이 글을 작성한 지 한 일주일 정도가 흘렀는데…
블로그에 이 키워드로 방문하시는 분이 꽤 많으신 듯…
해당 키워드를 다시 찾아보니…
구글에 찾아보니 검색된 사이트가 28300여 개로 늘었다. (허걱 4배나…)
음 “빵빵용용”님의 새 글(http://saybox.tistory.com/546 )을 읽어 보면 이 공격의 원인도 보이고 해결 방법도 보인다.
하지만…
Request 를 받는 모든 소스를 수정한다는 것은…만만한 작업은 아니더라...
지금 사이트도 Request를 검색해보니 4~500개
하지만 이 사이트는 1년에 글 한 개 올라오기 힘든 회사 소개 홈페이지 인데…
그것을 위해 게시판 소스를 다 뒤집자니 시간이 아깝고… 검색된 리퀘스트 문장은 4~500개에 가깝고…
그래서 어떻게 편하게 할까 고민해 봤다.
그리고 생각해 난 방법이
이렇게 커넥션 문장 아래에… GET과 POST를 모두 조사해서 DB 문장이 들어오면 에러메시지를 뿌리고 Response.end !!
(사이트 성격에 따라 이렇게 처리해도 무관한 사이트도 있을 것 같아서 올려 봅니다. 참고하세요.!~)
<% Set pConn = Server.CreateObject("ADODB.Connection")
pConn.Open sConnStr Function DBStringCheck(strRequest,strCompare) if instr(Lcase(strRequest),strCompare) > 0 then
response.end end if End Function For Each item1 in Request.QueryString '//차단할 단어를 입력 call DBStringCheck(Request.QueryString(item1),chr(39)) call DBStringCheck(Request.QueryString(item1),"exec") call DBStringCheck(Request.QueryString(item1),"select") call DBStringCheck(Request.QueryString(item1),"xp_") call DBStringCheck(Request.QueryString(item1),"char") call DBStringCheck(Request.QueryString(item1),";") Next For Each item1 in Request.Form '//차단할 단어를 입력 call DBStringCheck(Request.Form(item1),chr(39)) call DBStringCheck(Request.Form(item1),"exec") call DBStringCheck(Request.Form(item1),"select") call DBStringCheck(Request.Form(item1),"xp_") call DBStringCheck(Request.Form(item1),"char") call DBStringCheck(Request.Form(item1),";") Next %> |
'Web Tech > ASP.NET,ASP' 카테고리의 다른 글
IIS7 - HTTP 모듈과 HTTP 처리기 비교 (0) | 2009.05.07 |
---|---|
IIS7 - HTTP 모듈 이벤트 순서 (0) | 2009.05.07 |
SQL Injection 처리 (2) | 2008.11.06 |
[ASP]서버의 특정파일에서 특정부분만 정보를 읽어오기 (1) | 2008.08.11 |
SQL Injection 처리
꼭 바쁜 날 문제가 터지더라~
어쨌든 회사의 홈페이지에 DB를 조회하는 페이지들 스크립트 오류(?)를 내길래 확인해보니
<script src=http://s.ardoshanghai.com/s.js></script> 이런 짱깨의 필이 나는 주소가 잔뜩 들어있더라…...
그래서 구글에 검색해보니…. 헉 7720개….
http://www.google.co.kr/search?complete=1&hl=ko&newwindow=1&q=http%3A%2F%2Fs.ardoshanghai.com%2Fs.js&lr=&aq=f&oq=
(흑 홈페이지 내가 만든 것 아닌데 T.T)
그리하여 찾아보니 http://saybox.tistory.com/453 이렇게 좋은 글이 ^^
저 7720개의 사이트들도 빨리 고쳐져야 할텐데…..
'Web Tech > ASP.NET,ASP' 카테고리의 다른 글
IIS7 - HTTP 모듈과 HTTP 처리기 비교 (0) | 2009.05.07 |
---|---|
IIS7 - HTTP 모듈 이벤트 순서 (0) | 2009.05.07 |
SQL Injection 처리 2 (2) | 2008.11.13 |
[ASP]서버의 특정파일에서 특정부분만 정보를 읽어오기 (1) | 2008.08.11 |
[ASP]서버의 특정파일에서 특정부분만 정보를 읽어오기
<%
'//Writer: SkyLimit
'//Language: ASP
'파일 경로
TextFilePath = "c:\InetPub\test.ini"'//요부분만 수정하세요.
'//파일 시스템 개체 생성
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
'//파일 존재 검사
if fso.FileExists(TextFilePath) then
'//파일 오픈
Set f = fso.OpenTextFile(TextFilePath, 1,false,0) '(fname,mode 1:forReading,create,format 0:ASCII)
Do Until f.AtEndOfLine '파일의 4096 라인까지 읽는다.
buffer= buffer & f.read(4096)
loop
f.close
Set f = Nothing
'//문자열 비교
strArray = Split(buffer,vbcr & vblf)
For i = 0 To UBound(strArray) - 1
if InStr(strArray(i),"AAA") > 0 Then
response.write strArray(i)
End If
Next
else
'//파일 없음
response.write TextFilePath & "이 지정된 경로에 없습니다."
end If
Set FSO = Nothing
%>
'Web Tech > ASP.NET,ASP' 카테고리의 다른 글
IIS7 - HTTP 모듈과 HTTP 처리기 비교 (0) | 2009.05.07 |
---|---|
IIS7 - HTTP 모듈 이벤트 순서 (0) | 2009.05.07 |
SQL Injection 처리 2 (2) | 2008.11.13 |
SQL Injection 처리 (2) | 2008.11.06 |
Encoding and Decoding base64 with (ASP,PHP,JSP)
<% Option Explicit Dim sBASE_64_CHARACTERS, sBASE_64_CHARACTERSansi Function strUnicodeLen(asContents) Function strUnicode2Ansi(asContents) strUnicode2Ansi = ""
Function strAnsi2Unicode(asContents) strAnsi2Unicode = "" Function Base64encode(asContents) Len1 =LenB(asContents) M3=Len1 Mod 3 IF m3 > 0 Then lsResult = "" For lnPosition = 1 To Len2 Step 3 Byte1 = AscB(MidB(lsGroupBinary, 1, 1)) : SaveBits1 = Byte1 And 3 Char1 = MidB(sBASE_64_CHARACTERSansi, ((Byte1 And 252) \ 4) + 1, 1) lsResult = lsResult & lsGroup64 IF M3 > 0 Then Byte1 = AscB(MidB(lsGroupBinary, 1, 1)) : SaveBits1 = Byte1 And 3 Char1 = MidB(sBASE_64_CHARACTERSansi, ((Byte1 And 252) \ 4) + 1, 1) IF M3=1 Then lsResult = lsResult & lsGroup64 Base64encode = lsResult Len1 = LenB(asContents) IF Len1 < 1 Or M4 > 0 Then IF MidB(asContents, Len1, 1) = ChrB(61) Then M4 = 3 IF M4 = 0 Then For lnPosition = 1 To Len2 Step 4 Char1 = InStrB(sBASE_64_CHARACTERSansi, MidB(lsGroup64, 1, 1)) - 1 Byte1 = ChrB(((Char2 And 48) \ 16) Or (Char1 * 4) And &HFF) lsResult = lsResult & lsGroupBinary IF M4 > 0 Then Byte1 = ChrB(((Char2 And 48) \ 16) Or (Char1 * 4) And &HFF) IF M4=2 Then lsResult = lsResult & lsGroupBinary Base64decode = lsResult
response.write "[" & DecodeA & "] was encoded to [" & EncodeA & "]<BR>" |
PHP Base64
<? $Str = 'mTVisman123456'; $Test = base64_encode($Str); $TestD = base64_decode($Test); printf($Test.$TestD); ?> |
JSP Base64
<%@ page import="java.net.*, java.io.*" %> <%@ page import="java.util.*" %> <%@ page import="java.lang.*" %> <%@ page import="java.lang.String" %> <%@ page import="java.security.*" %> <%@ page import="sun.misc.BASE64Encoder" %> <%@ page import="sun.misc.BASE64Decoder" %> <% BASE64Encoder encoder = new BASE64Encoder(); BASE64Decoder decoder = new BASE64Decoder(); String StrOUT, Reversing;
Reversing = new StringBuffer(Test).toString(); StrOUT = new String(CookieString, "ISO-8859-1"); out.println("[" + StrOUT + "] was decoded to [" + Test + "]<br>"); |
출저:http://cafe.naver.com/webexploit/3