어떤 문제를 풀다가 이상한 논리에 막혔다. 일단 30번 문제 ouroboros다. 빈 테이블이라는 것은 어찌저찌 시도하다가 알아냈고 union을 시도할 수 밖에 없다는 것은 알았으니 풀이를 하려면 union으로 넘겨준 비밀번호와 내가 입력한 비밀번호가 같아야 한다. 내 나름의 머리를 굴렸으나 애초에 말이 안 된다. union으로 넘어간 비밀번호는 impossible. 내 입력으로 넘겨준 비밀번호는 impossible' union select 'impossible'--+ 였으니 뭐 지금까지 풀면서 고려한 쿼리가 전혀 쓸모가 없었다. 할 수 있는게 없었다. 구글링을 계속 한 끝에 해결책을 제시해줄 수 있는 글을 찾았다. SQL Injection & Quine Quine은 자기 자신의 소스코드를 출력하는 프로..
J.A.R.V.I.S!! 19번째 문제다. 방금 실수로 비공개로 저장만 한다는 29번째 문제 풀이를 올리고 말았다 허허 이거 포스팅하러 들어왔다가 바로 비공개 처리 이 문제 되게 까다로워 했었던 기억이 난다. 평소와는 다른 처리 방법을 사용해서 정신 못차리고 이게 뭐지? 싶었던.. 필터링은 크게 많이 되있지 않다. 정규식과 like를 사용하지 못하게 해놓았다. 이번 문제 그냥 쉬운 편이잖아? 싶어서 바로 길이부터 구해보고, 오 이번엔 비밀번호 길이가 많이 다르다. 바로 추출을 해볼까?? 어..어? 0? 어어. 오키... 뭔데 이거 이상하다 분명 패스워드 길이는 12인데 추출을 해보니까 길이가 말이 안 됨. 처음이 이거 풀 때 여기서 방지턱 씨게 밟아서 뭐가 있을까 한참을 찾아보다가 알아낸 그것.. UNI..
18번째 문제 악몽 코드를 보고 제일 악몽같은 부분은 저 strlen($_GET[pw])>6 부분이었다. 최대 사용가능한 글자 수가 6자 쿼리를 보면 and 뒤에 id != admin 으로 admin 계정으로는 로그인 불가능하게 해놓았다. 근데 전혀 admin으로 로그인할 필요가 없다. solve 부분을 보면 로그인 성공하기만 하면 풀리는 것이다. 그러니 guest로 우회 로그인해도 상관이 없다. guest로 로그인해도 되므로 id!='admin'을 거짓이 아니라 참인 구문이라고 보면 된다. 그럼 앞의 pw 부분만 참이 되게끔 하면 문제는 해결될 테니 여기까지만 보면 쉽지만?? 아까 말한대로 최대 사용가능한 글자는 6자..!! 그런데 아무리 봐도 pw 부분을 참으로 만들 수가 없다. (그 놈의 여섯 자 ..
17번째 문제 zombie assassin이다. 하마터면 까먹고 블로깅을 안 할 뻔 했다.. 새벽 알바를 그만 두던가 해야지 흐유 이 문제는 addslashes 함수와 strrev 함수를 어떻게 이용할 것인가만 고려해보면 쉽게 풀린다. 우선 addslashes는 싱글 쿼리( ' ), 더블 쿼리( " ), 백슬래시 ( \ ), NULL 문자에 대해 백슬래시를 추가해주는 함수이다. 싱글 쿼리와 더블 쿼리가 해석되는 과정에서 의도치 않은 에러를 일으킬 수 있기 때문에 문자로만 해석하게끔 해주는 것이다. strrev 함수는 문자열을 반전시켜 준다. 백슬래시를 입력하면 백슬래시가 추가되기 때문에 succubus 처럼은 풀리지 않는다. 여기서 생각해 봐야 할 부분은 왜 굳이 반전을 시키는가?? 그냥 addslash..
16번째 서큐버스님 안녕하세요. 오늘은 reflected xss도 올렸으니 이것만 올리고 쉬고 싶은 나였다. (나도 사람이야 일요일은 놀아야지 ㅠㅠ) id와 pw 전부 입력을 받는데 싱글 쿼리는 필터링이 되어 있다. 정말 운 좋게 바로 풀긴 했다. LoS 하면서 느끼지만 지금까지 한 게 많이 헛되지는 않구나 라는 느낌. 알고 있는게 굉장히 많은 도움이 된다. id의 마지막 싱글 쿼리를 문자열 따옴표로 바꿔버렸다. 그래서 아이디는 \ 가 아니라 \' and pw= 까지가 id가 되어버렸다. 그럼 or로 로직 우회를 해주면 끝!
15번째 문제 ass ass in.. 이번 쿼리는 특별하게 다른 점이 like를 사용했다는 점이다. 싱글 쿼리는 필터링이 되고 있다. like를 보면 바로 떠오르는게 와일드카드다. 아마 이 방법으로 문제를 풀라는 것 같다. 다른 사람들은 어찌 풀었는지 LoS를 다 풀기 전까진 보지 않을꺼라 이게 좋은 풀이인건진 전혀 모르겠다. admin으로 로그인하기만 하면 solve인 것을 보아 admin으로 로그인하게끔 조건을 설정하든가 와일드카드로 admin 패스워드만이 가지고 있는 pw 형태를 알아내면 될 것 같다. 흐흐 벌써부터 hello guest가 뜨다니 이번 문제는 쉽게쉽게 갈 수 있겠군. 그렇게 0부터 9까지 끝나는 숫자를 다 넣어봤지만 결과는 %0에서 출력된 Hello guest가 전부였다.. 뭐지? ..
이번 문제는 확실히 비교적 쉬운 giant이다. 쿼리를 분명 항상 참이 되는 쿼리를 만들어 놨는데 일부러 쿼리를 이상하게 해놓은 점이 보인다. 그저 from과 prob_giant 사이에 공백이 한 칸만 있으면 되는 문제다! \n \r \t 전부 막은데다가 한 글자 이상은 입력할 수 없어서 /**/ 주석으로 우회도 하지 못하지만! 확실히 알고 있는 것이 도움이 많이 된다. %0b로 우회했다. %0c도 되는 걸로 안다! 오늘은 4개나 LoS를 올렸는데 사실 더 올릴까 하다가 너무 다 올려버리면 좀 그럴까봐 조절을 했다!!
LoS 13번째 문제 bugbear이다. 어.. 근데 필터링의 상태가? 싱글 쿼리에 substr,ascii,=,or,and,like,0x,공백 문자 그냥 전부다 필터링을 해 놓으셨다.. 하지만 문제도 우회 로그인이 아니라 admin의 패스워드를 구해서 넣어야 한다. 드디어 좀 난이도 있는 문제가 온 것인가..!! 그런데..? ||는 안됬는데 %7c%7c는 아주 잘 먹힌다. 공백은 주석으로 우회하긴 했는데 깔끔하게 %0a같은 공백 우회 문자를 쓸 걸 그랬나 싶다. 공백 우회 문자는 상당히 많은지라.. ?? 잘 걸렸다 이 녀석 싱글 쿼리는 막아 놨지만 더블 쿼리까지 막지 않은 것에 힌트를 얻었다. in 으로 = 를 우회해볼까 했는데 더블 쿼리가 살아있기 때문에 instr함수로 일단 우회 성공 다만 이 문제를..