Dillie-O
그는 물었다 12년 전
58

C # 의 디코딩 /VB.NET T-SQL 캐스트

최근 lionbridge 사이트를 통해 그동안 쇄도 매드맨의 아프로스 봇넷SQL 인젝션 예증하겠습니다. Sql 코드를 실행할 수 있는 detaiils 분할합니다 통하지 않고, 이 공격은 시도_횟수 T-SQL 에 의해 인코딩입니다 명령의세 ASCII 인코딩되지 이진 구체화하십시오. 이 같은 일이 보입니다.

DECLARE%[email protected]%20NVARCHAR(4000);SET%[email protected]=CAST(0x44004500...06F007200%20AS%20NVARCHAR(4000));EXEC(@S);--

내가 조금 두려워 할 수 있었던 것은 이 SQL 에서는 디코딩합니다 났는데, 당시 무슨 일이 일어났습니까 # 39 이 하도 didn& 정확히 알 수 없다.

간단한 도구를 쓸 수 있으므로, 이러한 유형의 디코딩합니다 디코딩합니다 전화했는데 내가 손을 대지 않고도 텍스트 SQL&amp nbsp;; 서버. 주요 부분은 데릭쉐퍼드와 디코딩할 수 있다.

CAST(0x44004500...06F007200 AS
NVARCHAR(4000))

39, ve i& 운빨이야 없이 모든 다음과 같은 명령을 했다.

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& 익숙한 코드가 너무.

-

39 m, m, 반드시 무언가 빠진 I& I& 그땅은, # 39 의 creditbank. I& # 39, 여기서 도왔으매 here& # 39 m dell.

내 것이 기본 시작했기 때문에, 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&quot &quot 보크 된다. 있다고 페어당 작업자쪽에서 구체화하십시오 형식이 잘못되었습니다.

흥미로운 점은 충분한 수 있는 방법을 단계별로 때는 내가 디버거 및 제스트링 바이트입니다 어레이입니다 분석할 수 있는 점, 내가 뭐 좀, - +&quot &quot 최대 있었습니다. 결과.

내가 무엇을 어떻게 해야 합니까; m 없음 - 그림 아웃해야 I& # 39 는 &quot 직접판매용 cast"; 각 바이트입니다 시도하는 대신 분석할 수 있어?

EndangeredMassa
그는 12년 전 댓글을 달았습니다
0

네, 꼭 이래야겠어요 말해둘꼐요 사용하여 SQL 매개변수입니다 aren& 경우 먼저 t # 39, 이미.

Tim Post
그는 9년 전 댓글을 달았습니다
0

일부 & # 39 최선을 다했어 시도하시려면 및 정렬하려면 answers& # 39;; 그러나 이들 대부분은 단순히 아웃해야 aren& # 39, t 분입니다. 따라서 다른 의견을 # 39 로 변환 가능한 wasn& 비 답변 비 답변, t, 그래서 이들은 변환되었습니다 의견은. 만약 내가 뭐 잘못된, 제발 알려주세요.

답변 2 개

39 의 사후, 좀 더 파고 Michael& 갔던 다시 한 번 할 필요가 있다는 걸 알고 있었기 때문에, 결국 협력했습니다 아웃해야 변환 및 이 작은 덩어리로 나타났다.

Convert.ToString(Convert.ToChar(Int32.Parse(EncodedString.Substring(intParseIndex, 2), System.Globalization.NumberStyles.HexNumber)));

내가 그냥 거기서 한 루프를 통해 갈 수 있으며, 그 모든 문자가 2 x 2 &quot hexified&quot. ) 으로 변환된 후 문자열으로.

닉, 그리고 다른 데 관심이 갔던, 누가 더 이상 및 게시하기를 마이 리틀 애플리케이션 에서 고데플레스. 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 바이트 유니코드 말해둘꼐요.