본문 바로가기

COMPUTER435

indexOf indexOfindexOf는 문자열에서 특정 문자가 시작되는 인덱스를 리턴한다.다음과 같은 문자열을 보자.String a = "Hello Java"; 위와 같은 a라는 문자열에서 "Java"라는 문자열이 시작되는 위치를 알고 싶은 경우에 indexOf를 다음과 같이 사용할 수 있다.System.out.println(a.indexOf("Java")); 결과값은 다음과 같을 것이다.6 "Hello Java" 라는 문자열에서 "Java"라는 문자열은 7번째 문자('J')부터 시작이다. 결과값이 6으로 나온 이유는 자바는 숫자를 0부터 세기 때문이다. 2017. 3. 31.
String String a = "Happy Java"; String b = "a"; String c = "123"; 위의 예제는 다음과 같이 표현해도 된다. String a = new String("Happy Java"); String b = new String("a"); String c = new String("123"); new라는 키워드는 객체를 만들 때 사용한다. String 클래스는 java에 내장된 클래스이다.하지만 보통 문자열을 표현할 때는 가급적 첫번째 방식(literal 표기)을 사용하는 것이 좋다. 첫번 째 처럼 사용하면 가독성에 잇점이 있고 컴파일 시 최적화에 도움을 주기 때문이다.primitive(원시) 자료형이전에 살펴보았던 int, long, double, float, boolean, ch.. 2017. 3. 31.
equals equalsequals는 두개의 문자열이 동일한 값을 가지고 있는지를 비교하여 결과값을 리턴한다.다음의 예를 보자.String a = "hello"; String b = "java"; String c = "hello"; System.out.println(a.equals(b)); // false System.out.println(a.equals(c)); // true문자열의 값을 비교할때는 반드시 equals 를 사용해야 한다. == 연산자를 사용할 경우 다음과 같은 경우가 발생할 수 있다. String a = "hello"; String b = new String("hello"); System.out.println(a.equals(b)); System.out.println(a==b); 문자열 a와 b는 .. 2017. 3. 31.
dethstarr dethstarr dethstarr문제는 계속 입력을 받고, 지정된 값임을 확인하고 아니면 exit함수로 넘어가는 것을 반복한다. 처음에는 코드에서 하라는 대로 계속 따라갔더니 r < 2017. 3. 11.
01. 통신절차 HTTP란? URL요청은 웹 서버에 수신된 후 요청 내용을 문서로 만들어 사용자에게 송신하게 된다. 그러면 사용자 웹 브라우저에 그림과 문서 등이 로딩되면서 원하는 정보를 얻게 된다. 조금 더 기술적인 관점에서 보면,요청한 URL사이트로 이동하기 위해 웹 서버의 공인 IP가 필요하며 이를 위해 시스템 파일로 존재하는 호스트 파일 혹은 DNS쿼리 요청을 통해 해당 IP정보를 얻게 된다. 웹 브라우저는 사용자 IP를 웹 서버에 전달하면서 상호 간 통신(TCP 세션 연결)은 시작된다.일단 세션이 연결되면 HTTP Request Header와 Body에 주소와 요청 데이터를 포함하여 웹 서버에 전달한다.이 떄 웹 서버는 사용자 요청의 유효성을 검증한 후 이상이 없다면 HTTP Response Header 및 R.. 2017. 3. 5.
how2heap/poison_null_byte.c #include #include #include #include #include int main(){printf("Welcome to poison null byte 2.0!\n");printf("Tested in Ubuntu 14.04 64bit.\n");printf("This technique can be used when you have an off-by-one into a malloc'ed region with a null byte.\n"); uint8_t* a;uint8_t* b;uint8_t* c;uint8_t* b1;uint8_t* b2;uint8_t* d; printf("We allocate 0x100 bytes for 'a'.\n");a = (uint8_t*) malloc(0x100);pr.. 2017. 1. 1.
chal2 이휘원선배님께서 내주신 숙제힌트를 보고서야 풀 수 있었다ㅜㅜTYPE CONFUSION+OFF BY ONE 여기서, 1을 선택할 경우 (add ascii art) 이 3가지는 옵션이 된다. 3가지중 아무거나 선택 후 입력을 받게 된다. 여기서 0xF7(247)자를 읽는다. 여기서 3을 선택한 경우,id 입력 후, 4가지가 나오는데,add comment를 할 경우, comment를 입력 받는데 0xFC(252)자를 받는다. 즉, 입력을 받을 때 ascii art와 comment 2가지가 있다.이런식으로 박히는데,2가지 case가 있다 0x0804bX08부분에 박힌다.ascii art0x0804bx08: 0x49->id->0x00*3->옵션주소(옵션1: 0x08048c60, 옵션2: 0x08048b9f)->0.. 2016. 12. 31.
chal1 휘원선배님께서 내주신 과제!! 일단, gbb속에서 확인을 해봅시다0xbfffe440이 get_my_line의 인자로 들어간다.memcpy의 인자 0x0804e2c8 0xbfffe440 64 0x804e2c8에 써지기 시작합니다.,, 0x804f148에도 써지기 시작함!!!! exit: 0x804c8c8(이건 언제나 동일) 위 그림처럼 출력되는 부분을 확인해보자0 804d008 4de(1246) 1256(1주소-0주소) 1 804d4f0 461(1121) 1128(2주소-1주소) 2 804d958 3b3(947) 952 3 804dd10 2e5(741) 752 4 804e000 2c2(706) 712 5 804e2c8 12c(300) 304 6 804e3f8 2a1(673) 680 7 804e6a0 3ec.. 2016. 12. 29.
unlink #include #include #include typedef struct tagOBJ{struct tagOBJ* fd;struct tagOBJ* bk;char buf[8];}OBJ; void shell(){system("/bin/sh");}//0x080484eb void unlink(OBJ* P){OBJ* BK;OBJ* FD;BK=P->bk;FD=P->fd;FD->bk=BK;BK->fd=FD;} int main(int argc, char* argv[]){malloc(1024);OBJ* A = (OBJ*)malloc(sizeof(OBJ));OBJ* B = (OBJ*)malloc(sizeof(OBJ));OBJ* C = (OBJ*)malloc(sizeof(OBJ)); 0x804b410:A 0x804b428:.. 2016. 12. 27.