윈도우 확장자 한꺼번에 바꾸기
tips 2010. 1. 25. 11:17 |'tips' 카테고리의 다른 글
xp zune테마 (0) | 2010.02.19 |
---|---|
WebAPP별 파라미터 전송방식 (0) | 2010.02.01 |
파일업로드 예제 (0) | 2010.01.05 |
OS Command Injection 환경예제 (0) | 2010.01.04 |
DEP 해제 (0) | 2009.12.29 |
xp zune테마 (0) | 2010.02.19 |
---|---|
WebAPP별 파라미터 전송방식 (0) | 2010.02.01 |
파일업로드 예제 (0) | 2010.01.05 |
OS Command Injection 환경예제 (0) | 2010.01.04 |
DEP 해제 (0) | 2009.12.29 |
최신 웹쉘 동향php (0) | 2012.01.09 |
---|
WebAPP별 파라미터 전송방식 (0) | 2010.02.01 |
---|---|
윈도우 확장자 한꺼번에 바꾸기 (0) | 2010.01.25 |
OS Command Injection 환경예제 (0) | 2010.01.04 |
DEP 해제 (0) | 2009.12.29 |
Apache DefaultCharset (0) | 2009.12.04 |
윈도우 확장자 한꺼번에 바꾸기 (0) | 2010.01.25 |
---|---|
파일업로드 예제 (0) | 2010.01.05 |
DEP 해제 (0) | 2009.12.29 |
Apache DefaultCharset (0) | 2009.12.04 |
IE 8.0에서 세션공유기능 해제 (0) | 2009.11.17 |
외부파일실행예제 (0) | 2010.04.28 |
---|---|
웹페이지 긁어오기 예제 (0) | 2010.04.09 |
web login dictionary attack (0) | 2009.12.03 |
HTTP요청 스크립트(ActivePerl) form-data (0) | 2009.11.19 |
apache log shooter(GET) (0) | 2009.10.11 |
파일업로드 예제 (0) | 2010.01.05 |
---|---|
OS Command Injection 환경예제 (0) | 2010.01.04 |
Apache DefaultCharset (0) | 2009.12.04 |
IE 8.0에서 세션공유기능 해제 (0) | 2009.11.17 |
DbgView (0) | 2009.10.23 |
안드로이드 user-agent (0) | 2010.05.11 |
---|---|
허니팟 (0) | 2010.03.14 |
Zeroboard4 코드실행 취약점을 이용한 웹쉘공격 (0) | 2010.03.09 |
User-Agent: Mediapartners-Google (0) | 2009.10.01 |
[webdav]웹 폴더서비스 이용시 발생하는 트래픽 (0) | 2009.09.30 |
OS Command Injection 환경예제 (0) | 2010.01.04 |
---|---|
DEP 해제 (0) | 2009.12.29 |
IE 8.0에서 세션공유기능 해제 (0) | 2009.11.17 |
DbgView (0) | 2009.10.23 |
Microsoft Network Monitor (0) | 2009.10.02 |
웹페이지 긁어오기 예제 (0) | 2010.04.09 |
---|---|
HTTP 파일업로드(Perl) (0) | 2009.12.30 |
HTTP요청 스크립트(ActivePerl) form-data (0) | 2009.11.19 |
apache log shooter(GET) (0) | 2009.10.11 |
WireShark HTTP파싱 스크립트 (0) | 2009.09.30 |
HTTP 파일업로드(Perl) (0) | 2009.12.30 |
---|---|
web login dictionary attack (0) | 2009.12.03 |
apache log shooter(GET) (0) | 2009.10.11 |
WireShark HTTP파싱 스크립트 (0) | 2009.09.30 |
HTTP요청 스크립트(ActivePerl) (0) | 2009.09.30 |
DEP 해제 (0) | 2009.12.29 |
---|---|
Apache DefaultCharset (0) | 2009.12.04 |
DbgView (0) | 2009.10.23 |
Microsoft Network Monitor (0) | 2009.10.02 |
WireShark의 부가기능 (0) | 2009.10.01 |
outputdebugstring사용 (0) | 2011.06.25 |
---|---|
지뢰찾기 핵 (0) | 2009.11.01 |
hooking_study_1 (0) | 2009.10.23 |
DLL Injector (0) | 2009.10.02 |
outputdebugstring사용 (0) | 2011.06.25 |
---|---|
[펌]메시지훅 예제 (0) | 2009.11.02 |
hooking_study_1 (0) | 2009.10.23 |
DLL Injector (0) | 2009.10.02 |
Apache DefaultCharset (0) | 2009.12.04 |
---|---|
IE 8.0에서 세션공유기능 해제 (0) | 2009.11.17 |
Microsoft Network Monitor (0) | 2009.10.02 |
WireShark의 부가기능 (0) | 2009.10.01 |
Open Command Line on this Location (0) | 2009.09.30 |
outputdebugstring사용 (0) | 2011.06.25 |
---|---|
[펌]메시지훅 예제 (0) | 2009.11.02 |
지뢰찾기 핵 (0) | 2009.11.01 |
DLL Injector (0) | 2009.10.02 |
명령어 | 부등호 조건 | Flag 조건 |
JMP | 1(True) | |
JA | > | CF=0 & ZF=0 |
JNBE | > | CF=0 & ZF=0 |
JAE | >= | CF=0 | ZF=1 |
JNB | >= | CF=0 | ZF=1 |
JB | < | CF=1 |
JNAE | < | CF=1 |
JBE | <= | CF=1 | ZF=1 |
JNA | <= | CF=1 | ZF=1 |
JCXZ | CX == 0 | . |
JE | == | ZF=1 |
JZ | == | ZF=1 |
JG | > | ZF=0 & SF == OF |
JNLE | > | ZF=0 & SF == OF |
JGE | >= | SF == OF |
JNL | >= | SF == OF |
JL | < | SF != OF |
JGNE | < | SF != OF |
JLE | <= | ZF == 1 | SF != OF |
JNG | <= | ZF == 1 | SF != OF |
JNE | != | ZF == 0 |
JNZ | != | ZF == 0 |
JNO | No overflow | OF == 0 |
JNP | No parity (홀수) | PF == 0 |
JPO | No parity (홀수) | PF == 0 |
JNS | No sign (양수) | SF == 0 |
JO | Overflow | OF == 1 |
JP | Parity (작수) | PF == 1 |
JS | Sign (음수) | SF == 1 |
PEcompact MUP (0) | 2015.09.19 |
---|---|
VC in the TLS callback, there are always some problems, basically as follows (0) | 2010.07.06 |
PHP backticks shell command (0) | 2010.08.04 |
---|---|
session_start()사용시 주의 (0) | 2010.05.04 |
exec(함수 (0) | 2010.04.22 |
safemode (0) | 2010.03.08 |
BYTE* temp;
CString cmd;
에서 cmd 의 값을 temp에 할당하려 할때.
temp=new BYTE[255];
temp=(LPBYTE)(LPCSTR)cmd;
delete []temp;
or
CString str = _T("abcd");
BYTE* pbyte = new BYTE[256];
int nSize;
nSize = str.GetLength();
CopyMemory( pbyte, str.GetBuffer(nSize), nSize );
pbyte[nSize] = 0;
or
strcpy(szNamePlace,(LPCTSTR)name);
or
CString str = "string";
BYTE* pByte;
pByte = (BYTE*)(LPTSTR)(LPCTSTR)str;
CString testString;
BYTE testByte;
testString.Format( "%s", testByte );
CString name = "몽룡이";
BYTE byte[26] = {0};
BYTE bName[26] = {0x0,};
sprintf((char*)byte, "%s", name);
memcpy(bName, byte, 26);
CString strTmp1, strTmp2;
strTmp1 = "";
strTmp2 = "";
for(int i=0; i<26; i++) {
strTmp1.Format("%02X ", bName[i]);
strTmp2 += strTmp1;
}
MessageBox(strTmp2, "", 0);
26바이트의 크기의 이름이다. 남는 공간은 0으로 채워진다
CString의 문자열을 바로 숫자로 바꾸는것은
아직 보지 못했습니다.
아마 atoi()나 atod()의 C함수를 사용해야 될것 같네요.
도움말을 참고하세요.
CString str;
int i = 6;
str.Format("%d",i); // str에 6의 문자가 들어갑니다.
바로 형변환으로 가능합니다.
bt = (BYTE)i; // 주의 : 작은 크기로 들어가기 때문에
// 255 이상의 값은 엉뚱하게 동작하겠지요.
i = (int)bt;
char * ch;
CString *str;
1) ch = (LPSTR)(LPCSTR)str;
2) ch = str.GetBuffer(str.GetLength());
3) wsprintf( ch, "%s", str);
1) str = (LPCSTR)(LPSTR)ch;
2) str = ch;
참고)
LPSTR 은 char* 입니다.
LPSTR : char stirng의 32비트 포인터, char* 와 같다.
LPCTSTR : Constant character String의 32비트 포인터
UINT : 32비트 unsigned형 정수
DWORD : unsigned long int형
BYTE : 8비트 unsigned 정수
1.CString 클래스의 GetBuffer()는 CString을 char *로 바꿔줍니다.
ex) CString strTemp = _T("test");
char *getTemp=NULL;
getTemp = malloc(strTemp.GetLength()+1);
strcpy(getTemp, strTemp.GetBuffer(strTemp.GetLength());
printf("결과:%sn", getTemp);
free(getTemp);
2. operator LPCTSTR ()도 마찬가지입니다.
ex) CString strTemp = _T("test");
char *getTemp = (LPSTR)(LPCSTR)strData;
CString -> BYTE*
CString str="1234";
BYTE *pbyte;
pbyte = (BYTE(LPSTR)(LPCSTR)str;
CString str = _T("abcd");
BYTE* pbyte = new BYTE[256];
int nSize;
nSize = str.GetLength();
CopyMemory( pbyte, str.GetBuffer(nSize), nSize );
pbyte[nSize] = 0;
char * ch;
CString *str;
1) ch = (LPSTR)(LPCSTR)str;
2) ch = str.GetBuffer(str.GetLength());
3) wsprintf( ch, "%s", str);
1) str = (LPCSTR)(LPSTR)ch;
2) str = ch;
참고)
LPSTR 은 char* 입니다.
LPSTR : char stirng의 32비트 포인터, char* 와 같다.
LPCTSTR : Constant character String의 32비트 포인터
UINT : 32비트 unsigned형 정수
DWORD : unsigned long int형
BYTE : 8비트 unsigned 정수
참고 : CString을 const char* 형태로 변경 -> (LPTSTR)(LPCTSTR)CString
LPCSTR : A 32-bit pointer to a constant character string.
LPSTR : A 32-bit pointer to a character string.
LPCTSTR : A 32-bit pointer to a constant character string that is portable for Unicode and DBCS.
LPTSTR : A 32-bit pointer to a character string that is portable for Unicode and DBCS.
대개 CString 개체의 내용은 마치 해당 개체가 C 스타일의 null로 끝나는 문자열인 것처럼 조작하는 것이 유용합니다. 이 문서에서는 다음과 같은 내용을 다룹니다.
다음 두 가지 경우를 참고하십시오.
LPCTSTR 에서 반환하는 포인터는 CString에서 사용하는 데이터 영역을 가리킵니다. CString이 범위를 벗어나 자동적으로 삭제되거나 다른 이유로 CString의 내용이 변경되면 LPCSTSR 포인터는 더 이상 유효하지 않습니다. 포인터가 가리키는 문자열은 임시 문자열로 처리됩니다.
CString theString( "This is a test" );
LPTSTR lpsz = new TCHAR[theString.GetLength()+1];
_tcscpy(lpsz, theString);
//... modify lpsz as much as you want
참 고 strcpy(또는 이식 가능한 유니코드/MBCS 함수인 _tcscpy)의 두 번째 인수는const wchar_t*(유니코드) 또는 const char*(ANSI)입니다. 위 예제에서는 이 인수에 대해 CString을 전달합니다. C++ 컴파일러에서는 자동으로 CString 클래스에 대해 정의된 변환 함수를 적용하여 CString을 LPTSTR로 변환합니다. 한 형식을 다른 형식으로 캐스팅하는 연산을 정의하는 기능은 C++에서 가장 유용한 기능 중 하나입니다.
대부분의 경우, strcmp(또는 이식 가능한 유니코드/MBCS 함수인 _tcscmp) 등의 표준 C 런타임 라이브러리 문자열 함수를 사용하여 문자열 작업을 수행하려면 CString 멤버 함수를 찾아야 합니다.
C 런타임 문자열 함수를 사용해야 하는 경우에는 C 스타일의 Null로 끝나는 문자열로 변환에서 설명하는 방법을 사용하여, CString 개체를 해당하는 C 스타일 문자열 버퍼로 복사하고 이 버퍼에서 작업을 수행한 다음 결과로 생성된 C 스타일 문자열을 다시 CString 개체에 할당할 수 있습니다.
대부분의 경우 CString 개체의 내용을 수정하거나 CString을 C 스타일 문자열로 변환하려면 CString 멤버 함수를 사용해야 합니다.
그러나 문자 버퍼가 필요한 운영 체제 함수를 사용하여 작업하는 등의 일부 경우에는 CString의 내용을 직접 수정하는 것이 좋습니다.
GetBuffer 및 ReleaseBuffer 멤버 함수를 사용하면 CString 개체의 내부 문자 버퍼에 액세스하여 CString의 내용을 직접 수정할 수 있습니다. 다음 단계는 이러한 함수를 사용하여 CString의 내용을 직접 변경하는 방법입니다.
일 부 C 함수에는 다양한 인수가 사용됩니다. 대표적인 예로 printf 함수가 있습니다. 이러한 종류의 함수를 선언하는 방식 때문에 컴파일러에서는 인수의 형식을 확인하지 못해 각 인수에 대해 수행할 변환 작업을 결정하지 못할 수 있습니다. 따라서 다양한 인수를 사용하는 함수에 CString 개체를 전달할 때는 명시적인 형식 캐스팅을 사용해야 합니다.
가변 인수를 사용하는 함수에 CString 개체를 사용하려면
CString kindOfFruit = "bananas";
int howmany = 25;
printf( "You have %d %s\n", howmany, (LPCTSTR)kindOfFruit );
문
자열 인수가 필요한 함수의 경우에는 대부분 함수 프로토타입에 CString 대신 문자(LPCTSTR)에 대한 const 포인터로
형식 매개 변수를 지정하는 것이 좋습니다. 형식 매개 변수가 문자에 대한 const 포인터로 지정되면 TCHAR 배열에 대한
포인터, 리터럴 문자열 ["hi there"
] 또는 CString 개체 중 하나를 전달할 수 있습니다. CString 개체는 자동으로 LPCTSTR로 변환됩니다. LPCTSTR을 사용할 수 있는 위치이면 어디에나 CString 개체를 사용할 수 있습니다.
인
수가 수정되지 않는 경우에는 형식 매개 변수를 상수 문자열 참조, 즉 const CString&로 지정할 수도 있습니다.
문자열이 함수에 의해 수정되는 경우에는 const 한정자를 삭제합니다. 기본 null 값이 필요하면 다음 예제에서처럼 null
문자열[""
]로 초기화합니다.
void AddCustomer( const CString& name,
const CString& address,
const CString& comment = "" );
대부분의 함수 결과에서 CString 개체를 간단히 값으로 반환할 수 있습니다.
클래스 인터페이스를 정의할 때는 멤버 함수에 대한 인수 전달 규칙을 결정해야 합니다. CString 개체를 전달하고 반환하는 데는 몇 가지 표준 규칙이 있습니다. 함수 입력에 사용하는 문자열 및 함수 출력에 사용하는 문자열에 설명된 규칙을 따르면 효율적이고 올바른 코드를 만들 수 있습니다.
문 자열을 함수에 입력하려면 대부분의 경우에는 문자열 함수 매개 변수를 LPCTSTR로 선언하는 것이 가장 좋습니다. 필요하면 생성자와 할당 연산자를 사용하여 함수 내에서 CString 개체로 변환합니다. 함수로 문자열 내용을 변경할 수 있도록 하려면 매개 변수를 상수가 아닌 CString 참조(CString&)로 선언합니다.
CString 개체는 기본 형식처럼 값 의미론 다음에 오므로 일반적으로 함수에서 CString 개체를 반환할 수 있습니다. 읽기 전용 문자열을 반환하려면 상수 CString 참조(const CString&)를 사용합니다. 다음 예제에서는 CString 매개 변수와 반환 형식의 사용 방법을 보여 줍니다.
class CName : public CObject
{
private:
CString m_firstName;
char m_middleInit;
CString m_lastName;
public:
CName() {}
void SetData( LPCTSTR fn, const char mi, LPCTSTR ln )
{
m_firstName = fn;
m_middleInit = mi;
m_lastName = ln;
}
void GetData( CString& cfn, char mi, CString& cln )
{
cfn = m_firstName;
mi = m_middleInit;
cln = m_lastName;
}
CString GetLastName()
{
return m_lastName;
}
};
...
CName name;
CString last, first;
TCHAR middle;
name.SetData( "John", 'Q', "Public" );
ASSERT( name.GetLastName() == "Public" );
name.GetData( first, middle, last );
ASSERT( ( first == "John" ) && ( last == "Public" ) );
...
wireshark 의 패킷수집절차 (0) | 2010.07.17 |
---|---|
gcc -lz옵션 (0) | 2010.05.06 |
main, _tmain, wmain (0) | 2010.04.17 |
HTTP 파일업로드(Perl) (0) | 2009.12.30 |
---|---|
web login dictionary attack (0) | 2009.12.03 |
HTTP요청 스크립트(ActivePerl) form-data (0) | 2009.11.19 |
WireShark HTTP파싱 스크립트 (0) | 2009.09.30 |
HTTP요청 스크립트(ActivePerl) (0) | 2009.09.30 |
어느 DLL Injector를 보고 동일하게 구현해본 프로그램
OpenProcess>GetModuleHandle>GetProcAddress>VirtualAllocEx>WriteProcessMemory>CreateRemoteThread
outputdebugstring사용 (0) | 2011.06.25 |
---|---|
[펌]메시지훅 예제 (0) | 2009.11.02 |
지뢰찾기 핵 (0) | 2009.11.01 |
hooking_study_1 (0) | 2009.10.23 |
실행중인 프로세스ID를 얻는 방법중 Toolhelp32를 이용한 방법과 PSAPI를 이용한 방법이 있다.
표준 API함수인 Toolhelp32를 이용하는 방법에 대하여 알아보기로 한다.
사용되는 함수는 다음과 같다.
CreateToolhelp32Snapshot(), Process32First(), Process32Next()
예제소스
#include <tlhelp32.h>
HANDLE hProcessSnap;
PROCESSENTRY32 pe32; //프로세스정보를 저장할 구조체
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
Process32First( hProcessSnap, &pe32 );
printf( "\n Process ID = 0x%08X", pe32.th32ProcessID );
printf( "\n Thread count = %d", pe32.cntThreads );
printf( "\n Parent process ID = 0x%08X", pe32.th32ParentProcessID );
printf( "\n Priority base = %d", pe32.pcPriClassBase );
while(Process32Next( hProcessSnap, &pe32 ))
{
printf( "\n Process ID = 0x%08X", pe32.th32ProcessID );
printf( "\n Thread count = %d", pe32.cntThreads );
printf( "\n Parent process ID = 0x%08X", pe32.th32ParentProcessID );
printf( "\n Priority base = %d", pe32.pcPriClassBase );
}
PROCESSENTRY32 구조 (tlhelp32.h)
typedef struct tagPROCESSENTRY32
{
DWORD dwSize;
DWORD cntUsage;
DWORD th32ProcessID; // this process
DWORD th32DefaultHeapID;
DWORD th32ModuleID; // associated exe
DWORD cntThreads;
DWORD th32ParentProcessID; // this process's parent process
LONG pcPriClassBase; // Base priority of process's threads
DWORD dwFlags;
CHAR szExeFile[MAX_PATH]; // Path
} PROCESSENTRY32;
참조: http://support.microsoft.com/kb/175030/ko
PIMAGE_IMPORT_DESCRIPTOR (0) | 2010.05.24 |
---|---|
WinNT.h (0) | 2010.05.24 |
GetModuleHandle과 LoadLibrary (0) | 2010.05.11 |
context switch (0) | 2009.10.01 |
세그먼트 레지스터 (0) | 2009.10.01 |
Apache DefaultCharset (0) | 2009.12.04 |
---|---|
IE 8.0에서 세션공유기능 해제 (0) | 2009.11.17 |
DbgView (0) | 2009.10.23 |
WireShark의 부가기능 (0) | 2009.10.01 |
Open Command Line on this Location (0) | 2009.09.30 |
Windows는 유저모드(User Mode)와 커널모드(Kernel Mode)로 구분되어 프로세스가 실행된다. 커널 모드에서 동작하는 프로세스만이 컴퓨터에 장착된 모든 메모리와 하드웨어에 대한 직접적인 접근이 가능하며 디바이스 드라이버가 가장 대표적인 예라고 할 수 있다. 일반적인 윈도우 프로그램의 경우 유저모드 프로세스가 작동하는 것이므로 직접 하드웨어 장치나 메모리에 접근할 수는 없다. 하드웨어 장치나 메모리에 접근하기 위해서는 유저모드 프로그램은 시스템 서비스(API라고 이해바람)를 호출하게 되고 운영체제는 TRAP을 발생시켜 커널 모드로의 스위칭을 위한 스레드를 호출 하게 됨. 이 후 이 스레드에서 하드웨어 장치 또는 메모리에 접근하게 된다. 이를 context switch라고 함.
PIMAGE_IMPORT_DESCRIPTOR (0) | 2010.05.24 |
---|---|
WinNT.h (0) | 2010.05.24 |
GetModuleHandle과 LoadLibrary (0) | 2010.05.11 |
Toolhelp32를 이용한 프로세스ID얻기 (0) | 2009.10.02 |
세그먼트 레지스터 (0) | 2009.10.01 |
과거 8086시대의 16bit시스템에서는 1MB의 물리메모리에 접근하기 위하여 세그먼트레지스터를 사용하였다. 16bit로 이루어진 세그먼트레지스터(CS,SS,DS,ES...)는 16bit의 범용레지스터와 함께 사용되어 원하는 메모리범위에 접근할 수 있었다.
80386시대(32bit)에 오면서 범용레지스터는 더이상 용량의 한계로 세그먼트레지스터의 도움을 받을 필요가 없었으나 여전히 세그먼트레지스터는 범용레지스터와 함께 주소표시방법에 사용된다. 다만 권한, 영역제한, 메모리보호등의 목적으로 사용될 뿐이다.
세그먼테이션
세그먼트레지스터와 사용자가 지정한 메모리를 조합하는 과정을 세그먼테이션이라고 한다.
CPU는 부트과정 초기에 메모리에 GDT(Global Discriptor Table)와 LDT(Local Discriptor Table)를 생성후 CPU의 GDTR(Global Discriptor Table Register)과 LDTR(Local Discriptor Table Register)에 해당 테이블의 주소를 저장한다.
디스크립터 테이블은 세그먼트 디스크립터의 목록이라고 볼 수 있으며,
세그먼트 디스크립터는 메모리에 대한 속성 권한 영역등의 정보를 가지고 있다.
세그먼트레지스터는 세그먼트디스크립터의 위치에 대한 정보를 가지고 있고
세그먼트레지스터와 메모리오프셋의 조합(세그먼테이션)과정으로 해당 메모리에 대한 보호가 이루어지게 된다.
세그먼트디스크립터
8byte의 세그먼트디스크립터는 여러가지 보호정보를 가지고 있으며
세그먼트레지스터는 세그먼트 디스크립터의 인덱스정보만을 저장하고 있을 뿐이다.
디스크립터 테이블
디스크립터 테이블은 세그먼트디스크립터의 목록이며 GDT와 LDT가 있다.
GDT란 모든프로그램이 참조할 수 있는 세그먼트 디스크립터의 모임이며 운영체제 제작시 반드시 만들어 주어야 하는 디스크립터 테이블이다.
LDT란 테스크 단위로 정의할 수 있는 테이블이며 윈도우NT의 일반적인 경우 이 LDT를 정의하지 않는다. 이 둘은 각각 CPU의 GDTR과 LDTR에 의해 지시된다.
세그먼트 셀렉터
보호모드에서의 세그먼트레지스터는 과거의 메모리확장 용도가 아닌 세그먼트디스크립터를 지시하는 용도로 사용되기 때문에 이를 세그먼트 셀렉터라 부르기도 한다.
PIMAGE_IMPORT_DESCRIPTOR (0) | 2010.05.24 |
---|---|
WinNT.h (0) | 2010.05.24 |
GetModuleHandle과 LoadLibrary (0) | 2010.05.11 |
Toolhelp32를 이용한 프로세스ID얻기 (0) | 2009.10.02 |
context switch (0) | 2009.10.01 |
웹 방화벽장비에 남은 로그.
XSS공격명으로 기록이 되어있다.
GET /XXX.html?xxx=1&xxx=110&xxx=1602&xxx=25&xxx=301&xxx=xxx&xxx=13%22%3E%3Cscript%3Eself.location=String.fromCharCode(104,116,116,112,58,47,47,103,111,111,103,108,101,46,99,111,109);%3C/script%3E HTTP/1.1
Host: www.xxx.xx.xx
Connection: Keep-alive
Accept: */*
User-Agent: Mediapartners-Google
Accept-Encoding: gzip,deflate
변환
"><script>self.location=String.fromCharCode(104,116,116,112,58,47,47,103,111,111,103,108,101,46,99,111,109);</script>
Mediapartners-Google에 대한 정보는
http://www.internetofficer.com/web-robot/adsense/
에서 찾을 수 있다.
안드로이드 user-agent (0) | 2010.05.11 |
---|---|
허니팟 (0) | 2010.03.14 |
Zeroboard4 코드실행 취약점을 이용한 웹쉘공격 (0) | 2010.03.09 |
Pangolin(MSSQL) (0) | 2009.12.18 |
[webdav]웹 폴더서비스 이용시 발생하는 트래픽 (0) | 2009.09.30 |
WireShark의 유용한 프로그램들
tshark - Dump and analyze network traffic
tshark.exe -i <인터페이스번호> -w 파일명
mergecap - 둘 이상의 cap파일을 합친다.
mergecap.exe -w 3.cap 1.cap 2.cap
capinfos - cap파일의 정보를 출력
capinfos.exe 1.cap
dumpcap - Dump network traffic
dumpcap.exe -i <인터페이스번호> -w 파일명
editcap - Edit and/or translate the format of capture files
==============================================================================================
To shrink the capture file by truncating the packets at 64 bytes and writing it as Sun snoop file use:
editcap -s 64 -F snoop capture.pcap shortcapture.snoopTo delete packet 1000 from the capture file use:
editcap capture.pcap sans1000.pcap 1000To limit a capture file to packets from number 200 to 750 (inclusive) use:
editcap -r capture.pcap small.pcap 200-750To get all packets from number 1-500 (inclusive) use:
editcap -r capture.pcap first500.pcap 1-500or
editcap capture.pcap first500.pcap 501-9999999To exclude packets 1, 5, 10 to 20 and 30 to 40 from the new file use:
editcap capture.pcap exclude.pcap 1 5 10-20 30-40To select just packets 1, 5, 10 to 20 and 30 to 40 for the new file use:
editcap -r capture.pcap select.pcap 1 5 10-20 30-40To remove duplicate packets seen within the prior four frames use:
editcap -d capture.pcap dedup.pcapTo remove duplicate packets seen within the prior 100 frames use:
editcap -D 101 capture.pcap dedup.pcapTo remove duplicate packets seen equal to or less than 1/10th of a second:
editcap -w 0.1 capture.pcap dedup.pcapTo display the MD5 hash for all of the packets (and NOT generate any real output file):
editcap -v -D 0 capture.pcap /dev/nullor on Windows systems
editcap -v -D 0 capture.pcap NULTo introduce 5% random errors in a capture file use:
editcap -E 0.05 capture.pcap capture_error.pcap
================================================================================================
이어서...
Apache DefaultCharset (0) | 2009.12.04 |
---|---|
IE 8.0에서 세션공유기능 해제 (0) | 2009.11.17 |
DbgView (0) | 2009.10.23 |
Microsoft Network Monitor (0) | 2009.10.02 |
Open Command Line on this Location (0) | 2009.09.30 |
현재 실행 중인 기능함수와 그 기능함수를 호출한 기능함수에 대한 인수를 나타내는 개체이다
함수가 호출되면 그 함수에 대한 Arguments 객체가 생성된다. Arguments 객체는 원칙적으로 배열이 아니지만 번호 붙은 속성들이 있어서 이들이 배열 원소처럼 작동하며, 이러한 배열 원소의 수를 나타내는 length 속성도 있다.
functionObj.length는 기능함수에서 정의된 인수의 갯수이고
functionObj.arguments.length는 기능함수가 호출될 때 전달받은 인수의 갯수이다.
MS09-045에서 Arguments라는 이름을 함수로써 사용하는 경우 메모리충돌이 발생하는 취약점이 발견되었다.
출처: koxo
클립보드 접근 (0) | 2010.04.14 |
---|
안드로이드 user-agent (0) | 2010.05.11 |
---|---|
허니팟 (0) | 2010.03.14 |
Zeroboard4 코드실행 취약점을 이용한 웹쉘공격 (0) | 2010.03.09 |
Pangolin(MSSQL) (0) | 2009.12.18 |
User-Agent: Mediapartners-Google (0) | 2009.10.01 |
Apache DefaultCharset (0) | 2009.12.04 |
---|---|
IE 8.0에서 세션공유기능 해제 (0) | 2009.11.17 |
DbgView (0) | 2009.10.23 |
Microsoft Network Monitor (0) | 2009.10.02 |
WireShark의 부가기능 (0) | 2009.10.01 |
wireshark export packet details-All expanded 에 대한 파싱스크립트
* HTTP GET *
==========================================================================================
if( $#ARGV < 0 )
{ die "Supply a file name, please.\n"; }
if( $#ARGV > 0 )
{ die "Too many parameter.\n"; }
$fileName = shift( @ARGV );
if( -d $fileName )
{ die "$fileName is a directory.\n"; }
-e $fileName || die "$fileName is not exist.\n";
-T $fileName || die "$fileName is not a text file.\n";
open( fileHandle, $fileName ) || die "Cannot open $fileName.\n";
$matching = 0;
$i=1;
while($aLine =<fileHandle>)
{
if($aLine =~/^\s*?GET \//)
{
print $i.'.'.$aLine;
$i = $i+1;
}
}
close(fileHandle);
==========================================================================================
* HTTP Header *
==========================================================================================
if( $#ARGV < 0 )
{ die "Supply a file name, please.\n"; }
if( $#ARGV > 0 )
{ die "Too many parameter.\n"; }
$fileName = shift( @ARGV );
if( -d $fileName )
{ die "$fileName is a directory.\n"; }
-e $fileName || die "$fileName is not exist.\n";
-T $fileName || die "$fileName is not a text file.\n";
open( fileHandle, $fileName ) || die "Cannot open $fileName.\n";
$matching = 0;
$i=0;
while($aLine =<fileHandle>)
{
if($aLine =~/^\s{4}\\r\\n/)
{
$matching = 0;
}
if($matching == 1)
{
print $i.'.'.$aLine;
}
if($aLine =~/Request Version: HTTP\/1\./)
{
$matching = 1;
$i = $i+1;
}
}
close(fileHandle);
==========================================================================================
HTTP 파일업로드(Perl) (0) | 2009.12.30 |
---|---|
web login dictionary attack (0) | 2009.12.03 |
HTTP요청 스크립트(ActivePerl) form-data (0) | 2009.11.19 |
apache log shooter(GET) (0) | 2009.10.11 |
HTTP요청 스크립트(ActivePerl) (0) | 2009.09.30 |