일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 자바스크립트
- element 조회
- 백준 파이썬
- 객체
- document
- blind sql injection
- 사칙연산
- github
- Pwndbg
- 배열
- sql injection
- xss game
- htmlspecialchars
- 조건문
- 포인터
- suninatas 풀이
- 함수
- lord of sql injection
- IF문
- jQuery
- burp suite
- 메소드
- xss game 풀이
- object
- 백준 알고리즘
- window
- property
- python
- 파이썬
- 김성엽 대표님
- Today
- Total
목록War game (86)
power-girl0-0
1. 문제 문제에 주어진 ssh로 접속하면, uaf.cpp와 uaf 실행파일이 주어진다. uaf를 실행해보면, 아래와 같이 메뉴를 보여주고 입력할 수 있는 커서가 존재한다. 2. 풀기 전, 알고 가기 ① 힙영역이란? - 메모리를 동적으로 할당하여, 사용하는 공간을 의미한다. - 필요에 의해, 메모리를 할당하고 해제한다. ② heap overflow란? - 할당된 메모리보다 많은 값을 넣어서, 다른 메모리 주소 값까지 침범하여 발생한다. - 만약, 함수 포인터가 존재하는 부분까지 침범해서 조작한다면, 프로그램의 실행 흐름을 바꿀 수 있는 문제가 발생한다. ③ UAF(Use After Free) - 힙 영역에서 메모리 해제 후, 해제한 메모리 영역을 재사용할 때 발생하는 취약점이다. 3. C++ 코드 아래는..
어서 오세요~~ (@^0^@)/ 1. 문제 SSH로 접속해서, 확인해보면 lotto 실행파일과 C 코드가 존재한다. 해당 문제는 lotto게임 컨셉으로, 사용자가 입력한 값 6개와 랜덤 한 값 6개가 맞을 때 flag를 출력해준다. 2. 코드 #include #include #include #include unsigned char submit[6]; void play(){ int i; printf("Submit your 6 lotto bytes : "); fflush(stdout); int r; r = read(0, submit, 6); printf("Lotto Start!\n"); //sleep(1); // generate lotto numbers int fd = open("/dev/urandom", ..
안녕하세요~~ (ノ◕ヮ◕)ノ*:・゚✧ 1. 문제 문제에는 nc접속 주소와 blackjack게임의 소스코드가 존재하는 웹주소가 주어진다. ( https://cboard.cprogramming.com/c-programming/114023-simple-blackjack-program.html ) 또한 문제 지문에서 백만 달러가 되면, flag를 얻을 수 있는 것을 확인할 수 있다. 2. 코드 분석 코드 중 play함수를 중점으로 살펴봐야 한다. 함수 이름 그대로, 게임 실행에 중점이 되는 함수가 play함수이다. void play() //Plays game { int p=0; // holds value of player_total int i=1; // counter for asking user to hold ..
안녕하세용!! *^____^* 1. 문제 이번 문제에서는 nc 접속 정보를 주고, 접속 시 위조지폐 찾는 게임이 시작된다. 2. 풀이 위 문제를 봤을 때, 조건은 아래와 같다. 1. 가짜 동전을 100번 찾아야함. 2. N이 동전개수이고, c가 시도 횟수를 의미함. 3. 위조지폐 맞출 때마다, n과 c는 새로운 값을 갖고 있음. 4. input으로 인덱스를 순서대로 넣었을 시, 무게의 합산으로 output됨. 5. 인덱스 0부터 시작임. 6. 위조지폐의 무게만 9값을 가지고 있음. 7. 시간제한이 존재함. 즉, 해결방안은 아래와 같다. 1. 이진탐색을 이용해서, 시간을 절약한다. ( 참고 : https://power-girl0-0.tistory.com/559?category=777937 ) 2. 추출된 ..
안녕하십니까!!! ( ͡~ ͜ʖ ͡°) 1. 문제 이번 문제에서도 cmd2 바이너리 파일과 cmd2의 c코드가 주어지며, flag 바이너리가 존재한다. cmd2의 c코드는 아래와 같다. #include #include int filter(char* cmd){ int r=0; r += strstr(cmd, "=")!=0; r += strstr(cmd, "PATH")!=0; r += strstr(cmd, "export")!=0; r += strstr(cmd, "/")!=0; r += strstr(cmd, "`")!=0; r += strstr(cmd, "flag")!=0; return r; } extern char** environ; void delete_env(){ char** p; for(p=environ..
안녕하세욥 ^o^ 1. 문제 cmd1에 대한 c코드와 바이너리가 주어지고, flag파일이 존재한다. 아래는 cmd1의 c코드이다. #include #include int filter(char* cmd){ int r=0; r += strstr(cmd, "flag")!=0; r += strstr(cmd, "sh")!=0; r += strstr(cmd, "tmp")!=0; return r; } int main(int argc, char* argv[], char** envp){ putenv("PATH=/thankyouverymuch"); if(filter(argv[1])) return 0; system( argv[1] ); return 0; } 2. 풀이 코드를 확인해보면, 아래와 같은 조건을 확인할 수 있다...
Hello~ 안녕하세요! o(*°▽°*)o 1. 문제 flag, mistake, password의 바이너라 파일이 존재하고, mistake에 대한 c코드가 주어진다. #include #include #define PW_LEN 10 #define XORKEY 1 void xor(char* s, int len){ int i; for(i=0; i 0)){ printf("read error\n"); close(fd); return 0; } char pw_buf2[PW_LEN+1]; printf("input password : "); scanf("%10s", pw_buf2); // xor your input xor(pw_buf2, 10); if(!strncmp(pw_buf, pw_buf2, PW_LEN)){ pr..
안녕하세용(. ❛ ᴗ ❛.) 1. 문제 바이너리 파일과 c코드가 주어진다. 아래는 c코드이다. #include int main(){ unsigned int random; random = rand();// random value! unsigned int key=0; scanf("%d", &key); if( (key ^ random) == 0xdeadbeef ){ printf("Good!\n"); system("/bin/cat flag"); return 0; } printf("Wrong, maybe you should try 2^32 cases.\n"); return 0; } 2. 풀이 문제 코드를 확인해보면, 랜덤함수인 rand( )를 사용하는데 난수값을 설정하지 않았다. 이는 프로그램이 실행될 때마다 랜..