목록Webhacking/Lord of SQL injection (5)
controlpro

이번에는 or 과 and를 필터링하는데 or = > || and => && 우회가 가능하다. 따라서 ?pw=' || id = 'admin

생각보다 쉽다. 조건을 보면 id가 admin이어야하고 space bar 즉 공백을 필터링 하는 중이다. 여기서 공백은 %09를 입력을 해주면 우회가 가능하다. ?pw='%09or%09id='admin

문제 부터 보자 문제를 분석해보자면 id가 admin일 때 만족하고 goblin이 열리는 것 같다. no에 어떤 값을 입력하든 id가 admin만 되면 되므로, 그냥 no = 1을 넣어보자 guest를 인식하는 듯하다. 그러면 no에 아무 값이나 입력을 해봤는데 2를 해보니 그냥 됐다. 이렇게 푸는건 뭔가 약간의 찍어 맞추기 같아서... 생각을 해봤는데 id = admin이 필터링이 되어있는지 입력이 되지를 않는다. 그래서 admin자체를 우회해서 id=0x61646D696E 을 해줬다. 앞에 guest는 거짓이 나와야하니까 no에 1을 제외한 아무거나 입력해주면 된다.

webhacking 쪼랩 Level up 시작 문제 다음과 같은 데 그냥 필터링하는 것이 그냥 많지 않아서 id부분에 admin을 넣어주고 항상 옳게 해서 solve함수를 실행 시켜보자 select id from prob_gremlin where id='admin' or '1' = '1' and pw='' 이러면 pw부분은 맞지 않지만 '1' = '1' 부분이 항상 맞게 되어서 항상 참이되게 된다. 다음~

두 문제를 동시에 리뷰 하겠다. 사실 요 문제들은 둘이 똑같은 거기 때문에 검열하는 단어만이 다른 이야기다. 두문제다 Blind sql injection을 다룬 문제이다. Blind injection이란? - 서버가 사용자에게 보내는 반응을 이용해서 참인지 거짓인지 판단해서 공격하는 기법 일단 문제를 보자(orge문제로 리뷰하겠다.) 문제는 다음과 같다. 마지막 답을 알아내기 위한 코드를 보면 우리가 입력한 pw와 서버에 있는 pw가 일치 해야 solve("orge") 함수를 실행 시킬 수 있다. 그러면 PW는 어떻게 유도 해야하는 걸까? 우리가 pw에 아무거나 입력을 하면 서버는 어떠한 반응도 오지 않는 데 select id from prob_orge where id='guest' and pw='' |..