uaf
·
Wargame/pwnable.kr
1. intro 걍 잘까 하다가 잠시 짬내서 한다는게 1시간이 훅 날아갔다 ㅋ 2. code 및 분석 2.1. code #include #include #include #include #include using namespace std; class Human{ private: virtual void give_shell(){ system("/bin/sh"); } protected: int age; string name; public: virtual void introduce(){ cout
darimchal_001
·
Wargame/Dreamhack
1. intro 2. code 및 분석 2.1. code #include #include #include #define JOKER "\x40\x53\x06\x03\x43\x52\x54\x3b" #define KEY "023661dd4\0" #define TRUE 1 #define FALSE 0 #define OK 0 #define ERRO -1 void __print_sw_title (char *sw_name); int __is_valid_pwd (char *pwd); char *__obfuscation (char *pwd, char *key); void __create_tag (char *id); int main (int argc, char *argv[]) { if (argc != 2) { __prin..
Robot Only
·
Wargame/Dreamhack
보호되어 있는 글입니다.
SingleByteXor
·
Wargame/Dreamhack
보호되어 있는 글입니다.
Basic_Crypto1
·
Wargame/Dreamhack
보호되어 있는 글입니다.
Network Attacks
·
Wargame/Cryptohack
1. intro 2. code 및 분석 2.1. code #!/usr/bin/env python3 import telnetlib import json HOST = "socket.cryptohack.org" PORT = 11112 tn = telnetlib.Telnet(HOST, PORT) def readline(): return tn.read_until(b"\n") def json_recv(): line = readline() return json.loads(line.decode()) def json_send(hsh): request = json.dumps(hsh).encode() tn.write(request) print(readline()) print(readline()) print(readline(..
Legendre Symbol
·
Wargame/Cryptohack
1. intro 2. code 및 분석 2.1. code N/A 2.2. 분석 앞선 케이스에서 p가 29라면 쉽게 계산할 수 있었지만, p가 매우 크다면 터무니 없는 방법이 된다. 하지만 쉽게 제곱 잉여인지 아닌지 계산할 수 있는 방법이 르장드르 기호를 이용하는 방법이다. 르장드르 기호는 앞선 포스팅과 같이 1 or -1인지만 확인하면 된다. 2023.02.09 - [Tips & theory] - Legendre Symbol - 르장드르 기호 Legendre Symbol - 르장드르 기호 서론 지금까지 이런 해킹은 없었다. 이것은 크립토인가 수학인가. 이론 앞서 공부한 제곱 잉여 x^2 = a mod p 에서 p가 충분히 작다면 쉽게 a를 구할 수 있었지만, p가 커지면 어떻게 제곱 잉여인지 wyv3rn..
Quadratic Residues
·
Wargame/Cryptohack
1. intro 2. code 및 분석 2.1. code N/A 2.2. 분석 나머지 계산에서 곱셈과 나눗셈에 대해서 알아보았지만, 나머지를 제곱근으로 표현하는 것이 무엇을 의미할까. p = 29라고 가정해보자. a^2 = 5 mod 29를 계산해보면 a는 11이 됨을 알 수 있다. (앞서 작성한 코드를 조금 수정해서 사용) ┌──(kali㉿kali)-[~/Downloads] └─$ python solve.py 29 ['1 : 1', '2 : 4', '3 : 9', '4 : 16', '5 : 25', '6 : 7', '7 : 20', '8 : 6', '9 : 23', '10 : 13', '11 : 5', '12 : 28', '13 : 24', '14 : 22'] 그러므로 11은 5의 제곱근이라고 할 수 ..
Modular Inverting
·
Wargame/Cryptohack
1. intro 2. code 및 분석 2.1. code N/A 2.2. 분석 역함수다! 우리는 유한체가 더하거나 곱해도 항상 Fp 유한체의 다른 요소임을 알 수 있었다. 유한체의 모든 요소 g는 g * d ≡ 1 (mod p)를 만족하는 d를 가진다. 이를 g의 곱셈역라고 한다. 예를 들어 7 * 8 = 56 ≡ 1 (mod 11) 이다. 그렇다면 3 * d ≡ 1 (mod 13) 을 만족하는 곱셈역는 무엇인가? 페르마의 소정리가 어떻게 곱셈역을 구하는데 도움이 되는지 생각해보자. 3. exploit 3.1. 페르마의 소정리 활용 페르마의 소정리는 앞서 공부한 것과 같이 p가 소수면 a^(p - 1) mod p = 1 이는 곧 a^(p - 1) mod p = 1 mod p a^(p - 1) * p^(-..
Basic RCE L04
·
Wargame/CodeEngn
1. intro 2. code 및 분석 2.1. code N/A 2.2. 분석 이번에는 바이너리를 실행해봤다. 정상이라는 문구만 반복적으로 출력된다. 그냥 ida로 열어서 graph overview부터 봤다. 일단 이것도 대놓고 있다;;; 3. exploit 3e8 m.s sleep 과 함께 chkesp 함수와 IsDebuggerPresent 함수를 실행하며 esi, esp를 지속적으로 비교해서 디버거가 실행 중인지 확인한다.