본문 바로가기

Codegate4

cryptGenius - Crypto 2023 코드게이트 암호학 문제이다. 문제 코드 안에 비교 구문에서 암호를 풀려고 하였다. 6230ee81ac9d7785a16c75b93a89de9cbb9cbb2ddabaaadd035378c36a44eeacb371322575b467a4a3382e3085da281731557dadd5210f21b75e1e9b7e426eb7 해당 문자열은 문제 코드에서 나온 사용자의 입력을 AES ECB 알고리즘으로 복호화 한 뒤에 디코딩하는 과정을 거친 값을 검증하는 문자열이다. EC8알고리즘은 블록들을 암호화 한 뒤에 불록들을 합치는 알고리즘이므로 16바이트씩 나눈 값을 암호화 알고리즘에 각각 돌려보았다. h9AqkFSgmamhqLjK1+zgfp5eNjePI/UVRQsMsRymVcE= +Mb9GybebuqtZ2L6nhK8.. 2023. 6. 26.
I like Script - Misc 2023 코드게이트 미스크 문제이다. 따로 문제 파일들은 제공해주지 않았다. burp suite로 해당 사이트에 들어가면서 분석을 하다가 login.py라는 파일을 발견하였다. 파일은 id값이 codegate 이고 resultstring을 거꾸로 돌린 값을 입력하면 로그인이 되도록 구현되어 있다. 해당 resultstring은 data.js 파일에 있었다. 이 파일을 console에 업로드 한 뒤 resultString을 찍어보면 다음과 같이 나온다. 즉 id는 “codegate” 비밀번호는 check1p2p3p4p5p6p을 거꾸로 한 “p6p5p4p3p2p1kcehc”를 입력하면 로그인이 된다. 로그인을 하면 다음과 같은 화면이 출력된다. 이번에도 script 파일들이 있기 때문에 하나씩 열어보았다. .. 2023. 6. 26.
Librarian - Pwnable 2023 코드게이트 포너블 문제이다. 파일은 문제 바이너리 하나와 libc파일 하나를 주었다. 문제를 살펴보면 case가 총 5가지로 나누어져 있는 것을 확인할 수 있었다. case 1의 함수를 살펴보면 다음과 같다. 특정 메모리의 주소를 카리키며 write 함수의 인자로 해당 데이터들을 출력해주는거 같다. 바이너리 실행 때마다 값이 랜덤함수로 인해서 랜덤하게 바뀌어서 정확히 어디 위치인지는 모르겠다. 그치만 해당 데이터들의 주소의 주변을 살펴보니 got테이블이 있었다. 그래서 여기 부분에서 libc 베이스 주소를 구할 수 있겠다는 생각을 하였다. 다음은 case 2의 함수이다. 아까 write 함수가 인자로 전달 받을 때 참조한 메모리 주소에 데이터를 쓸 수 있는거 같다. 다음은 case 3의 함수이다.. 2023. 6. 26.
vspace - Reversing 2023 코드게이트 리버싱 문제이다. 문제에서는 main.py과 Engine.py을 주었다. 다음은 main.py코드이다. VMengine 에 jason 형태의 데이터를 인코딩한 형태로 보내주면 읽을 수 있도록 만들어놓았다. Engine.py의 코드를 살펴보면 opcode를 결정해주고 적절한 operand를 넣어줌으로써 내가 원하는 명령들을 수행 할 수 있도록 만들었다. 정말 여러가지가 있기 때문에 한번 jason 형태의 데이터를 잘 인코딩해서 보내주면 읽을 수 있는지부터 확인해보았다. 해당 코드는 stack에 문자열 “1234”를 두번 한뒤 스택에 있는 값을 가져와서 그 값들이 정수가 아니면 operand type error를 츨력하도록 만든 코드이다. 잘 동작하는지 확인 됐으니 이제 flag를 읽어보.. 2023. 6. 26.