일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파이썬
- suninatas 풀이
- 백준 파이썬
- jQuery
- 조건문
- burp suite
- 자바스크립트
- 포인터
- window
- xss game
- property
- sql injection
- element 조회
- 객체
- 메소드
- document
- blind sql injection
- 백준 알고리즘
- 김성엽 대표님
- 사칙연산
- github
- IF문
- 함수
- python
- Pwndbg
- object
- lord of sql injection
- 배열
- htmlspecialchars
- xss game 풀이
- Today
- Total
목록분류 전체보기 (389)
power-girl0-0
안녕하세요~~!! 해당 블로그가 다소 복잡한 감이 있어, 새롭게 블로그를 만들었습니다. 앞으로는 아래 주소에서 새로운 글을 볼 수 있으니, 참고해주세요! 감사합니다(●'◡'●) https://d0bbyg.tistory.com/ d0bbyG d0bbyg.tistory.com
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. 추출된 ..
wargame 풀다가, 이진 탐색을 이용한 문제라서, 간단하게 이진 탐색 코드를 짜보았습니다. 1. 이진탐색이란? (1) 정의 - 오름차순으로 정렬된 리스트에서 특정 위치를 찾는 알고리즘이다. - 비교 한 번할 때마다, 탐색 범위가 50%로 줄어든다. (2) 과정 ① 배열의 중간 값을 선택하여 찾고자하는 값과 비교한다. ② 찾고자 하는 값이 중간 값보다 크면 오른쪽을 대상으로, 작으면 왼쪽을 대상으로 정하여 탐색한다. ③ 이는 값을 찾을 때까지 탐색하는 것을 반복한다. 2. Code - 해당 코드는 9가 존재하는 인덱스 위치를 알아내는 코드로 작성되었다. #include #include int main(){ printf("\n =====================\n"); printf(" Binary ..
안녕하십니까!!! ( ͡~ ͜ʖ ͡°) 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. 풀이 코드를 확인해보면, 아래와 같은 조건을 확인할 수 있다...