gdb와 ida를 통해 문제 풀이 1
·
시스템 해킹
sudo apt-get install gdb wget https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbDRUMkRFcUtFSTgtcmdPZk5UcUZtRU1TUDBaZ3xBQ3Jtc0trcHZ0Q0ZyNnpBXy1xbTJkUW1Hd0lCZzZCMWJ0Z1VIbXNoUzV3OU5jME9nV3hoaVFIak95QS1NTEp4ekpIb2VGTEdsRkRZRXlBc2ljeTRrZDNOMTc3blE1b05lamgtdDU0N2MxUkVZc1djMVgwQzg2Yw&q=https%3A%2F%2Fgithub.com%2FLiveOverflow%2Fliveoverflow_youtube%2Fraw%2Fmaster%2F0x05_simpl..
C 언어 - ex12_중첩 if문
·
C 언어
// 중첩 if문 // 중괄호 코딩 스타일 #include int main() { int a, b, c; scanf_s("%d%d%d", &a, &b, &c); if (a > b) { // a > b > c // a > c > b // c > a > b // 3중으로된 연산자를 알 수가 없다. if ( a > c){ // 최대값으로 만들기위해 중첩문을 사용 printf("%d\n", a); } else {// c > a printf("%d\n", c); } else { // b > a if (b > c) {// b 가 c 보다 크면 b가 최대값이된다. printf("%d\n", b); } else {// c > b // c가 b보다 크다 printf("%d\n", c); } } } } // 최대값만 출력..
C 언어 - ex11_경우나누기 IF문
·
C 언어
// if ,while for 등의 프로그램의 흐름을 제어하는 구문들을 제어문이라고한다. // 숫자를 입력받아서 짝수인지 아닌지 알려주는프로그램을 만듬 #include int main() { int n; scanf_s("%d", &n); if (n % 2 == 0) { // n % 2 와 0 이 같으면 1이되고 다르면 0이된다. // 이 값이 1이된다면 중가로 안에있는 코드를 실행시킨다. printf("n은 짝수\n "); } else { printf("n은 홀수\n"); } } ########################################################### #include int main() { // 참: 1, 거짓: 0 if (1) { // 0 이아니라면 가로안에 있는것이 ..
C 언어 - ex10_비교연산자와 논리연산자
·
C 언어
// 비교 연산자, 논리 연산자 #include int main() { int a, b; scanf("%d%d", &a, &b); int p = a > b // 2> 3 : 거짓이다 // 컴퓨터에서는 참: 1, 거짓: 0 int q = a b 거짓이기때문에 0이출력됨 // q 는 2 b // 2> 3 : 거짓이다 // 컴퓨터에서는 참: 1, 거짓: 0 bool q = a = b : a는 b보다 크거나 같다. // a = b && a = b) && (a
C 언어 - ex09_변수로 연산하기
·
C 언어
대입연산자 # include int main() { int a; a = 5; printf("a는 원래 %d였다...\n", a); a = a + 3; // =: 대입 연산 오른쪽에있는애를 왼쪽에 넣는 다는 의미이다 절대 같다는 의미가 아니다. printf("3을 더했더니 %d가 됐다...\n", a); } ################################산술연산자 // 산술연산자: 수학적인 연산 // + - + / % = // += -= *= /= %= // ++ -- //새로운 연산자에대해 설명이다. #include int main() { int a = 5; a += 6; // a = a + 6; 에서 a 를 없애고 +를 왼쪽으로 넘기면 a+=6이된다. // a = a + 6; //a = a ..
C 언어 - ex08_ 문제
·
C 언어
1. 두 숫자를 입력받아서 그 숫자들의 합을 출력하는 프로그램을 만들어 보세요. #include int main() { int a; int b; scanf("%d %d\n", &a, &b); int hap = a + b; printf("%d\n", hap); } #include int main() { float a; float b; scanf("%f %f\n", &a, &b); float hap = a + b; printf("%f\n", hap); } 2. 체중(kg, 실수과 키(m, 실수)를 입력받아서 체질량을 구하는 것을 구한다. #include int main() { float a; float b; printf("체중 입력 (kg) : "); scanf("%f\n", &a); printf("키 입력..
C 언어 - ex07_char형과 ascii코드
·
C 언어
// char: 1바이트 정수형 (int: 4바이트) // character: 문자 (반각문자 ABCabc12378_+\;/#%) 한글, 한자, 일본어, // char 변수형은 정수로도 쓸 수 있다. #include int main() { char a = 67; printf("%c", a); //%c로 변경하면 문자열을 출력시킬 수 있다. 정수가들어있는 상태에서 'a'가 아닌 a로 할 경우에 대문자 C가 출력된다. // 대문자 C가 출력되는 이유는 숫자를-> ascii코드로 변경하여 진행되는것 } // ASCII : American Standard (문자-숫자) // 아스키 코드표를 참고 ##########################char을 문자로 깊게다루는방법 #include int main() {..
C 언어 EX06 - scanf_입력받는 계산기
·
C 언어
#include int main() { int a, b; // 사용자의 의견을 반영해서 하고싶은데 형재는 지금 정해진 것밖에 존재하지않는다. //그래서 입력을 받는 프로그램을 만든다. scanf("%d%d", &a, &b); // 입력을 받는 함수 // &: 엠퍼센트 혹은 and 변수 이름앞에 &를 한다. // &: 포인터 // 절대로 변수 앞에 &를 붙인다. // scanf는 줄을 읽어오고 아무리 스페이스바 등이있어도 숫자를 골라 낸다 // 스페이스바로 분리가 되있더라도 하나의 %d로 인식을햇다. // scanf는 생각보다 똑똑하다 int hap = a + b; int cha = a - b; int gop = a * b; int mok = a / b; printf("%d + %d = %d\n", a, ..
C 언어 EX05 - sizeof 연산자와 형변환
·
C 언어
#include int main() { printf("%d %d %d %d\n", sizeof(int), sizeof(char), sizeof(float), sizeof(double)); // sizeof(x) : x의 크기를 알려줌 // x : 형에대한 이름(intx, float, ...) // 변수의 이름 int a; char b; float c; double d; printf("%d %d %d %d\n", sizeof(a), sizeof(b), sizeof(c), sizeof(d)); // int는 4byte이므로 4 결과 출력 // char는 1바이트이므로 1 결과 출력 / char : 1byte 정수형 변수 // float 는 4바이트이므로 4 결과 출력 // double 는 8바이트이므로 8 ..
C 언어 EX04 - 변수의 연산과 자료형
·
C 언어
#include int main() { // int: 32bit(4byte), 정수를 담는 데 쓰임 int a = 5; int b = 3; int hap = a + b; int cha = a - b; int gop = a * b; int mok = a / b; int namuji = a % b; // %는 나머지 연산자라고한다. printf("%d + %d = % d\n", a, b, hap); printf("%d - %d = % d\n", a, b, cha); printf("%d * %d = % d\n", a, b, gop); printf("%d / %d = % d\n", a, b, mok); // 정수이기때문 정수 나누기 정수는 5를 3으로 나누면 몫이 1이고 나머지가 2이기때문에 몫은 정수기떄문에 ..
C 언어 EX03 - 변수
·
C 언어
#include int main() { int a; // 선언이라고함 // # int a // int는 형이다 변수의 모양 그릇에 변수가있으면 그릇모양이 int다라는 의미 // integer 약자이지만 정수라는 뜻이지만 // 32bit = 4byte 만큼을 램에다 할당을 하겠다라는 의미다. // 이그릇의 의미를 a라고 정의를 한것 // a라는 이름의 int형 변수를 만들었다 생각할 수 있습니다. a = 3; // a 에 3을 집어넣는다는 뜻 대입을 뜻한다. // a 에다가 3을 집어넣겟다는 뜻 // a가 3이라는 뜻은 절대아니다. printf("%d\n", a); // a에 3을 집어넣었으니 3이 출력이된다. // %d는 정수를 출력 %c를 넣고 a 를 'a'로 만들었다면 a가 출력되지만 %d이므로 3이..
C 언어 EX02 - C 문법
·
C 언어
#include int main() { printf("%d + %d = %d\n", 2, 3, 5); // %d: 정수만 출력 (1,2,3,4,5,6, 7,8,9, 0 -1 -2, -3 ) // 정수만 꼭 넣기 printf("%f\n", 3.14); // %f : 실수 출력 (3.14, -2.0, ..) // 보기싫게 00000이 붙으므로 밑에 %.2f 를 하게됨 printf("%.2f\n", 3.141592); // %.2f : 소수점 둘째자리 까지만 출력하게만든다 반올림해서 출력됨 printf("%g\n", 3.141592); // %g : 실수 출력 (지수 형태로도 출력)3.14159까지만 출력 즉 유효숫자를 따짐 printf("%.3g\n", 8723984712.12837468723); // %...
C 언어 EX01 - C 문법
·
C 언어
#include int main() { printf("%d + %d = %d\n", 2, 3, 5); // %d: 정수만 출력 (1,2,3,4,5,6, 7,8,9, 0 -1 -2, -3 ) // 정수만 꼭 넣기 printf("%f\n", 3.14); // %f : 실수 출력 (3.14, -2.0, ..) // 보기싫게 00000이 붙으므로 밑에 %.2f 를 하게됨 printf("%.2f\n", 3.141592); // %.2f : 소수점 둘째자리 까지만 출력하게만든다 반올림해서 출력됨 printf("%g\n", 3.141592); // %g : 실수 출력 (지수 형태로도 출력)3.14159까지만 출력 즉 유효숫자를 따짐 printf("%.3g\n", 8723984712.12837468723); // %...
bWAPP 18.SQL Injection (Login Form/Hero)
·
Web hacking
` SQL Injection (Login Form/Hero) [ 공격 주입 ] 입력 값 : ' or 1=1# [ 컬럼 수 확인 ] 입력 값 : ' union select all 1,2,3,4# [ 버전 정보 확인 ] 입력 값 : ' union select all 1,@@version,3, database()# [ 테이블 이름 출력 ] 입력 값 : ' union select all 1, table_name,3,4 from information_schema.tables where table_schema='Bwapp' # 입력 값 : ' union select all 1, table_name,3,4 from information_schema.tables where table_schema='Bwapp' and ..
bWAPP 17. SQL Injection (CAPTCHA)
·
Web hacking
SQL Injection ( CAPTCHA) -Ptod7 을 입력하니 해당 창이 나오게 된다. [ 공격 가능 확인 ] 입력 값 : ' or 1=1# [ 컬럼 수 확인 ] 입력 값 : ' union select all 1,2,3,4,5,6,7# [ 버전 확인 ] 입력 값 : ' union select all 1,@@version,database(),4,5,6,7# [ 테이블 명 확인하기 ] 입력 값 : ' UNION SELECT ALL 1, table_name,3,4,5,6,7 from information_schema.tables# [ user 테이블 컬럼 명 추출 ] 입력 값 : ' UNION SELECT ALL 1,column_name,3,4,5,6,7 from information_schema.co..
bWAPP 16. SQL Injection (AJAX JSON jQuery)
·
Web hacking
SQL Injection (AJAX JSON jQuery) AJAX(Asynchronous javaScript and XML)는 HTML, 자바스크립트, JSON을 혼합하여 사용하는 기술을 말한다. JSON(JavaScript Object Notation)은 웹 서버와 데이터를 주고 받을 때 데이터를 표현하는 방법을 뜻하는데, 자바스크립트 형식으로 객체를 표현한다. JQuery는 자바스크립트 라이브러리 중 하나로, 클라이언트에서 스크립트 언어를 사용할 때 이를 단순화하고 AJAX 기능도 제공 한다. 밑 블로그의 정의를 참고했다. 출처: https://lucete1230-cyberpolice.tistory.com/90 [I-Tstory] 아무 글자를 입력하더라도 결과가 출력되는 것을 확인할 수 있다. [ ..
bWAPP 15. SQL Injection (POST Select)
·
Web hacking
SQL Injection (POST Select) SQL Injection은 사용자가 입력한 값을 서버에서 검증하지 않고 데이터베이스 쿼리 일부분으로 인식하여 데이터베이스의 정보가 노출되거나 인증이 우회되는 취약점 입니다. SQL Injection은 사용자가 데이터를 입력할 수 있는 곳 어디에서든 발생할 수 있습니다. 악의적인 SQL 문을 삽입하여 비정상적으로 데이터베이스를 조작하는 공격 방법 Post 방식을 사용하며, 이번에는 Go를 눌르는 창이 나타나는 것을 확인. burpsuite를 캡쳐한 결과 movie변수가 있다는 것을 확인 [ 공격 가능 확인 ] 입력 값 : ' '입력시에 문법 오류가 발생하는 것을 확인했다. [ 컬럼 수 확인 ] 결과 값 : UNION SELECT ALL 1# UNION SE..
bWAPP 14. SQL Injection (POST Search)
·
Web hacking
SQL Injection (POST Search) SQL Injection은 사용자가 입력한 값을 서버에서 검증하지 않고 데이터베이스 쿼리 일부분으로 인식하여 데이터베이스의 정보가 노출되거나 인증이 우회되는 취약점 입니다. SQL Injection은 사용자가 데이터를 입력할 수 있는 곳 어디에서든 발생할 수 있습니다. 악의적인 SQL 문을 삽입하여 비정상적으로 데이터베이스를 조작하는 공격 방법 Post 방식을 사용하기 때문에, Burp Suite를 사용하여 진행한다. title과 action 변수가 존재하는 것을 확인. [ 공격 가능 확인 ] 입력 값 : ' '입력시에 문법 오류가 발생하는 것을 확인했다. title에서 문법에러가 나오는지 action에서 문법오류가나오는지 확인한 결과 title에서 문법..
bWAPP 13. SQL Injection (GET/Select)
·
Web hacking
SQL Injection (GET/Select) SQL Injection SQL Injection은 사용자가 입력한 값을 서버에서 검증하지 않고 데이터베이스 쿼리 일부분으로 인식하여 데이터베이스의 정보가 노출되거나 인증이 우회되는 취약점 입니다. SQL Injection은 사용자가 데이터를 입력할 수 있는 곳 어디에서든 발생할 수 있습니다. 악의적인 SQL 문을 삽입하여 비정상적으로 데이터베이스를 조작하는 공격 방법 GET/Select는 select박스가 나와있고 검색 시에 한 줄로만 나오는 점이다. 1. Go 버튼을 누르면 영화의 정보가 출력되는 페이지 2. Get 방식을 사용하는 것을 확인 할 수있다. [ 칼럼 수 확인 ] 입력 값 : order by 1# order by 2# order by 3# ..
bWAPP 12. SQL Injection (GET/Search)
·
Web hacking
SQL Injection (GET/Search) SQL Injection은 사용자가 입력한 값을 서버에서 검증하지 않고 데이터베이스 쿼리 일부분으로 인식하여 데이터베이스의 정보가 노출되거나 인증이 우회되는 취약점 입니다. SQL Injection은 사용자가 데이터를 입력할 수 있는 곳 어디에서든 발생할 수 있습니다. [ 문법 오류 확인 ] 입력 값 : ' 사용하여, 문법오류가 나오는지 확인한다. SQL Injection (GETSearch)오류 메시지에는 데이터베이스 서버 정보가 포함되고, 데이터베이스 서버의 종류에 따라 SQL 구문이 다르므로 가장 먼저 서버 정보를 확인하여야 합니다. 위에 오류 메시지에서는 데이터베이스 서버가 'MySQL'이라는 것을 알 수 있습니다. [ 공격 가능한지 확인 ] 입력 ..