White Security
Johnny 가 블로그를 개설했는데입력을 escape 하는 방법을 모르겠다고 합니다. 링크에 접속하면인삿말과 함께 로그인 페이지에 접속이 가능합니다. 로그인 폼은 별다를 것이 없습니다. There was a problem when looking for user. Please try again.Sorry, That Username / Password is incorrect. Username에 싱글 쿼트를 삽입하면 쿼리 오류가 뜨는 듯 한데주석을 넣기 위해 '#', '-' 등 특수문자를삽입하면 검색오류로 바뀝니다. 이것을 보아, 쿼리 검색을 하기 전에지정된 문자가 있는지 확인하고 있다면검색 오류를 뿜고 바로 넘겨버리는 것이 아닌가생각해 볼 수 있습니다. submit=Login&Password=&Usernam..
문제를 보면 '==' 로 끝나는문자열이 하나 주어져 있습니다. base64 문자열이 종종 '=' 로 끝나곤 하죠. 물론 그렇지 않은 경우도 있지만,암호화 방식과 관련이 있습니다. 본래 8비트씩 붙어있던 데이터를 분리해다가6비트씩으로 재결합 하다보니 남는 비트수를 표현하기 위해붙는 것이 '=' 입니다. 자세한 설명은 여기를 참고하시면 되겠습니다. 단순히 데이터의 바이트 수가 3배수가 아니면모조리 '='가 붙는다고 알아두어도 상관은 없습니다. flag{D1d_y0u_d0_th3_Pr3_CTF} base64 복호화를 거치면 플래그를 얻을 수 있습니다.
링크가 하나 주어집니다. 접속하면 위와 같은 텍스트가 하나 나오네요. 그리고 이름대로쿠키가 하나 주어집니다. Red Guy 의 입력해 달라고 하는데처음에는 단서가 없어 어쩌나 했는데 Cookie monster 라는 것이 본래 있는서양 TV 프로그램 이름이더라구요. 찾아보니 빨간 몸통을 가진 녀석의이름은 elmo 였습니다. 따라서 쿠키에 elmo라고 입력해주면 You got it! flag{YummyC00k13s} 플래그를 얻을 수 있습니다.
neverlanctf의 console 문제입니다.링크가 하나 주어지네요. 접속하면 화면에 단일 폼이 하나 등장하고콘솔이라는 걸 알리고 싶었는지좌측에 '>' 이 하나 붙어있습니다. var foo = document.getElementById("p"); function what(){ var input = document.getElementById("pass").value; if( md5(input) == "7b1ece53a46f4a5a2995b9cf901bf457" ){ getThat('Y'); }else{getThat('N')} } function getThat(strg){ if(strg == 'Y'){ // Note: There is no data sent to the key.php file... // ..
엄마! 리눅스 파일 디스크립터가 뭐야? pwnable.kr Toddler 1번 응애응애 문제입니다. 파일 디스크립터에 대한 기본적인 이해를 요하는 문제로서 리눅스와 c언어에 대한 기본적인 이해만 있다면 풀 수 있습니다. putty나 openssl 등의 ssh 콘솔을 사용하여 접근을 시도하면 홈 폴더에 파일이 3개 존재하는 것을 확인할 수 있습니다. fd 라는 이름의 실행가능한 파일에 user sticky bit가 붙은 것을 확인할 수 있군요. 리눅스 특수권한에 대한 설명 덕분에 fd 프로그램을 실행하면 일시적으로 fd_pwn 의 권한을 가지게 되므로 flag 파일의 내용을 확인할 수 있게 됩니다. fd 프로그램의 소스 파일인 fd.c 를 살펴 보겠습니다. #include #include #include ..
los.eagle-jump.org 22번 문제입니다. 이번 문제는 21번의 진화버전입니다.쿼리 수행결과, 오류 메시지도 물론이고if case when .. 등등조건분기에 필요한 문구들을 거의 필터링 해두었기에조건식을 사용하지 않고에러를 유발시킬 수 있어야 하죠. pw='+or+exp(710*())--+- 다른 방법도 있을 수 있겠지만저는 EXP 함수를 이용하여 문제를 해결했습니다. EXP 함수는 인자값이 710을 넘어가면처리 가능한 범위를 넘겨 오류를 발생하는데요. 따라서 내의 조건문이 참이면오류가 발생하여 빈 페이지를 표시하고거짓이면 정상 페이지를 확인할 수 있습니다. from urllib import request, parse, error import ..
los.eagle-jump.org 21번 문제입니다. 첫번째 쿼리의 실행 결과를 보여주지 않는 대신에mysql_error 함수를 통해 에러 메시지를 출력해 줍니다. Error based SQL Injection 문제라는 것이죠. 그렇지만 '_' 문자가 필터링되기에흔히 사용되는 group_by, const_name 는 물론이고 Mysql 5.1 버전부터 지원되는Updatexml, Extractvalue 또한 사용이 불가능합니다. 따라서 저는Blind Error based SQL Injection 을 사용하여 문제를 해결했습니다. pw='+or+if(1=1,1,(select+1+union+select+2))--+- IF 문의 조건식이 참이면 1거짓이면 (SELECT 1 UNION SELECT 2) 을 반환하..