뇌
pwntools 연습 본문
많은 분들께서 문제를 풀 때 pwntools 를 많이 사용하시고,
엄청 좋은 도구인 것 같아서 나도 한번 써보고 싶었다.
그래서 간단한 함수들로 예제를 만들어 공부해봤다 .. ㅎ
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int i, a, b;
srand(time(NULL));
for(i=0; i<100; i++)
{
a = rand();
printf("input %d\n", a);
scanf("%d", &b);
if(b!=a){
printf("bye\n");
return 0;
}
}
printf("congratulations!\n");
return 0;
} //ex.c
난수를 발생시켜 'input (숫자)' 가 출력되면 같은 숫자를 입력해야하고,
이것을 100번 반복하면 congratulations! 이 출력되고
한번이라도 틀리면 bye 가 출력되고 종료하는 프로그램이다.
100번 손으로 일일이 치기는 귀찮기 때문에
pwntools를 이용하여 풀어보자.
from pwn import *
p = process('./ex')
for i in range(0, 100):
tmp = p.recvline() # tmp(str)에 출력된 문자열 한줄( ex) 'input 123456')을 넣는다.
flag = tmp[tmp.find(' ')+1:len(tmp)] # flag(str)에 숫자부분('123456')을 잘라 넣는다.
print flag, # 확인 차 매번 flag 값('123456') 출력
p.sendline(flag) # flag 값('123456')을 보낸다.
print p.recv() # 출력된 값(congratulation! or bye)을 출력한다.
#test.py
이렇게 간단하게 pwntools 를 이용하여 코드를 짤 수 있다.
한번 실행해보자.
ginmoo@disso1p1:~/Desktop/coding/pwntools$ python test.py
[+] Starting local process './ex': pid 4359
868110509
364520877
1561436425
1901705161
694303554
221178277
431526733
348025939
848855211
2064351534
473327582
955469545
703283872
628091351
947268796
1438046606
1727798593
1437242941
299149692
1115048550
1968228389
1589257576
1355712783
1039857058
486627766
653725783
268589296
612532497
2040897201
1560438777
503020695
761524062
1924959655
2064457120
515745576
471779561
138151749
947272309
819805500
987006961
864140195
1293133083
1942476506
1567424067
1921224434
742261654
857987026
1501539380
32020948
1157136718
469104282
2000249337
598910647
1824817066
892622747
1085538413
331059201
1161212044
1698070910
224472754
574167173
53607957
985996816
351643180
2118065078
1501742392
823422741
108733179
301531054
1643228242
1095740140
1165671249
788877677
890732999
585611669
562618463
1632994653
1443598695
2064157843
1665015601
453251765
385778478
1517781290
1052162412
63111896
262920390
2137700825
394171097
1424132434
1688288088
618643851
1998299607
1741896045
1604640667
202459140
1712477475
958899412
1025881881
1821210655
1260430466
[*] Process './ex' stopped with exit code 0 (pid 4359)
congratulations!
ginmoo@disso1p1:~/Desktop/coding/pwntools$
작년 TRUST CTF write-up을 보다가
Easy Taebo 라는 문제를 봤는데, 그 문제보다 훨씬 간단한 예제지만
그것과 비슷한 예제로 만들었다.
내일이 TRUST CTF 구나 ..
감사합니다
'Pwnable > ETC' 카테고리의 다른 글
Incognito CTF 2021 little_register 출제 후기 (0) | 2021.09.03 |
---|---|
Pwntools 기능 (0) | 2020.07.08 |
헷갈리는 것들 정리 (0) | 2020.03.05 |
시작 (0) | 2020.01.30 |
Comments