[DawgCTF 2021] :pwn: Jellyspotters Write-Up 포스팅 썸네일 이미지

CTF

[DawgCTF 2021] :pwn: Jellyspotters Write-Up

Jellyspotters - 100pts Description Tag pwnable, pickle, python Problem Analysis 그림을 그리는 프로그램이네용 대충 이런 프로그램이고 이것저것 해봤는데 Pickle을 사용한다는 것을 알 수 있군요 Pickle은 취약점이 발생합니다. 글 첨부합니다. https://davidhamann.de/2020/04/05/exploiting-python-pickle/ Exploiting Python pickles How unpickling untrusted data can lead to remote code execution. davidhamann.de 그럼 이걸 가지고 RCE를 해봅시당 Exploit 자 기본적으로 pickle의 취약점은 __reduce__..

2021.05.18 게시됨

[DawgCTF 2021] :pwn: No Step On Snek Write-Up 포스팅 썸네일 이미지

CTF

[DawgCTF 2021] :pwn: No Step On Snek Write-Up

No Step On Snek - 75pts Description Tag pwnable, python, RCE Problem Analysis 접속을 하면 이런 창이 나타나는데, 설명에 쓰여져있는 키를 눌러도 아무것도 실행이 되지 않습니다. 그래서 이상한 값을 집어넣는 경우에는 이런게 발생합니다. 보아하니, make_move(maze)라는 명령어가 실행이 되고, 이때 maze라는 것은 저희의 입력인 것을 알 수 있네요. 이 점을 이용해서 code injection을 실행시켜주면 좋지 않을까 생각합니다. Exploit 그래서 확인을 우선 해 봅시다! __builtins__.__dict__['__import__']("os").system("ls") 잘 실행이 되네요. 그래서 바로 flag.txt를 열어보면 __..

2021.05.14 게시됨

[Python] Built-in 객체 사용하기, 응용하기 (Python RCE) 포스팅 썸네일 이미지

SYSTEM HACKING/PWNABLE&REVERSING

[Python] Built-in 객체 사용하기, 응용하기 (Python RCE)

Built-in 객체 사용하기, 응용하기 (for CTF) Python built-in functions (Python RCE) 요즘 python으로 포너블 문제가 많이 나오던데, 왠만하면 이거 관련 문제들이여서 한번 정리하려고 합니당 1. __builtin__ 객체 소개 일단 'built-in'함수라는건 누구나 알고 있다고 생각합니다. 그 python에서 기본적으로 제공하는 그 함수들 맞아유! 더 중요하게 봐야할 건 built-in 객체입니다. 예를 들어, builtins.open 은 내장 함수 open() 의 완전한 이름입니다. 이렇게 모든 내장 식별자를 연결하는 액세스를 제공합니다. 어려워 보일 수 있는데 사실 우리가 평소에 사용하던 것들입니다. 혹시나 더 궁금하신 분들은 여기로 #1. Using ..

2021.05.14 게시됨

[재귀함수] 재귀함수 구현할 때 염두에 두면 좋은 것들 포스팅 썸네일 이미지

Coding_Algorithm/C_C++

[재귀함수] 재귀함수 구현할 때 염두에 두면 좋은 것들

작년에 c언어를 처음 배울 때도 재귀함수에 대해서 배웠는데 너무 어려워서 그냥 무시한 적이 있었는데 물론 그랬다가 지금 충분히 고통을 받을 수 있었습니다. 그래서 재귀함수와 함께 지지고 볶고 하다가 결국 여러가지를 깨달을 수 있었습니다.. 아직 저도 제대로 아는건 아니지만 발상하는 방법 자체를 정리하면 좋을 것 같네요! 발상에 도움되는 것 일단 재귀함수를 어려워하는 사람들의 특징은(나도그랬고) 재귀가 일어나는 안쪽에서 어떻게 진행이 되는가 에 대해서 궁금해한다는 것입니다.. 물론 알면 좋겠지만, 재귀가 3중, 4중으로 겹겹이 진행되면 머리가 슬슬 아파오고, 포기를 하게 됩니다. 그러나 재귀함수에서 진짜 핵심은 재귀함수를 사용함으로써 재귀함수가 하는 역할 을 파악하는 것입니다. 우리가 굳이 재귀함수를 다 ..

2020.05.02 게시됨

[repl.it] 4.7. For: Number of zeros Solutions/풀이 포스팅 썸네일 이미지

Coding_Algorithm/Python

[repl.it] 4.7. For: Number of zeros Solutions/풀이

몇개를 입력받을지 입력받아 정한 후, 0이라고 입력한 갯수를 세라고 하네요. N = int(input()) cnt=0 for i in range(N): if(int(input()) == 0): cnt += 1; print(cnt) 사실 if문 조건을 저렇게 괄호로 안씌워줘도 됩니다. 근데 C언어를 하던 관성이 남아있어서.. 아 참고로 python3에서는 C언어에서의 ++이 없다는거 알아두세요. (1을 더해주는 기능)

2020.03.17 게시됨

백준 10699번: 오늘 날짜 풀이(Python) 포스팅 썸네일 이미지

Coding_Algorithm/백준 풀이

백준 10699번: 오늘 날짜 풀이(Python)

오늘 날짜 스페셜 저지 시간 제한메모리 제한제출정답맞은 사람정답 비율 1 초 256 MB 6038 3780 3458 65.817% 문제 서울의 오늘 날짜를 출력하는 프로그램을 작성하시오. 입력 입력은 없다. 출력 서울의 오늘 날짜를 "YYYY-MM-DD" 형식으로 출력한다. 예제 입력 1 복사 예제 출력 1 복사 2015-01-24 물론 그냥 저 형식으로 오늘 날짜를 print해버리면 되지만, 더 제대로된 방식으로 알아보자. import datetime print(str(datetime.datetime.now())[:10]) 물론 그렇게 알아본 코드도 개짧다. 가볍게 설명을 해보자면 datetime, 즉 우리가 필요한 함수를 들고오고 그것을 string으로 print시킬건데 10글자만 출력시킨것이다.

2019.06.13 게시됨

백준 11022번: A + B - 8풀이(Python) 포스팅 썸네일 이미지

Coding_Algorithm/백준 풀이

백준 11022번: A + B - 8풀이(Python)

A+B - 8 시간 제한메모리 제한제출정답맞은 사람정답 비율 1 초 256 MB 9976 7258 6744 74.306% 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 각 테스트 케이스마다 "Case #x: A + B = C" 형식으로 출력한다. x는 테스트 케이스 번호이고 1부터 시작하며, C는 A+B이다. 예제 입력 1 복사 5 1 1 2 3 3 4 9 8 5 2 예제 출력 1 복사 Case #1: 1 + 1 = 2 Case #2: 2 + 3 = 5 Case #3: 3 + 4 = 7 Case #4: 9 ..

2019.06.13 게시됨

백준 11021번: A + B - 7풀이(Python) 포스팅 썸네일 이미지

Coding_Algorithm/백준 풀이

백준 11021번: A + B - 7풀이(Python)

t = int(input()) for i in range(t): a, b = map(int, input().split()) print('Case #'+int(i+1)+': '+int(a+b)) 이렇게 하면 런타임 에러가 일어난다. 이 이유는 input함수가 시간을 너무 많이 잡아먹기 때문인데, 이를 해결하기 위해 sys.stdin.readline함수를 이용하였다. 밑의 코드는 sys.stdin.realine이 너무 길어서 read함수라는 다른 함수를 따로 선언해주고 코드를 다시 작성한 것이다. import sys read = sys.stdin.readline t = int(read()) for i in range(t): ab = [int(x) for x in read().split()] print("Ca..

2019.06.13 게시됨

백준 2163번: 초콜릿 자르기 풀이(Python) 포스팅 썸네일 이미지

Coding_Algorithm/백준 풀이

백준 2163번: 초콜릿 자르기 풀이(Python)

초콜릿 자르기 시간 제한메모리 제한제출정답맞은 사람정답 비율 2 초 128 MB 10798 7589 6540 71.679% 문제 정화는 N×M 크기의 초콜릿을 하나 가지고 있다. 초콜릿은 금이 가 있는 모양을 하고 있으며, 그 금에 의해 N×M개의 조각으로 나눠질 수 있다. 초콜릿의 크기가 너무 크다고 생각한 그녀는 초콜릿을 친구들과 나눠 먹기로 했다. 이를 위해서 정화는 초콜릿을 계속 쪼개서 총 N×M개의 조각으로 쪼개려고 한다. 초콜릿을 쪼갤 때에는 초콜릿 조각을 하나 들고, 적당한 위치에서 초콜릿을 쪼갠다. 초콜릿을 쪼갤 때에는 금이 가 있는 위치에서만 쪼갤 수 있다. 이와 같이 초콜릿을 쪼개면 초콜릿은 두 개의 조각으로 나눠지게 된다. 이제 다시 이 중에서 초콜릿 조각을 하나 들고, 쪼개는 과정을..

2019.06.13 게시됨

백준 3046번: R2 풀이(Python) 포스팅 썸네일 이미지

Coding_Algorithm/백준 풀이

백준 3046번: R2 풀이(Python)

R2 성공 한국어 시간 제한메모리 제한제출정답맞은 사람정답 비율 1 초 128 MB 6939 5822 5374 85.492% 문제 두 숫자 R1과 R2가 있을 때, 두 수의 평균 S는 (R1+R2)/2와 같다. 상근이는 정인이 생일 선물로 두 숫자 R1과 R2를 주려고 한다. 생일 파티에서 상근이는 정인이에게 이 두 숫자를 말해주고, 정인이는 이 숫자를 받아 적는다. 그리고 나서 기쁜 마음으로 1년동안 이 숫자를 외우면서 산다. 상근이는 R1과 R2를 엄청난 고민 끝에 정했다. 작년에는 R1과 R2를 까먹어서 아무 숫자나 정해서 주었기 때문에, 올해는 까먹지 않기 위해서 평균 S도 같이 기억하려고 한다. 오늘은 정인이 생일이다. 5분 후에 상근이는 생일 선물로 두 숫자 R1과 R2를 말해주어야 하지만, ..

2019.06.13 게시됨