목록Security/Web (27)
cdor1's lab
보호되어 있는 글입니다.
noe.systems 사이트에 접속해서 Newbie 카테고리의 Bakery 문제를 보았다. go 버튼을 눌러 문제로 들어오니 Hello! guest라는 문자열을 띄워주고 admin이 아니라면 페이지를 읽을 수 없다는 말을 한다. 쿠키를 이용해서 클라이언트의 정보를 비교하는 것 같다. #쿠키란? 1. 쿠키 (Cookie)- 서버에 접속시 접속한 클라이언트의 정보를 클라이언트에 저장한다.- 이후에 서버로 전송되는 요청에는 쿠키가 가지고 있는 정보가 같이 포함되어서 전송- 크기는 4KB이하- 쿠키는 이름, 값, 유효기간, 도메인, 경로 등으로 구성 클라이언트의 정보를 저장하는 쿠키를 한번 확인해 보자, 크롬 브라우저 추가 프로그램 중 EditThisCookie를 받고 확인해보면 될 것 같다. guest로 저장..
레벨을 받고 무슨 돈을 출력해준다. 뭐가 필터링 되긴 하는데 =, ', char 등 꽤 많은 문자열들이 필터링 안되어있다.http://webhacking.kr/challenge/web/web-23/index.php?lv=2%0aor%0aid=admin간단히 이렇게 넣으면 풀려야하는데 아마 admin이라는 문자열을 필터링하는 것 같다.요번에는 char 함수를 써서 admin을 만들어보려한다.http://webhacking.kr/challenge/web/web-23/index.php?lv=2%0aor%0aid=char(97,100,109,105,110)
id와 pw를 받는 창이다.admin으로 로그인 하면 될 것 같은 느낌이 온다. 맞았다. admin으로 로그인하면 solve를 불러준다.위 소스를 잘 보면$input_pw = md5($_POST[pw], true);pw값을 md5로 바꿔서 넣어주는데 뒤에 true라는 인자가 붙는다.길이 16의 바이너리 형식으로 반환해 준다고 한다.하지만 이 md5해쉬에 =, '등 쿼리에 변형을 줄 수 있는 값이 들어가면 어떻게 될까? 내가 생각한 공격 방식은select id from challenge_51_admin where id='$input_id' and pw='$input_pw'select id from challenge_51_admin where id='$input_id' and pw='asdf'='ghjk'이..
저 xss구문을 삽입하라는 것 같다. 그대로 넣어주면 no hack이 뜨기에 이를 우회할 방법을 찾아야 한다. 앞 몇글자를 붙여서 넣어주니 no hack이 뜨는 것으로 보아 중간중간에 원본 구문에 문제없는 문자열을 넣어서 우회해야겠다. %00 (null) 혹은 %0a (pipeline)을 사용하면 되겠다. a%00l%00e%00r%00t(1);
웹쉘을 업로드해달라는데 asp, php, jsp, cgi등 웹스크립트 파일을 올려줘야겠다. .php파일을 한번 올려 보았는데 필터링 당한 것 같다.힌트로 file type이 나와있으니 burp suite로 한번 잡아보자. Content-Type이 application/octet-stream으로 되어 있다.우리에게 친숙한 image/jpeg로 바꾸어 보자. 이렇게 바꾸어주고 올려주면 필터링이 우회된다.이런 웹 트릭을 하나하나 알아가는게 꽤 기분좋다. ㅎㅎ
웹에서 발생하는 Command Injection 문제다.처음에는 name을 입력하라길래 필터링을 피해서 admin을 만들어 주는 문제인가 했다.하지만 그냥 admin을 넣어도 hello admin 하며 반갑게 맞아주어서 이게 아닌가보다 하고 다른 방법을 모색했다. go.html 파일을 불러서 내용을 출력해 주는데 내가 입력값을 바꿀 때마다 hello [input]이 출력되는 것으로 보아 html파일이 수정되는 것 같다,echo 'hello $_POST['input']' > ./go.html 명령어를 실행해 인풋을 출력 해 주는 것 같다. 여기서 우리가 사용할 수 있는 취약점이 존재한다.post값으로 인풋을 받아 hello [input]을 출력해 주는 부분에서 &ls, &id, &cat 등으로 comman..
sql injection의 베이직 같은 문제이다.웬만한 sql문은 거의 다 필터링해서 어떻게 해야하나 막막했는데||, &&같은 연산 기호들은 사용할 수 있었다. select id from members where lv=2 or id='admin'select id from members where lv=2 || id='admin'이렇게 넣어줘 lv이 2이거나 id가 어드민인 값을 뽑아내면 되는데lv=2는 거짓으로 나타나므로 or 연산을 이용해 id가 어드민인 값을 뽑아내려고 한다.php매직쿼터때문에 '가 필터링되고 admin값 또한 똑바로 들어가질 않았다. hex로 인코딩해서 넣어주자.select id from members where lv=2||id=0x61646D696E
뭔 파일을 업로드 하는 화면이 나와서 아무 파일이나 업로드 해보았더니 .htaccess파일을 힌트로 준다. 또 다른 힌트로 주어진 index.php를 들어가 보니 read me라는 텍스트만 보이고 다른 정보를 얻을 수 없었다. .htaccess파일에 대해서 찾아보니 아파치 웹 서버 파일인데, 접근 제어를 설정하거나 웹 서버 설정을 변경할 수 있는 파일 이라고 한다.이를 이용해서 무엇을 할 수 있느냐 하면 php engine을 꺼서 php소스를 무력화 시킬 수 있다.이를 이용해 index.php 파일의 모든 내용을 읽을 수 있도록 할 수 있다. .htaccess파일에 php_flag engine off을 넣어서 보내자. 이 공격 방법은 제로보드 취약점이기도 했던 방법이고웹쉘 업로드가 가능하도록 만드는 취약..
450점이나 주는데 sql injection이라고 해서 얼마나 어려울까 무서웠다.. id값을 mb_convert_encoding이라는 함수를 이용해서 건드는데인코딩 할 때 사용되는 함수라고 한다.이 소스에서는 euc-kr인코딩에서 utf-8인코딩으로 바꿔주고 있는데 여기선 크나큰 취약점이 발생한다.php에선 magic_quotes_gpc 설정을 세팅해 ', ", /, %00이 들어가게 되면 /와 함께 붙게 되어 injection을 방어하는데멀티바이트를 사용하는 언어셋 환경에서는 함수가 백슬래쉬 앞에 %a1~%fe의 값이 들어오게 되면%a1\이 한 개의 문자로 취급해서 인코딩해 백슬래쉬를 먹어버리게 된다.여기서 생기는 취약점으로 '(싱글쿼터)를 주입할 수 있게 할 수 있다.select lv from mem..