일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 2021
- 리버스 엔지니어링
- 드림핵
- 변수
- ctf
- hackingcamp
- 강의
- 워 게임
- c언어
- 라이트 업
- 파이썬
- PYTHON
- reversing.kr
- 해킹캠프
- write up
- reversing
- write-up
- Basic
- ShaktiCTF
- 코드엔진
- 라업
- 리버싱
- web
- 뭉뭉
- vsCode
- 히공
- 시탭
- probgame
- 풀이
- 라이트업
목록write up (15)
히공

문제 이런 사이트다. 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() 셀레니움으로 빨리 풀 수 있었다. ..

문제 찾아준다. 플래그가 나온다. 플래그 : UMASS{$3CUR3_$70Rag3}

문제 int __cdecl main(int argc, const char **argv, const char **envp) { int i; // [rsp+4h] [rbp-18Ch] __int64 v5; // [rsp+8h] [rbp-188h] __int64 v6; // [rsp+8h] [rbp-188h] char *gets_value; // [rsp+10h] [rbp-180h] BYREF char *v8; // [rsp+18h] [rbp-178h] _QWORD *v9; // [rsp+20h] [rbp-170h] BYREF __int64 v10; // [rsp+28h] [rbp-168h] int v11; // [rsp+30h] [rbp-160h] __int64 v12[8]; // [rsp+40h] [rbp-..

문제다. (마인크래프트 문제, 환경 1.16.5) mc86 init book를 보면 /give @p minecraft:written_book{title:"Init CPU",author:"UD Cyberscholars",generation:0,pages:[ "{\"text\":\"Click Here First\\n\",\"color\":\"dark_green\",\"bold\":true,\"underlined\":true,\"hoverEvent\":{\"action\":\"show_text\",\"value\":\"Creating RAM\"},\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/setblock ~1 ~ ~ minecraft:lime_shulk..

문제 __int64 __fastcall main(int a1, char **a2, char **a3) { char v3; // bl int i; // [rsp+14h] [rbp-2Ch] __int64 v6[5]; // [rsp+18h] [rbp-28h] BYREF v6[2] = __readfsqword(0x28u); puts(a2[1]); v6[0] = *(_QWORD *)a2[1] & 0xFFFFFFFFFFFFLL; printf("%lu\n", v6[0]); for ( i = 0; i

문제 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함수로 이동하는 함수라고 알..

문제 please_analysis_me 파일의 main 함수다. cypher_code가 굉장히 중요해 보였다. 여기서 get_key가 굉장히 중요해 보였다. get_key의 리턴 값이 v7에 들어가는데 v7은 char형이다. 그러면 cypher_code에서는 어떠한 부분을 0x1C로 xor 한다고 볼 수 있다. get_key 함수다. 어차피 char형이 들어가므로 1바이트만 들어간다. 0x1C가 v7에 들어간다. (리틀엔디안) please_analysis_me는 elf 섹션 중 어느 곳을 암호화하는 것 같았다. opps_I_cannot_execute파일을 ida로 열어준다. 코드가 이상하다. shift+f7을 눌러 섹션을 본다. text를 0x1C로 xor 해줄꺼다. 0x1140~0x1AE5 부분 까지 ..

문제 메인함수다. 인자로 문자열 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..