1. 소스코드 분석
#include <stdio.h>
#include <time.h>
int main() {
int i;
int a;
int b;
int answer;
setvbuf(stdout, NULL, _IONBF, 0);
setvbuf(stdin, NULL, _IONBF, 0);
setvbuf(stderr, NULL, _IONBF, 0);
srand(time(NULL));
for (i = 0; i < 10000; i++) {
a = rand() % 99 + 1;
b = rand() % 99 + 1;
printf("stage %d | %d+%d = ", i+1, a, b);
scanf("%d", &answer);
if (answer != a+b) {
puts("Wrong answer!");
exit(0);
}
else continue;
}
puts("Access is allowed!");
return 0;
}
- 소스코드를 확인해보니 Access is allowed! 라는 말이 뜨게 되면 성공인 것으로 확인되었다.
- 총 10000번동안 랜덤값 산수를 진행하는데, 한번이라도 틀리면 프로그램이 종료됨을 확인할 수 있다.
2. 프로그램 실행
실행권한 부여
실행하기 앞서 이미 컴파일되어있는 math파일에 실행권한이 있는지 확인해보자.

- 만약 보이는것과같이 실행권한이 없다면 실행권한을 부여하고 진행하도록 하자.
chmod +x math

- 실행권한이 처음부터 있었다면 해당 작업은 건너뛰어도 무관하다.
프로그램 살펴보기

- 프로그램을 보면 보이는것과같이 stage n | 숫자+숫자 = 형식으로 계속해서 질문하는것을 확인할 수있다.
- 한번이라도 틀린다면 프로그램은 그대로 종료하기에 산수에 고수가 아니라면 다른 방법이 필요할 것이다.
3. payload 작성
- 해당 프로그램을 완료하기 위해선 자동화 툴이 필요할 듯 하다.
- 고로 pwntools 이라는 파이썬 라이브러리를 사용하도록 하자.
pwntools 사용방법은 해당 블로그를 참고하도록 하자
https://hg2lee.tistory.com/entry/Pwntools-사용법
Pwntools 사용법
포너블(시스템 해킹)을 하면서 많은 기능을 제공해주는 Pwntools는 엄청 많은 도움이 되며, 정말 Exploit에 큰 도움이 된다. pip를 통해 설치후에 Exploit 파일인 .py 내에서 사용이 가능하며, 불러오기
hg2lee.tistory.com
- math를 실행해보았을 때 보내오는 형식이 stage n | 숫자+숫자 = 이기에 | 전까지 받아서 앞의 숫자를 구하고 + 와 = 사이를 받아서 뒤의 숫자를 구한 뒤 이 두 숫자를 더해 다시 보내주는 형식이면 해결할 수 있을것이라 예상된다.
from pwn import *
p = process('./math')
for i in range(10000):
print(p.recvuntil(b' | '))
a = int(p.recvuntil(b'+')[:-1])
b = int(p.recvuntil(b' =')[:-2])
ans = a+b
p.recv()
p.sendline(str(ans).encode())
p.recv()
- 해당 코드를 조금 더 설명하자면 변수 a는 + 까지 받아오기에 [:-1]을 붙여 +를 제거하였고 변수 b는 = 까지 받아오기에 [:-2]를 붙여 제거해 주었다.
결과

'워게임' 카테고리의 다른 글
| [시스템 해킹] shell_bof write-up (0) | 2026.01.18 |
|---|---|
| [시스템 해킹] bof1 write-up (0) | 2026.01.16 |
| ICEWALL web-hacking 스터디반 과제 정리 3 (0) | 2026.01.04 |
| [웹 해킹] xss-1 write-up (0) | 2026.01.03 |
| ICEWALL web-hacking 스터디반 과제 정리 2 (0) | 2025.12.31 |