본문 바로가기

전체 글

(171)
[Tokyo Westerns 2017] Rev Rev Rev [Tokyo Westerns 2017] Rev Rev Rev첫번째 함수에서는 fgets로 받은 문자열의 enter값을 지워준다. 두번째 함수에서는 입력한 문자열을 거꾸로 뒤집어 저장한다.세번째 함수에서는 뒤집은 문자열을 암호화한다.네번째 함수에서는 각 암호화된 문자열에 비트연산 ~을 해주고 저장시킨 후 해당 값이 s2와 같다면 성공문을 출력시킨다. [Solve]123456789101112131415161718192021222324#include "stdafx.h"#include int main(){ int a[31] = { 0x41, 0x29, 0xD9, 0x65, 0xA1, 0xF1, 0xE1, 0xC9, 0x19, 0x09, 0x93, 0x13, 0xA1, 0x09, 0xB9, 0x49, 0xB9, ..
hsdecomp error modification 보호되어 있는 글입니다.
[Samsung CTF 2017] Easyhaskell Samsung CTF 2017 Easyhaskell reversing 200pt 해당문제를 IDA로 보았는데 어.. C로 만들어진 바이너리가 아님을 깨달았다. 일단 실행시켜보면서 곰곰히 보는데 인자값으로 해당 암호화 값이 변하진 않고 해당 문제의 이름으로 암호화 값이 만들어지는 것 같다.혹시 몰라 a 와 aa의 이름으로 바꿔 값을 확인해봤는데 이건 누가봐도 base64다. 패딩값으로 5를 쓰는데 브루트포스로 테이블을 구해 답을 구할 수 있지만 나는 그냥 브루트포스 했다. [Solve]1234567891011121314151617181920212223from os import *import subprocess def solve(flag, index): for bf in bf_table: name = fla..
[Codegate 2018] BaskinRobins31 보호되어 있는 글입니다.
[Codegate 2018] easy_serial Codegate 2018 easy_serial reversing 924pt IDA로 보면 이런식으로 되게 복잡하게 생겼는데; C로 만들어진 바이너리가 아닌 것 같았다. 전에 삼성 CTF에서 IDA로 본 바이너리중에 비슷하게 복잡한 구조가 있었는데 해당 바이너리가 하스켈로 만들어졌었다.하스켈로 컴파일된 바이너리인 걸 알고 바로 디컴파일을 시도하였다.haskell decompiler (hsdecomp)디컴파일 하던 도중에 오류가 있었는데 SHGroup님의 도움으로 고칠 수 있었다. (감사합니다) [Decompile_source]123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555..
[Codegate 2018] RedVelvet Codegate 2018 RedVelvet reversing 182pt해당 문제는 64bit ELF 파일이다. 먼저 IDA로 열고 분석하였다. func1~15 함수에서 입력문을 비교하는데 z3아니면 angr 쓰라는 말 같다. [z3 solve]12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091from z3 import * s = Solver()f = [BitVec("flag[%d]"%i, 16) for i in range(26)] for i in r..
[Codegate 2018] Impel Down Codegate 2018 Impel Down Misc 853pt python jail 문제다. 실행시켜보면 4개 명령어를 입력받는데 4개의 명령어가 아닐시에 이런 오류를 뿜어낸다eval() 으로 인자를 받으므로 os를 import 시켜 보았다. 입력할때 특수문자 필터링이 걸린다. name으로 명령어를 넣고 eval(name)을 활용하였다. 성공적으로 ls 명령 실행결과가 추출되었다.이름에는 필터링이 걸리지 않는다 그러면 이제 플래그를 얻을 수 있다. [Solve]12345678from pwn import * p = remote("ch41l3ng3s.codegate.kr",2014)print p.recvuntil("Name :")p.sendline('__import__("os").system("sh")')..
Profile 오경제Gyeongje (2000.09.21)관심분야 - Reverse Engineering, Pwnable서울디지텍고등학교 해킹보안동아리 ROOT 5기 회장한국교육학술정보원 정보보호영재교육원 4기 수료한국정보기술연구원 Best of the Best 7기 취약점분석 트랙 대회참가START (2017.01)제 15회 순천향대학교 정보보호 페스티벌(YISF) 예선 21위 (2017.08)Layer7 CTF 청소년부 6위 (2017.09)제 12회 중고생 정보보호 올림피아드 본선 동상 (2017.10) Cat-Security - 화이트 해커 리그 청소년부 9위 (2017.10)정보보호영재교육원 경진대회 전체 4위 (2017.11)TUCTF 청소년부 전체 8위 (2017.11)서울디지텍고등학교 국내 중고생 청소년..