los.rubiya.kr(5)
-
bugbear 풀이
이번 문제 역시 pw에서 ' 가 필터링되어있습니다. no에서는 ', substr, ascii, =, or, and, (공백), like, 0x를 필터링합니다. no에서의 조건이 저번 문제보다 훨씬 까다로워졌습니다. 우회 방법은 아래에 정리해놓겠습니다. ' -> " substr -> left(), right(), mid() ascii -> ord(), hex() =, like -> instr, in or -> || and -> && (공백) -> /**/ https://zetawiki.com/wiki/SQL_IN_%EC%97%B0%EC%82%B0%EC%9E%90 SQL IN 연산자 - 제타위키 다음 문자열 포함... zetawiki.com like가 필터링돼서 조금 당황스러웠지만, 구글링을 해보니 in이라..
2021.08.30 -
darkknight 풀이
대충 보니 이 문제 역시 Blind SQL injection인 것 같습니다. 이번 문제는 preg_match()를 이용한 필터링이 좀 많습니다. pw는 ' 문자가 필터링되고, no는 ', substr, ascii, =가 필터링됩니다. 각각 우회 방법은 아래에 정리해놓겠습니다. ' -> " = -> like() substr -> left(), right(), mid() ascii -> ord() 우선 pw의 길이를 알아보겠습니다. no=0 or length(pw) like [숫자] 위의 구문을 쿼리에 삽입해서 Hello admin이 뜨는 경우를 확인해보겠습니다. 이제 pw를 알아내기 위해 파이썬으로 코드를 짜서 돌려보겠습니다.
2021.08.29 -
golem 풀이
이번 문제는 admin의 실제 pw를 알아내면 풀리는 문제입니다. 아무래도 Blind SQL Injection 문제 같습니다. 필터링하는 요소들을 보니 or, and, substr(, =의 4가지입니다. or이랑 and는 각각 ||, &&로 우회가 가능합니다. substr(, =은 어떻게 우회를 할지 생각이 나지 않아서 구글링을 좀 해봤습니다. https://m.blog.naver.com/xkdlffpshf/221368224853 PHP 필터링 우회기법 잘 알려지고 자주 쓰이는 연산자,함수는 필터링되기 마련이다. 그래서 php일때 필터링 우회기법을 여기다 ... blog.naver.com shirokawaii님 감사합니다...! 이제 pw의 길이부터 알아보도록 하겠습니다. 1부터 차례차레 브루트 포스 방..
2021.08.22 -
skeleton 풀이
id가 admin일 때 문제가 풀립니다. 현재 id는 guest인데, 그렇다면 pw 부분에서 id를 admin으로 변조하는 형식으로 문제를 풀어야 할 것 같습니다. 그런데 $query 부분을 보면 and 1=0이라는 구문이 적혀있습니다. 이 말은 즉슨, 맞는 쿼리문을 작성하더라도 전체 쿼리문이 false로 바뀐다는 뜻입니다. 그럼 이 부분은 주석처리를 하겠습니다. DB에서 사용되는 주석은 #, --, /**/의 세 가지가 있습니다. 저는 #이 사용하기 편하니 #을 사용하도록 하겠습니다. (#을 URL Encoding 하면 %23, '은 %27이 됩니다.) 그러면 쿼리문에 '||id='admin'#을 URL Encoding 한 형식으로 작성해주겠습니다. pw=%27||id=%27admin%27%23 and..
2021.08.22 -
vampire 풀이
코드 분석을 해보면 id가 admin일 때 문제가 풀립니다. 하지만 str_replace() 함수를 이용해서 id에 "admin"이 들어가 있으면 NULL 값으로 치환합니다. 어디선가 많이 본 패턴입니다! 이 문제의 의도는 "str_replace() 함수의 취약점을 이용하여 문제를 풀 수 있는가?"인 것 같습니다. 쿼리문에서 id 변수에 값을 줄 때 admin이 한 번 필터링 되더라도 admin이라는 문자열이 완성되도록 값을 주면 문제가 풀릴 것 같습니다. adadminmin 이렇게 값을 주면 밑줄이 쳐진 부분이 필터링 되더라도 남은 문자열이 합쳐서 admin이 되므로 문제가 풀립니다. 이전 문제보다 훨씬 간단하네요.
2021.08.21