webhacking.kr 25

webhacking.kr 12번 풀이

js를 통해서 푸는 문제인 것 같다. 항상 하는 것처럼 개발자 도구(ctrl+shift+i)를 열었다. 하지만 이렇게 마지막이 ... 으로 끝나는 것을 보니 소스코드를 다른 방법으로 열어야 할 것 같다. 그래서 마우스 우클릭-->페이지 소스보기(ctrl+u)를 통해서 소스코드를 보았다. 그러면 제대로 된 소스코드를 볼 수 있다. 이 암호문은 AAencode로 만들어진 것이라고 한다. AAencode 디코딩 사이트에서 해당 소스코드를 복붙해서 해석해보자. var enco=''; var enco2=126; var enco3=33; var ck=document.URL.substr(document.URL.indexOf('=')); for(i=1;i

webhacking.kr 22번 풀이

mission: login as admin username: test password: 1234 hash코드가 32자리 인것을 보아 md5암호문 같다. md5복호화를 해보자 (대부분의 사이트가 에러가 뜬다. 밑의 사이트를 이용하자) https://crackstation.net/ CrackStation - Online Password Hash Cracking - MD5, SHA1, Linux, Rainbow Tables, etc. Free Password Hash Cracker Enter up to 20 non-salted hashes, one per line: Supports: LM, NTLM, md2, md4, md5, md5(md5_hex), md5-half, sha1, sha224, sha256, ..

webhacking.kr 44번 풀이

소스코드를 보니, ls명령어를 실행시켜야 할 거 같습니다. id입력을 이용해서 해 봅시다. id --> ';ls' system("echo 'hello! ';ls''"); 그러면 위와 같은 문장이 나타나는 데요, 맨 앞의 hello!는 제외하고 뒤에 있는 파일 두가지가 보입니다. index.php는 현재 우리가 있는 곳이니 flag_29~로 이동해 볼까요? 그러면 flag가 나타납니다. 복붙해서 auth에 입력합시다.

webhacking.kr 29번 풀이

1. flag는 다른 테이블에 있다. 2. 현재 테이블에는 time, ip, file 컬럼이 존재한다. 이 문제는 sql의 문법을 이용해서 푼다. insert into 테이블명 values ('id1', 'pw1'),('id2', 'pw2') 같이 한번에 두 값이 들어갈 수 있다는 것을 알아야 한다. 먼저 파일 명을 file_name', 'time', 'ip주소')# 로 설정해서 보낸다. 1','123', 'ip_address')# 로 보내보았다. (ip는 자신의 것을 꼭 사용해야 함. ) 그러면 시간, ip주소, 파일 이름 순으로 정보가 정상적으로 나온다. 이를 통해 우리는 칼럼 순서가 시간, ip, 파일 이름이라는 것을 알 수 있다. 그럼 이제 2가지 정보를 보내보자. file_name1', 'tim..

webhacking.kr 59번 풀이

view-source 클릭 개발자 도구를 이용해서 살펴보니까 login할 때 쓰이는 아이디와 번호다 lid, lphone이네요! 소스코드를 정리해 봅시다. 1. lid와 lphone에 함수 addslashes를 적용한다. 2. lid와 lphone에에 해당하는 id와 lv를 선택한다. 3. id가 존재하면 lv를 출력한다. 4. 만약 lv==admin이면 문제해결 1. id와 phone에 함수 addslashes를 적용한다. 2. phone>=20이면 access denied 3. id에 admin(대소문자상관x)이 있으면 access denied 4. phone에 admin|0x|#|hex|char|ascii|ord|select(대소문자상관x)이 있으면 access denied 5. 테이블에 (id, ..

webhacking.kr 55번 풀이

문제에 입장하자마자 요 귀여운 아이가 나타납니다!! 마우스를 움직이면 마우스를 따라 움직이는 게 너무 귀엽네요 ㅎ(눈도 깜빡깜빡 거려요!) 그리고 저 슬라임?이 움직임에 따라 스코어 점수도 변합니다. score 밑에 보면 rank라는 링크가 있네요! 들어가 봅시다. 랭크 순위와, 아이디, 스코어가 순서대로 쭉 나열되어 있습니다. 그런데 보시면 스코어가 2147483647로 다 똑같습니다. (이러면 순위가 상관 없잖아요?) 어쨌든 저는 첫번째 2147483647를 클릭해 보았습니다. 그러면 위에 id : jusb3 // 2147483647 가 나타나고, URL도 https://webhacking.kr/challenge/web-31/rank.php?score=2147483647 로 바뀐걸 볼 수 있습니다. ..

webhacking.kr 51번 풀이(PHP md5함수 취약점)

wrong이라고 뜨네요 아마도 PW가 틀렸을 거라 생각됩니다. 오른쪽 밑을 보면 소스를 볼 수 있습니다. 소스를 한번 볼까요? 1. 먼저 post 방식으로 id와 pw를 입력받습니다. 2. id에 addslashes 함수를 적용하여 특수문자 앞에 역슬래시'/'를 붙여줍니다. 3. pw를 md5로 암호화합니다. 4. id='input_id', pw='md5('pw',true')'인 값이 테이블에 있으면 문제는 풀리게 됩니다. 일단 눈에 띄는게 있네요 바로 md5($_POST['pw'],true); 부분의 true 입니다. 이게 뭔가 싶어 검색을 해 봤더니 취약점이 검색어 자동 완성으로 바로 뜨네요 ㅋㅋㅋㅋ md5를 true와 같이 쓰면 취약점이 있나 봅니다. 자 그럼 취약점을 자세히 알아볼까요? md5 의..

webhacking.kr 53번 풀이

일단 소스를 살펴봅시당 먼저 소스코드를 해석해 보면, 1. tablename.php 파일을 불러온다. 2. 만약 answer변수가 hidden_table 변수값과 같다면 문제 해결 3. val변수값의 select, by를 필터링함(대소문자 상관 X) 4. a=val변수값에 해당하는 hidden_table 값을 가져온다. 먼저 val 값이 1, 2, 3, 4일 떄를 각각 입력해 봤더니 각각 1, 2, 3, 4를 내놓는다. 아마도 val값 입력할 때를 이용해 table이름을 알아야 할 거 같다. table 이름을 알아내는 가장 일반적인 방법은 SELECT table_name FROM information_schema.tables; 을 사용하는 것이다. 현재 사용하는 테이블의 이름만 알고 싶다면 WHERE t..

webhacking.kr 41번 풀이(마지막 부분 오류 해결 방법)

view-source를 통해 소스를 살펴보자. 짧아서 좋다 ㅎㅎ 일단 php부분만 따로 살펴보자. $_FILES의 속성을 밑 여는 글에 정리해 놓았습니다 참고하세요!! 더보기 $_FILES['userfile']['tmp_name'] - 웹 서버에 임시로 저장된 파일의 위치. $_FILES['userfile']['name'] - 사용자 시스템에 있을 때의 파일 이름. $_FILES['userfile']['size'] - 파일의 바이트 크기. $_FILES['userfile']['type'] - 파일의 MIME 타입을 가리킴. 예를 들어, text/plain이나 image/gif. $_FILES['userfile']['error'] - 파일 업로드할 때 일어난 오류 코드를 알려주는..

webhacking.kr 46번 풀이

level의 숫자를 바꿔서 제출하면 id(Itusy)와 money의 숫자가 매변 다르게 나옵니다 그리고 view-source를 통해 소스코드를 살펴볼까요? 입력한 lv이 admin의 lv과 같으면 문제가 풀리게 됩니다. 그런데 우리가 admin의 lv을 알리가 없겠죠?? SQL injection을 시도해야 할 것 같습니다. 일단 필터링 되는 것들을 간단히 정리해 보죠 addslasher: \(역슬래시) str_replace: (공백), /, *, % preg_match: select, 0x, limilt, cash (대소문자 상관X) 위의 필터링값들을 피해서 select id,cash from chall46 where lv=0 or id='admin' 식으로 만들어 주면 된다. 첫번째 시도: 공백을 +로..