본문 바로가기

반응형

#WarGame/Lord of SQLInjection

(19)
Lord of SQLInjection 20번 dragon https://los.rubiya.kr/ Lord of SQLInjection los.rubiya.kr Lord of SQLInjection 20번 dragon 예전에 풀었던 skelton문제와 비슷하다. 하지만 id에 주석처리가 되어있어 guest는 고정되어 있고, pw부터 쿼리는 무시가 된다. 주석처리 방법 중 '#'은 한 줄을 주석처리 한다. pw 뒤에 한 줄을 띄우고 쓰면 id 주석을 우회할 수 있다. pw값에 개행문자 \n(%0a)를 입력하면 다음줄로 넘어가기 때문에 주석에서 빠져나올 수 있다. --->?pw=%0aand%200%20or%20id=%27admin%27%23 query : select id from prob_dragon where id='guest'# and pw=' and 0 o..
Lord of SQLInjection 19번 xavis https://los.rubiya.kr/ Lord of SQLInjection los.rubiya.kr Lord of SQLInjection 19번 xavis if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); 필터링 1) prob 2) _ 3) . 4) () if(preg_match('/regex|like/i', $_GET[pw])) exit("HeHe"); 필터링 1) regex (정규표현식) 2) like if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("xavis"); 정확한 pw를 구해야 하는 문제이다. pw 길이 구하기 import requests url="https..
Lord of SQLInjection 18번 nightmare https://los.rubiya.kr/ Lord of SQLInjection los.rubiya.kr Lord of SQLInjection 18번 nightmare if(preg_match('/prob|_|\.|\(\)|#|-/i', $_GET[pw])) exit("No Hack ~_~"); 필터링 1) prob 2) _ 3) . 4) () 5) # 6) - if(strlen($_GET[pw])>6) exit("No Hack ~_~"); pw 문자열을 6글자로 제한이 되어있다. query : select id from prob_nightmare where pw=('') and id!='admin' 쿼리를 보면 pw는 ('')로 묶여 있다. MySQL Automatic type cast 즉, 자동형변환 ..
Lord of SQLInjection 16번 succubus https://los.rubiya.kr/ Lord of SQLInjection los.rubiya.kr Lord of SQLInjection 16번 succubus if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~"); if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); if(preg_match('/\'/',$_GET[id])) exit("HeHe"); if(preg_match('/\'/',$_GET[pw])) exit("HeHe"); 필터링은 5가지가 있다. 1) prob 2) _ 3) . 4) () 5) ' 이 중 싱글쿼터(')를 우회해야 하는 문제이다. 싱글쿼터 우..
Lord of SQLInjection 15번 assassin https://los.rubiya.kr/ Lord of SQLInjection los.rubiya.kr Lord of SQLInjection 15번 assassin if(preg_match('/\'/i', $_GET[pw])) exit("No Hack ~_~"); - 싱글쿼터가 필터링 되어 있다. - pw 뒤에 like로 pw 길이를 확인할 수 있다. like로 문자열을 비교할 때 _(underscore)는 모든 문자열을 뜻하기 때문에 underscore 수로 알 수 있다. 길이 구하는 파이썬 코드 import requests url="https://los.rubiya.kr/chall/assassin_14a1fd552c61c60f034879e5d4171373.php" cookies={"PHPSESSID"..
Lord of SQLInjection 14번 giant https://los.rubiya.kr/ Lord of SQLInjection los.rubiya.kr Lord of SQLInjection 14번 giant query : select 1234 fromprob_giant where 1 - 우선 쿼리를 보면 from 뒤에 오는 테이블명 사이에 공백이 없다. if(strlen($_GET[shit])>1) exit("No Hack ~_~"); - 값을 받아오는 shit은 1글자 이상 쓸 수가 없게 되어있다. if(preg_match('/ |\n|\r|\t/i', $_GET[shit])) exit("HeHe"); - 공백, \n, \r, \t가 필터링되어 있다. - 공백=%20 - \n=%0a - \r=%0d - \t=%09 이것을 제외한 공백 우회방법 중에 ..
Lord of SQLInjection 13번 bugbear https://los.rubiya.kr/ Lord of SQLInjection los.rubiya.kr Lord of SQLInjection 13번 bugbear if(preg_match('/prob|_|\.|\(\)/i', $_GET[no])) exit("No Hack ~_~"); if(preg_match('/\'/i', $_GET[pw])) exit("HeHe"); if(preg_match('/\'|substr|ascii|=|or|and| |like|0x/i', $_GET[no])) exit("HeHe"); 이번 필터링은 저번 문제에 이어서 ' substr ascii = or and 공백 like 0x '는 hex값을 사용했지만 0x가 안되므로 char를 사용하여 10진수 값을 넣어야 한다. asci..
Lord of SQLInjection 12번 darkknight https://los.rubiya.kr/ Lord of SQLInjection los.rubiya.kr Lord of SQLInjection 12번 darkknight if(preg_match('/prob|_|\.|\(\)/i', $_GET[no])) exit("No Hack ~_~"); if(preg_match('/\'/i', $_GET[pw])) exit("HeHe"); if(preg_match('/\'|substr|ascii|=/i', $_GET[no])) exit("HeHe"); no 필터링은 prob _ . ' substr ascii = 이렇게 되어있다. 싱글쿼터는 goblin 문제처럼 hex값을 사용하면 된다. substr은 mid로 우회할 수 있고, ascii는 ord, =은 like로 우회..

반응형