bugbear

2022. 4. 5. 14:55Site/LOS

이번시간에는 bugbear을 풀어보겠습니다

공부하는 입장이라 틀린 것이 있더라도 양해부탁드립니다


점점 필터링이 많아지는 것 같습니다

prob _ . ( )을 필터링

substr ascii = or and like 공백 필터링

addslashes함수로 pw 필터링 -> sql injection 공격 불가능

쿼리에서 가져온 pw값과 정확히 일치해야 클리어

 

이번문제도 sql blind injection인 것 같습니다

 

우회방법

' -> "

substr -> mid

ascii -> hex

=, like -> in

or, and -> ||[%7C%7C], &&[%26%26]

공백 -> %09

 

일단 pw의 길이부터 구해보겠습니다

=, like을 둘다 쓰지 못하니 IN을 넣어 길이를 구했습니다

기존처럼 mid함수를 이용하여 넣어주었는데 Hello admin이라는 문구가 출력이 안됩니다

ascii코드 값이 필터링 되어있어서 변환된 값을 넣어주기 위해 ord함수, hex함수를 이용해야 됩니다

*

ord() : 문자열의 첫 번째 문자의 ASCII 값을 반환

ex) ord('hello') -> 첫글자인 h의 ASCII 값 104 반환

hex() : 출력값을 16진수 문자 값으로 변환하여 반환

hex(11) -> 0x0B

*

ord함수는 or이 필터링 처리되어 있어서 사용을 못하므로

hex함수를 사용하겠습니다

역시 길이는 8입니다

 

53 -> 5

hex함수는 16진수 문자값으로 반환을 하기 때문에 mid함수를 통해 추출된 값을 16진수 문자값으로 변환하고 찾을 IN(문자값)에도 적용을 하여 일치하는 16진수 문자값이 있는지 찾아주어야 됩니다 -> mid, IN(문자열) 둘 다 hex함수 적용

50 -> 2
100 -> d
99 -> c
51 -> 3
57 -> 9
57 -> 9
49 -> 1

pw = 52dc3991

 

 

cf) 엄청난 노가다였고 파이썬프로그램을 작성하여 다시 풀어봐야겠다

'Site > LOS' 카테고리의 다른 글

assassin  (0) 2022.04.05
giant  (0) 2022.04.05
darknight  (0) 2022.04.05
golem  (0) 2022.04.02
skeleton  (0) 2022.04.01