전체 글(131)
-
백준 [ALGORITHM] - 계산기 프로그램 (5613)
import operatordef calc_operator(operators, values): op = operators.pop() b = values.pop() a = values.pop() values.append(ops[op](a, b))ops = { '+' : operator.add, '-' : operator.sub, '*' : operator.mul, '/' : lambda x, y: x // y, }calc_data = []while True: input_data = input() if input_data == '=': try: values = [] opera..
11:57:02 -
[Write-up] Haf.world - Who am i??
보호되어 있는 글입니다.
2024.09.09 -
[Write-up] Haf.world - The Hidden Path to the Flag
보호되어 있는 글입니다.
2024.09.09 -
백준 [ALGORITHM] - ROT13 (4446)
while True: vowel = ['a', 'i', 'y', 'e', 'o', 'u'] letters = ['b', 'k', 'x', 'z', 'n', 'h', 'd', 'c', 'w', 'g', 'p', 'v', 'j', 'q', 't', 's', 'r', 'l', 'm', 'f'] result = [] try: lst = list(input()) for i in range(len(lst)): char = lst[i] if char.lower() in vowel: if char.isupper(): temp = vowel.index(char.lower())..
2024.09.09 -
[REV] dreamhack - Check Function Argument
dreamhack 리버싱 check function argument 챌린지 라이트업동적 디버깅을 통해서 함수의 인자에 나오는 flag를 찾아내는 문제인것 같다.우선 주어진 문제 파일을 실행해보면 나오는 화면은 다음과 같다.역시 함수의 인자에서 flag를 찾으라는 말만 하고 flag는 주지 않는다.따라서 gdb를 이용하여 동적 디버깅을 진행해야한다. gdb에 bp를 걸고 확인을 해볼 건데 심볼이 죽어있어서 text영역의 주소에 직접 bp를 걸어주고 확인해보았다. 0x401603에서 puts함수를 call하고 여기서 아까 전에 실행했을때 나왔던 문자열이 출력된다.이후 next 명령어로 한줄씩 실행하면서 argument를 확인했다. 0x40160f에서 mov 명령어를 사용하는데, 이때 레지스터를 확인하면 다음..
2024.09.08 -
[PWN] dreamhack - baby-bof
dreamhack begginer baby-bof 챌린지 writeup// gcc -o baby-bof baby-bof.c -fno-stack-protector -no-pie#include #include #include #include #include #include #include void proc_init (){ setvbuf (stdin, 0, 2, 0); setvbuf (stdout, 0, 2, 0); setvbuf (stderr, 0, 2, 0);}void win () { char flag[100] = {0,}; int fd; puts ("You mustn't be here! It's a vulnerability!"); fd = open ("./flag", O_RDONLY); re..
2024.09.05