from pwn import * context(arch = 'amd64', os = 'linux') local=False # first p = remote("pwnable.kr", 9006) print p.recvuntil('ID\n') p.sendline('-'*12) print p.recvuntil('PW\n') p.sendline('-') data = p.recvuntil('user\n') enc = data[data.index('(')+1:data.index(')')] print len(enc) enc = enc[0:32] print enc print len(enc) # brute for i in '1234567890abcdefghijklmnopqrstuvwxyz-_ABCDEFGHIJKLMNOPQRSTUVWXYZ' : p = remote("pwnable.kr", 9006) p.recvuntil('ID\n') p.sendline('-'*15+i) p.recvuntil('PW\n') p.sendline('-') data = p.recvuntil('user\n') try_ = data[data.index('(')+1:data.index(')')] try_ = try_[0:32] if enc == try_ : print "FIND!! first one is " + i break
|
print hashlib.sha256("admin"+COOKIE_VALUE).hexdigest()
===============================================================================================
참고자료 1. (출처:https://wikidocs.net/64)
3.5. 축약함수(Lambda)
오늘은 람다 형식과 그것을 이용하는 여러가지 함수들에 대해서 알아보겠습니다. 당장 완벽하게 소화하실 필요는 없을 것 같구요, 가벼운 마음으로 이런 것이 있다는 정도만 아셔도 되지 않을까 합니다. 람다 형식은 인공지능 분야나 AutoCAD라는 설계 프로그램에서 쓰이는 Lisp 언어에서 물려받았다고 하는데요, 함수를 딱 한 줄만으로 만들게 해주는 훌륭한 녀석입니다. 사용할 때는 아래와 같이 써주면 되지요.
lambda 인자 : 표현식
다음은 두 수를 더하는 함수입니다.
>>> def hap(x, y):
... return x + y
...
>>> hap(10, 20)
30
이것을 람다 형식으로는 어떻게 표현할까요?
>>> (lambda x,y: x + y)(10, 20)
30
참고자료 2. (https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_Block_Chaining_.28CBC.29)
암호 블록 체인 방식 (CBC)[편집]
암호 블록 체인 (cipher-block chaining, CBC) 방식은 1976년 IBM에 의해 개발되었다.[4] 각 블록은 암호화되기 전에 이전 블록의 암호화 결과와 XOR되며, 첫 블록의 경우에는 초기화 벡터가 사용된다. 초기화 벡터가 같은 경우 출력 결과가 항상 같기 때문에, 매 암호화마다 다른 초기화 벡터를 사용해야 한다.
CBC 방식은 현재 널리 사용되는 운용 방식 중 하나이다. CBC는 암호화 입력 값이 이전 결과에 의존하기 때문에 병렬화가 불가능하지만, 복호화의 경우 각 블록을 복호화한 다음 이전 암호화 블록과 XOR하여 복구할 수 있기 때문에 병렬화가 가능하다.
'Pwnable.kr > Rookiss' 카테고리의 다른 글
[pwnable.kr] loveletter - 50pt (0) | 2018.09.07 |
---|---|
[pwnable.kr] brain fuck - 150pt (0) | 2017.04.16 |
[pwnable.kr] md5 calculator - 200pt (0) | 2017.01.02 |
[pwnable.kr] fsb - 20pt (0) | 2016.11.17 |
[pwnable.kr] echo2 - 50pt (0) | 2016.11.10 |