오늘은 pwntool에 대해 알아보았다.
우선 오늘의 예제 문제는
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int i, a, b, ans;
srand(time(0));
for (i = 0; i < 100; i++) {
a = rand() % 20000;
b = rand() % 20000;
printf("#%d: %d + %d = ?\n", i, a, b);
printf("> ");
scanf("%d", &ans);
if (a + b == ans) {
printf("Correct!\n");
}
else {
printf("Wrong!\n");
return 0;
}
}
printf("Congrats! flag{welcome_to_pwntools}");
}
오늘의 예제 문제는 덧셈뺄셈 100문제를 풀이 하면 문제가 풀리는 워게임을 풀었다.
당연히 손수 100문제를 다풀면 시간이 무척 오래 걸리지만 pwntool를 활용하여 문제를 풀면 되게 간단하게 문제를 풀수있다.
from pwn import *
# ./test 를 실행시킨다.
r = process("./plusminus")
# 총 100번 반복한다.
for i in range(100):
# 몇번째 문제인지 표시
print("Solving " + str(i))
# 문제의 숫자 앞까지 읽어들이기
r.recvuntil(":")
# + 앞까지 읽어서 첫번째 항 숫자 읽어들이기
rawa = r.recvuntil("+")[:-1]
a = int(rawa)
# = 앞까지 읽어서 두번째 항 숫자 읽어들이기
rawb = r.recvuntil("=")[:-1]
b = int(rawb)
# 답을 구함
ans = a + b
# 답을 프로그램에 입력시킴
r.sendline(str(ans))
# Correct! 문자열 읽어줌
r.recvuntil("Correct!\n")
# 다 끝나면 interactive() 로 제어를 넘겨받음
r.interactive()
오늘 직접 pwntool를 사용해보며 물론 내가 직접 입력하여 워게임문제를 풀수도 있지만 간단하게 코드를 작성하여 풀 수 있다는 점이 굉장히 매력적으로 다가왔고 pwntool공부의 시작점이 되었다.
다음부터이는 이 pwntool를 활용하여 풀다만 rop문제의 파이썬 정답코드를 쓰고자 한다.
'모각코(코딩스터디)' 카테고리의 다른 글
| 2026-02-07 동계 모각코 5차 목표 (0) | 2026.02.09 |
|---|---|
| 2027-02-07 동계모각코 5차회고 (0) | 2026.01.30 |
| 2026-01-17 동계 모각코 3차 회고 (0) | 2026.01.17 |
| 2026-01-17 동계모각코 3차 목표 (0) | 2026.01.17 |
| 2026-01-16 동계모각코 2차 회고 (1) | 2026.01.16 |