일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 라업
- reversing
- 뭉뭉
- c언어
- 2021
- PYTHON
- vsCode
- 드림핵
- write up
- web
- 시탭
- ctf
- Basic
- 강의
- 라이트 업
- probgame
- 코드엔진
- write-up
- 라이트업
- 리버스 엔지니어링
- ShaktiCTF
- hackingcamp
- 변수
- 히공
- 리버싱
- 파이썬
- 워 게임
- 해킹캠프
- reversing.kr
- 풀이
목록라업 (18)
히공
문제 플래그 형식이 shaktiCTF라고 알려준다. int __cdecl main(int argc, const char **argv, const char **envp) { __int64 v4; // rax __int64 v5; // rax int i; // [rsp+4h] [rbp-12Ch] int j; // [rsp+8h] [rbp-128h] int k; // [rsp+Ch] [rbp-124h] char v10[32]; // [rsp+20h] [rbp-110h] BYREF int v11[47]; // [rsp+40h] [rbp-F0h] char s[10]; // [rsp+FFh] [rbp-31h] BYREF __int64 v13; // [rsp+109h] [rbp-27h] BYREF int v14; /..
문제 __int64 __fastcall main(int a1, char **a2, char **a3) { unsigned int v3; // eax int v5; // [rsp+8h] [rbp-C8h] int i; // [rsp+Ch] [rbp-C4h] int v7[32]; // [rsp+10h] [rbp-C0h] BYREF char s[40]; // [rsp+90h] [rbp-40h] BYREF unsigned __int64 v9; // [rsp+B8h] [rbp-18h] v9 = __readfsqword(0x28u); v5 = 3; fgets(s, 32, stdin); for ( i = 0; i < strlen(s); ++i ) { v3 = v5++; v7[i] = ((__int64 (__fastca..
문제 int __cdecl main(int argc, const char **argv, const char **envp) { FILE *v3; // eax unsigned int v4; // eax int result; // eax char *argv_1; // [esp+4h] [ebp-14h] char *Str; // [esp+8h] [ebp-10h] _BYTE *Block; // [esp+Ch] [ebp-Ch] int Size; // [esp+10h] [ebp-8h] char *base64_encode_str; // [esp+14h] [ebp-4h] maybe_printf(aEnterTheString); v3 = __acrt_iob_func(0); maybe_read((int)Str, 256, v3)..
문제 int __cdecl main(int argc, const char **argv, const char **envp) { int v4; // [rsp+8h] [rbp-28h] int i; // [rsp+Ch] [rbp-24h] char s[24]; // [rsp+10h] [rbp-20h] BYREF unsigned __int64 v7; // [rsp+28h] [rbp-8h] v7 = __readfsqword(0x28u); printf("Enter the string: "); __isoc99_scanf("%s", s); v4 = 1; if ( strlen(s) != 16 ) { puts("I dont think so XD"); exit(0); } for ( i = 0; s[i]; ++i ) { if (..
문제 이런 사이트다. sql injection으로 count를 올릴 수 있다. from selenium import webdriver url = "http://34.121.84.161:8084/" driver = webdriver.Chrome('chromedriver.exe') driver.get(url=url) driver.implicitly_wait(5) for i in range(500): driver.find_element_by_xpath('//*[@id="guess"]').send_keys("a' or 1=1 --") driver.find_element_by_xpath('/html/body/section/form/input[2]').click() input() 셀레니움으로 빨리 풀 수 있었다. ..
문제 dvm-rev sub_14A3이 가장 중요한 함수다. 이러한 함수다. ida 리모트 디버깅을 쓴다. 인자로는 opcode를 준다. f9를 누른다. jmp rax가 굉장히 중요하다. 아무거나 입력해준다. call하는 부분으로 오게 된다. 안은 이러했다. memcmp로 가는 것을 볼 수 있다. unk_7F4ABDDDFF00 = memcmp 끝나고 rsi 주소로 가보면 여기 주소와 비교하는거다. 코드를 패치하여 검사를 통과하도록 만들었다. 총 3번 입력받는다. opcode : S가 출력되면 입력을 받는다. opcode : P가 출력되면 memcmp를 호출한다. RAX값을 보니 8개를 입력받는 것을 알 수 있다. (read 함수 호출 후) 여기를 보면 sub_1100는 write함수로 이동하는 함수라고 알..
문제 메인함수다. 인자로 문자열 2개를 받는다. 2번째가 AA.....sks여야 한다. v15, v14에 인자1, 인자2를 복사한다. v15를 오픈하고 리턴 값을 v10에 저장한다. 두 번째 인자를 argv_s_2에 넣는다. 매우 중요한 핵심 루틴이다. v10(첫 번째 파일) 을 4바이트씩 끊어서 read_value에 집어넣는다. 그 후 for을 총 6번을 돌려 0x10과 xor 해준다. 그 후 두 번째 파일에 write를 4바이트씩 한다. 간단하게 코드를 만들 수 있다 name = "Data.enc" with open(name,'rb') as f: read_file = f.read() read_file = bytearray(read_file) write_byte = bytearray() for i in..