목록Hacking & Security (134)
선릉역 1번 출구
보호되어 있는 글입니다.

? 딱히 아무것도 없어서 소스코드를 확인했다. 소스코드를 확인하니 귀여운 이모티콘처럼 생긴 애들이 마구 나왔다. 뭔가 난독화가 되어있는 것 같다. 도저히 모르겠어서 찾아보니 'AAEncode'라는 난독화가 되어있는 것이라고 한다. 그래서 맨 뒤에 있는 ('-')만 제외하고 복사해서 console창에 복붙하면 난독화가 풀린다. (function anonymous( ) { var enco=''; var enco2=126; var enco3=33; var ck=document.URL.substr(document.URL.indexOf('=')); for(i=1;i

view-source를 클릭해 소스코드를 확인하자 str_replace(변경할 문자열, 바꿀 문자열, 대상)이다. 여기서 query가 true인 행의 갯수만큼 1이 반환된다. 그러니까 1개라도 있으면 성공이다. 그리고 \ -> 공란, '는 ''으로 replace되고 있고 POST되는 내용의 0에서 시작해 15size만큼의 내용까지만 POST['id']값으로 사용한다. mysql에서 'a'와 'a '는 같다. 공백을 따로 구분하지 않는다는 것인데 이 성질과 substr을 적절하게 섞은 'admin' == 'admin '를 사용하면 '가 ''로 바뀌지만 15까지 자르기 때문에 결국 admin이 된다는 것이다. 이미 앞에 '가 있기 때문에 작성은 admin '으로 해준다. id=admin인 행이 존재하기 때문..

query문 중간에는 #이 들어있어서 그 뒷 문장들이 주석처리 된다. 그러나 여기서 중요한 것은 #의 경우 한 줄만 해당된다는 것이다. 그래서 pw에 먼저 line feed인 %0a을 입력해주면 그 뒤 문장은 인식이 된다. id='guest' and 0이면 앞 문장이 false되고 || id = 'admin'이 true가 되어서 result['id]값이 admin이 된다. clear

and ~뒤는 날려버린다고 생각하자 그럼 pw를 공략하는 방법밖에 없는데 pw를 true가 되게하려면? -> a=b=c를 활용하는 것이다. pw=%27)=0;%00이 딱 6글자다. clear

이 문제도 마찬가지로 where절이 true가 되게 해야한다. strrev(addslashes(~))를 주목하자. addslashes란 특수문자(', ", \, NULL)앞에 \를 붙여주는 것이고 strrev는 문자열을 뒤집는 함수이다. \를 입력했을 때, \\으로 표기되는 것을 볼 수 있다. strrev에 의해서 "를 넣어줬을 때 id 값이 "\으로 들어가서 또 다시 id의 '을 무력화 시킬 수 있다. 전 문제처럼 pw에 or 1 %23을 뒤집어 작성하면 된다(strrev때문) clear