반응형

Los 9

Lord of SqlInjection - 9번 VAMPIRE

Lord of SqlInjection - 9번 VAMPIRE 9번 Vampire 문제는 str_replace를 주의깊게 보셔야합니다. str_replace 함수는 특정문자열을 치환해주는 함수입니다. 아래의 캡처를 보시면 'admin' 문자열을 ""(공백)으로 치환시켜줍니다. 결과값으로 admin을 출력하기 위해서는 id 값을 admin으로 설정하는 것이 필수입니다. str_replace를 우회하는 방법을 찾아서 해결해야합니다. 더보기 *** 정답 *** ?id='Admin' ?id='adadminmin' str_replace 우회 방법 - 대소문자를 혼용하여 사용. - adadminmin => 이런 식으로 admin 문자열을 포함시켜 문장을 완성.

IT Security 2019.12.09

Lord of SqlInjection - 7번 ORGE

Lord of SqlInjection - 7번 ORGE 7번 문제는 LOS 6번을 응용한 blind Sqlinjection 입니다. preg_match('/or|and/i', $_GET[pw]) 함수로 인해 sql 쿼리에 or 및 and를 사용할 수 없습니다. and => %26%26, &&로 대체 or => %7c%7c, ||로 대체 위에 특수문자를 이용하여 대체할 수 있습니다. URL 파라미터에 ?pw=' || length(pw)=8%23 를 입력하면 위와 같이 'Hello admin' 메시지가 나옵니다. admin의 패스워드는 8자리 입니다. 이후 파이썬 코드를 이용하여 brute force를 하여 패스워드 확인을 할 수 있습니다. 더보기 *** 정답 *** ?pw=' || id='admin' %2..

IT Security 2019.12.08

Lord of Sqlinjection - 6번 DARKELF

Lord of Sqlinjection - 6번 darkelf 6번 문제는 정규표현식으로 or, and 를 필터링 합니다. => if(pref_match('/or|and/i', $_GET[pw])) exit("HeHe"); SQL Injection 공격시 공백 문자 필터링 우회 방법 and => %26&26, && or => %7c%7c, || * 크롬 테스트 시, && 문자가 적용이 안되는 경우가 있습니다. 이때 %26%26으로 테스트 하시면 정상 적용가능합니다. 대체문자를 이용해서 or, and 필터링을 우회하면 됩니다. *** 정답 *** 더보기 정답 : ?pw=' || id='admin'%23

IT Security 2019.11.27

Lord of Sqlinjection - 5번 WOLFMAN

Lord of Sqlinjection - 5번 문제 WOLFMAN 5번 문제는 공백을 필터링하는 정규표현식이 추가되었습니다. if(preg_match('\ \i', $_GET[pw])) exit("No whitespace ~_~"); 공백 필터링 정규표현식을 우회하여 Sql 구문을 완성시켜야합니다. SQL Injection 공격시 공백 문자 필터링 우회 방법 1. Tab : %09 - ?pw='%09or%09id='admin' 2. Line Feed (\n): %0a - ?pw='%0aor%0aid='admin' 3. Carrage Return(\r) : %0d - ?pw='%0dor%0did='admin' 4. 주석 : /**/ - ?pw='/**/or/**/id='admin' 5. 괄호 : () - ..

IT Security 2019.11.24

Lord of Sqlinjection - 4번 ORC

lord of sqlinjection 4번 ORC pw 파라미터 값을 찾아야 풀 수 있는 문제입니다. Hello admin라는 문구가 SQL 쿼리에 참/거짓에 따라 출력되기 때문에 Blind Sql injection을 통해서 pw 파라미터 값을 유추해야합니다. 첫번째, pw 파라미터의 length를 확인합니다. 두번째, brute force로 pw 파라미터 값을 찾습니다. *** 정답 *** 더보기 패스워드 길이 : ?pw=1' or length(pw)=8%23 패스워드 확인(1자리씩) : ?pw=1' or id='admin' and ASCII(SUBSTR(pw, 자리수, 1))=아스키코드%23 패스워드 : 295d5844 id='admin' and pw='1' -> false length(pw)=8 -..

IT Security 2019.11.22

Lord of Sqlinjection - 3번 GOBLIN

lord of sqlinjection 3번 GOBLIN if(preg_match('/\'|\"|\`/i', $_GET[no])) exit("No Quotes ~_~"); 정규표현식 조건이 추가된 문제로 ', ", ` 를 사용하지 않고 문제를 해결해야 합니다. 우선 no 파라미터에 무작위로 숫자를 대입할 때, 1을 넣으면 'Hello guest'라는 문구가 출력됩니다. 3번 문제를 풀이는 no 파라미터의 값은 1이 아닌 값으로 설정하고, id 파라미터에 Quotes를 사용하지 않고 admin 텍스트를 넣어주어야 합니다. *** 예시 where id='guest' (=True) and no=1 (=True) (뒷 구문은 비교하지 않고 결과 출력) char() 및 헥사 값 이용 * 정답 * 더보기 ?no=0 ..

IT Security 2019.11.19

Lord of Sqlinjection - 2번 COBOLT

lord of sqlinjection - cobolt 1번 문제와 비슷하면서 약간 다른 구조입니다. pw파라미터에 md5(128비트 해시함수)가 적용되었습니다. 이전과 비슷한 SQL 구문을 삽입 시 정답이 아닌 다른 멘트가 출력됩니다. id='||True%23 PHP 구문 확인 시 if($result['id'] == 'admin') solve("cobolt"); id값에 admin을 입력해야 정답을 맞출 수 있습니다. * 정답 * 더보기 ?id=admin'%23

IT Security 2019.11.18

Lord of Sqlinjection - 1번 GREMLIN

lord of sqlinjection 첫번째 문제 - GREMLIN 제시된 query에서 where id='' and pw='' 구문을 참으로 만들면 정답을 맞출 수 있습니다. $_GET[id], $_GET[pw]를 통해서 2개의 파라미터를 받지만 '#' 이나 '--'으로 이어지는 구문을 생략할 수 있으므로 id 파라미터만 채워도 문제를 해결할 수 있습니다. * 정답 * 더보기 (%23 = #) ?id=' or 1=1%23 ?id=' or 'x'='x'%23 ?id=' || True%23 ?id=' || 1%23

IT Security 2019.11.18
반응형