일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- IF문
- sql injection
- htmlspecialchars
- 포인터
- 자바스크립트
- 조건문
- window
- lord of sql injection
- 파이썬
- 김성엽 대표님
- 함수
- xss game 풀이
- 배열
- object
- Pwndbg
- document
- 사칙연산
- burp suite
- 메소드
- element 조회
- property
- github
- suninatas 풀이
- jQuery
- python
- xss game
- 백준 파이썬
- 백준 알고리즘
- blind sql injection
- 객체
- Today
- Total
목록War game/Lord of SQL Injection (14)
power-girl0-0
주소 : https://los.rubiya.kr/ Lord of SQLInjection los.rubiya.kr [ 문제 ] [ 풀이 ] 해당 문제에서는 shit를 입력받아오고 있다. 쿼리문을 확인해보면, shit의 값을 공백으로 주면 풀리는 문제로 예상된다. 문제에서는 공백(%20), \n(%0a), \r(%0d), \t(%09) 가 필터링 되고 있으며, 길이도 1미만이여야 한다. if(strlen($_GET[shit])>1) exit("No Hack ~_~"); if(preg_match('/ |\n|\r|\t/i', $_GET[shit])) exit("HeHe"); 공백을 우회하려면 %0a, %0b, %0c, %0d, %09, (), /**/ 등이 있다. 하지만 위 필터링 되는 것과 ()와 /**/는..
주소 : https://los.rubiya.kr/ Lord of SQLInjection los.rubiya.kr [ 문제 ] [ 풀이 ] 바로 이전 문제와 같이 no를 이용해서 pw를 유추하는 문제이다. pw에서 '(싱글쿼터)를 차단하고 있기 때문이다. if(preg_match('/\'/i', $_GET[pw])) exit("HeHe"); no에서는 '(싱글쿼터), substr, ascii, =, or, and, (공백), like, 0x를 차단하고 있다. if(preg_match('/\'|substr|ascii|=|or|and| |like|0x/i', $_GET[no])) exit("HeHe"); 이전 문제와 달리 좀 더 강하게 추가되었다. like 대신 in연산자를 이용하여, id="admin"을 입..
주소 : https://los.rubiya.kr/ Lord of SQLInjection los.rubiya.kr [ 문제 ] [ 풀이 ] 해당 문제에서는 pw에서는 '(싱글 쿼터)를 차단하고 있고, no에서는 '(싱글 쿼터), substr, ascii, = 을 차단하고 있다. if(preg_match('/\'/i', $_GET[pw])) exit("HeHe"); if(preg_match('/\'|substr|ascii|=/i', $_GET[no])) exit("HeHe"); '(싱글쿼터)가 막힌 경우 "(더블 쿼터)로 대체할 수 있다. 해당 문제에서는 pw와 no의 값을 입력받아 처리한다. 따라서 pw는 '(싱글쿼터)가 이미 입력된 상태이므로, no를 이용하여 pw를 구해보자. 먼저, Blind sql ..
주소 : https://los.rubiya.kr/ Lord of SQLInjection los.rubiya.kr [ 문제 ] [ 풀이 ] 먼저, 차단하고 있는 것을 확인해보자. if(preg_match('/or|and|substr\(|=/i', $_GET[pw])) exit("HeHe"); or, and, substr(, =을 차단하고 있다. 해당 차단은 아래와 같이 우회할 수 있다. or과 and는 || 와 &&로 대체할 수 있다. substr( )함수는 mid()함수로, =은 like로 우회가 가능하다. 이제 위 우회방법을 활용하여 id=admin을 입력해보자. ?pw=' || id like 'admin' %23 그 결과, 위와 같이 'Hello admin'이 출력되는 것을 확인할 수 있다. 이제, ..
주소 : https://los.rubiya.kr/ Lord of SQLInjection los.rubiya.kr [ 문제 ] [ 풀이 ] 해당 문제의 쿼리문에 and 1=0 때문에 혼란스러울 것이다. 하지만, 이전 문제를 풀어봤다면 '아~~ 뭐야~~'라는 생각이 들 수도 있는 문제이다. 쿼리문에는 id='guest'이라는 구문이 저장되어있다. 문제를 클리어하려면 id를 admin으로 변경해야만 한다. 그럼 'or연산을 사용해야되지 않을까?'라는 생각이 들 것이다. 그렇다. or연산을 이용하여 id='admin'을 입력하면 된다. 그런데 문제는 and 1=0이다. 이것을 어떻게 우회해야 될까???!! 바로 %23 즉, #인 주석처리를 하면 and 1=0은 인식되지 않는다. 따라서, 아래와 같이 입력하면 문..
주소 : https://los.rubiya.kr/ Lord of SQLInjection los.rubiya.kr [ 문제 ] [ 풀이 ] 해당 문제는 바로 이전 문제인 troll과 같이 대문자를 입력하여 우회하는 것이 불가능하다. strtolower( )는 대문자를 소문자로 변환시켜주는 함수이다. $_GET[id] = strtolower($_GET[id]); 또한, str_replace( )함수도 사용하여서, admin을 입력하였을시 삭제된다. str_replace( )는 문자열 치환 함수로, str_replce('찾을 문자','교체할 문자','교체 대상')형식으로 사용된다. $_GET[id] = str_replace("admin","",$_GET[id]); 해당 문제는 위의 두가지 함수를 참고하여, 조..
주소 : https://los.rubiya.kr/ Lord of SQLInjection los.rubiya.kr [ 문제 ] [ 풀이 ] 해당 문제에서는 '(싱클쿼터)와 admin을 차단하고 있다. if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~"); if(preg_match("/admin/", $_GET[id])) exit("HeHe"); 하지만 해당 문제에서는 id가 admin일 경우 clear가 가능하다. if($result['id'] == 'admin') solve("troll"); 잠깐!! 소스코드를 자세히 보니 admin을 차단하는 것으로, 대문자 ADMIN을 차단하지 않는 것 같다. 따라서, id에 ADMIN을 입력해보았다. 짜란!! 문제 CLE..
주소 : https://los.rubiya.kr/ Lord of SQLInjection los.rubiya.kr [ 문제 ] [ 풀이 ] 이번 문제에서는 pw를 맞춰야 하는 문제로 예상된다. pw를 입력하지 않고 id에 admin만 입력한 결과, "Hello admin"문구를 확인할 수 있다. ? pw=' || id='admin'%23 해당 문제에서도 or을 차단하고 있기 때문에 || 기호를 사용해야한다. 위의 True결과를 활용하여, Blind Sql Injection으로 pw를 유추할 수 있을 것으로 예상된다. 먼저, pw의 비밀번호 길이를 유추해주는 파이썬 코드를 작성해보자. import requests url = 'https://los.rubiya.kr/chall/orge_bad2f25db233a..