최근 lionbridge 사이트를 통해 그동안 쇄도 매드맨의 아프로스 봇넷 의 SQL 인젝션 예증하겠습니다. Sql 코드를 실행할 수 있는 detaiils 분할합니다 통하지 않고, 이 공격은 시도_횟수 T-SQL 에 의해 인코딩입니다 명령의세 ASCII 인코딩되지 이진 구체화하십시오. 이 같은 일이 보입니다.
DECLARE%20@S%20NVARCHAR(4000);SET%20@S=CAST(0x44004500...06F007200%20AS%20NVARCHAR(4000));EXEC(@S);--
내가 조금 두려워 할 수 있었던 것은 이 SQL 에서는 디코딩합니다 났는데, 당시 무슨 일이 일어났습니까 # 39 이 하도 didn& 정확히 알 수 없다.
간단한 도구를 쓸 수 있으므로, 이러한 유형의 디코딩합니다 디코딩합니다 전화했는데 내가 손을 대지 않고도 텍스트 SQL& nbsp;; 서버. 주요 부분은 데릭쉐퍼드와 디코딩할 수 있다.
CAST(0x44004500...06F007200 AS
NVARCHAR(4000))
txtDecodedText.Text =
System.Web.HttpUtility.UrlDecode(txtURLText.Text);
txtDecodedText.Text =
Encoding.ASCII.GetString(Encoding.ASCII.GetBytes(txtURLText.Text));
txtDecodedText.Text =
Encoding.Unicode.GetString(Encoding.Unicode.GetBytes(txtURLText.Text));
txtDecodedText.Text =
Encoding.ASCII.GetString(Encoding.Unicode.GetBytes(txtURLText.Text));
txtDecodedText.Text =
Encoding.Unicode.GetString(Convert.FromBase64String(txtURLText.Text));
Sql Server 를 사용하지 않고 이 인코딩입니다 변환하기에 적절한 방법은 무엇입니까? 가능할까요? # 39, ll 시행하십시오 VB.NET # 39 m, 이후 i& I& 익숙한 코드가 너무.
내 것이 기본 시작했기 때문에, a 의 부분 문자열을 입력 부트해 스니핏 인코딩되지 4445434C41 (구체화합니다 데클레 수 있는) - - 첫 번째 했으나 이 작업을 수행할 수 있습니다.
txtDecodedText.Text = Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(txtURL.Text));
모든 it 의 .and 반품해야 한 것은 동일한 심아이엔큐 I put it 는 이후 각 문자를 변환되었습니다 분할합니다 바이트입니다.
분석할 수 있는 모든 걸 데릭쉐퍼드와 두 문자 # 39 에 있는 모든 방법을 모르는, 이후 don& 수동으로로 바이트입니다 나는 아직 그럴, 이제 내 작은 디코더 구성은 다음과 같습니다.
while (!boolIsDone)
{
bytURLChar = byte.Parse(txtURLText.Text.Substring(intParseIndex, 2));
bytURL[intURLIndex] = bytURLChar;
intParseIndex += 2;
intURLIndex++;
if (txtURLText.Text.Length - intParseIndex < 2)
{
boolIsDone = true;
}
}
txtDecodedText.Text = Encoding.UTF8.GetString(bytURL);
처음 몇 쌍이 셨으며 여바바 优秀 루프, 그런데 이 때, 4C" " 보크 된다. 있다고 페어당 작업자쪽에서 구체화하십시오 형식이 잘못되었습니다.
흥미로운 점은 충분한 수 있는 방법을 단계별로 때는 내가 디버거 및 제스트링 바이트입니다 어레이입니다 분석할 수 있는 점, 내가 뭐 좀, - +" " 최대 있었습니다. 결과.
내가 무엇을 어떻게 해야 합니까; m 없음 - 그림 아웃해야 I& # 39 는 " 직접판매용 cast"; 각 바이트입니다 시도하는 대신 분석할 수 있어?
Convert.ToString(Convert.ToChar(Int32.Parse(EncodedString.Substring(intParseIndex, 2), System.Globalization.NumberStyles.HexNumber)));
내가 그냥 거기서 한 루프를 통해 갈 수 있으며, 그 모든 문자가 2 x 2 " hexified". ) 으로 변환된 후 문자열으로.
닉, 그리고 다른 데 관심이 갔던, 누가 더 이상 및 게시하기를 마이 리틀 애플리케이션 에서 고데플레스. Feel free to 사용 / 수정하십시오 필요한.
먼저 '분리' 다음 '콜' Encoding.UTF8.GetString 시도하시겠습니까 0x. 내 생각에 작동할 수 있다.
기본적으로: 0x44004500
분리하십시오 0x, 그리고 항상 2 바이트는 문자 하나.
44 00 = D
45 00 = E
6F 00 = o
72 00 = r
그래서 it& # 39, s / 문자 / UTF 형식으로 2 바이트 유니코드 말해둘꼐요.