분류 전체보기(363)
-
[BOJ 20500] Ezreal 여눈부터 가네 ㅈㅈ
https://www.acmicpc.net/problem/20500 20500번: Ezreal 여눈부터 가네 ㅈㅈ 문제의 답을 $1\,000\,000\,007$로 나눈 나머지를 출력한다. www.acmicpc.net - 문제 요약 N자리 양의 정수 중에서 15의 배수의 개수를 구하시오. 이때, 문제의 답은 1000000007로 나눈 나머지를 출력하시오. (1n; dp[1]=0,dp[2]=1,dp[3]=1,dp[4]=3,dp[5]=5,dp[6]=11; if(n
2021.07.30 -
C++ TETRIS | 1~2일차 | 메인화면 구현 & 블록 생성
#include #include #include #include #include #include using namespace std; #define map_x 10 #define map_y 20 char map[20][12],ch; int x,y,clearline,score,rotation=1,number; int block1[4][4][4]={ { {0,0,0,0}, {1,1,1,1}, {0,0,0,0}, {0,0,0,0} }, { {0,0,1,0}, {0,0,1,0}, {0,0,1,0}, {0,0,1,0} }, { {0,0,0,0}, {1,1,1,1}, {0,0,0,0}, {0,0,0,0} }, { {0,0,1,0}, {0,0,1,0}, {0,0,1,0}, {0,0,1,0} } }; int block..
2021.07.27 -
welcome 풀이
흠...? 코드를 보니 그냥 서버만 접속하면 FLAG를 딸 수 있을 것 같습니다. natcat으로 주어진 접속 정보에 접속해보겠습니다. ???? natcat 사용법만 알면 점수 꽁으로 먹는 문제네요? 이번 글은 풀이라고 해도 될지 의심이 가는 수준이네요..ㅋㅋ
2021.07.22 -
Pwndbg 동적 디버깅으로 RTL 32bit, RTL 64bit 풀기 - Ubuntu Linux
- RTL 32bit 풀이 이 문제에서는 아래와 같이 rtl32_1이라는 실행파일이 주어집니다. memset() 함수로 buf를 정리해주고, printf()로 "Input me : "라는 문자열을 출력해줍니다. 다음 줄에서 read() 함수로 0x58(10진수로 88)만큼 buf를 입력받습니다. 그런데 위에서 선언된 buf를 보면 크기가 0x48(10진수로 72)이므로, 이 부분에서 BOF가 일어난다는걸 알 수 있습니다. payload를 구상해보면 'a'를 buf 크기(0x48)만큼 + sfp 4 + system + dummy 4 + /bin/sh 정도로 구성 될 것 같습니다. system과 /bin/sh를 어떻게 실행시켜야할까....하고 고민하다가 IDA로 파일 안에 있는 모든 문자열을 열어보았습니다...
2021.07.19 -
RTL_Core 풀이
안내 문자열을 출력해주고, gets() 함수로 s를 입력받습니다. 그리고 if문으로 가면 check_passcode() 함수에 s를 인자 값으로 넣은 리턴 값이 hashcode와 같냐는 조건이 보입니다. hashcode는 이따가 주소 값을 좀 찾아보도록 하겠습니다. 그럼 이제 check_passcode() 함수를 분석해보겠습니다. v2라는 int형 변수를 선언해서 0으로 초기화해줍니다. 그리고 0~5까지 for문을 돌려서 a1(main() 함수에서의 s)의 인자 값을 4byte씩 증가시키며 v2에 더해줍니다. 그리고 누적된 v2를 리턴합니다. 이제 hashcode의 주소 값을 확인해보겠습니다. 0C0D9B0A7(10진수로 3235492007) s에는 저 주소를 넣어주고 뒷부분을 0으로 채우면 될 것 같습..
2021.07.18 -
RTL_World 풀이
int __cdecl main(int argc, const char **argv, const char **envp) { int result; // eax int v4; // [esp+10h] [ebp-90h] char buf; // [esp+14h] [ebp-8Ch] void *v6; // [esp+94h] [ebp-Ch] void *handle; // [esp+98h] [ebp-8h] void *s1; // [esp+9Ch] [ebp-4h] setvbuf(stdout, 0, 2, 0); handle = dlopen("/lib/i386-linux-gnu/libc.so.6", 1); v6 = dlsym(handle, "system"); dlclose(handle); for ( s1 = v6; memcmp(..
2021.07.17