분류 전체보기(42)
-
LOS - succubus
'이 막혀 밖으로 빠져나가지 못하는 상황이다. 저번문제에선 like의 이스케이프 문자인 %를 이용해 문제를 해결했는데 = 는 어떤 이스케이프 문자가 있는지 알아보면 \는 여러언어에서도 쓰이는 이스케이프 문자이다. \' 은 '가 문자열 마지막에 쓰이는게 아니라 '라는 문자를 검색하게 만들 수도 있는 것이다. select id from prob_succubus where id='\' and pw='' 이런 쿼리가 나오게 하면 id가 ' and pw= 라는 문자열인 것을 검색하게 된다 그리고 뒤에 '이 하나 남게 되는건데 pw 파라미터 값으로 || id='admin 을 넣게 된면 필터링 될테니 || id=16진수admin 주석처리 ' 이렇게 만들면 admin이 정상적으로 검색이 될 것이다. #은 mysql에서..
2020.05.08 -
LOS - assassin
' 이 차단되어 pw like '' 밖으로 나올 수 없게 되었다. 그러면 이 상태에서 꼼짝없이 admin의 pw를 구해야 하는가? mysql에서 문자열을 이용해 검색을 할때 표준문자열을 이용하여 비밀번호를 유추할 수 있지 않을까? 리눅스에서 ls -l ~/a* 를 입력하면 자신의 홈디렉토리의 a로 시작하는 모든것을 볼 수 있듯이 mysql에도 %라는 이스케이프 문자가 존재한다. a%는 a로 시작하는 문자열 %b는 b로 끝나는 문자열 %c% 는 c 가 들어가는 문자열을 뜻한다. 이걸 이용해서 admin의 비밀번호를 구하기 전 다른 계정과 시작하는게 같을 수 있으니 그걸 고려해서 파이썬으로 코드를 짜 보았다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2..
2020.05.07 -
LOS - giant
from과 prob_giant 가 서로 붙어있어서 query가 동작하지 않는데 그 사이에 \n \t \r 그리고 공백이 아닌 다른 입력으로 저 둘을 떨어뜨리면 되는 것 같다. %09 : tab %0a : line feed ( 새줄 문자 ) %0b : vertical tab %0c : form feed %0d : carriage return 이중 \n, \r, \t, 공백 에 포함되지 않는 %0b, %0c 를 이용하여 문제를 해결할 수 있었다.
2020.05.06 -
LOS - bugbear
blind sql injection _ . () ' substr ascii = or and 띄어쓰기 like 0x(16진수) 을 쓰지 않고 sql injection을 만들어 보자 일단 비밀번호의 길이를 구하는건 > ( 부등호 기호 ) 를 사용해 보았다. 그리고 id="admin" 부분을 instr을 이용하여 대체하였다. &는 url인코딩을 하여 넣어주어야 하고 length(pw)>%d 에서 처음으로 Hello admin이 출력되지 않는 수가 pw의 길이인 것을 알 수 있다. 그리고 substr 대신 right(left(pw,%d),%d)를 이용하면 다음과 같이 query를 만들 수 있다. 이를 이용하여 blind sql injection 파이썬 코드를 만들어 보았다. 1 2 3 4 5 6 7 8 9 10..
2020.05.06 -
LOS - darkknight
이번에도 blind sql injection이다. =, ' , substr , ascii 등이 막혔다. 그럼 이번엔 length(pw) like %d right(left(pw,%d),1) like %c 를 이용하여 문제를 풀어보았다. 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 import requests #?pw=aaa&no=1 %26%26 id like "admin" %26%26 length(pw) like 12 cookies = { "PHPSESSID" : "나의 PHPSESSID" } url = "https://los.rubiya.kr/chall/darkknight_5cfbc71e68e09f1b039a8204..
2020.05.05 -
LOS - golem
id='guest' and pw='' 를 false로 바꾸고 id를 admin 그리고 blind sql injection으로 비밀번호를 알아내는 문제이다. substr()이 차단되었고 = 이 차단되었다. 각자 대체할 수 있는 것은 substr : left(), mid(), right() 함수 들이고 = : like 으로 대체할 수 있다. left(pw,3) 일때 pw가 abcde라면 abc가 리턴된다. 따라서 이걸 right(left(pw,3),1) 이런 식으로 사용하면 substr(pw,3,1) 과 같은 효과이다. 이를 참고하여 파이썬 코드를 짜 보았다. 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 im..
2020.05.05