프로젝트/Webhacking.kr 44

[Webhacking.kr] Challenge(old) 58번 문제

문제 페이지는 해당 페이지와 같다. 해당 페이지에는 입력창이 존재한다. Send 버튼을 눌러보면 command not found 라는 문구가 출력되는데 이 문제는 command injection 문제일 듯하다. 입력창에 help 를 입력하여 사용가능한 명령어를 확인해 본다. 해당 페이지에서는 ls 명령어와 id 명령어, flag 명령어 를 사용할 수 있다는 것을 확이할 수 있다. 해당 명령어를 전부 실행시켜본다. 마지막 flag 명령어를 입력하면 permission denied....admin only! 라는 문구가 출력되는 것을 확인할 수 있다. 권한을 admin 으로 변경하여 flag 명령어를 실행하면 해당 문제가 풀릴 것 같다. 해당 페이지의 소스 코드를 확인한다. socket io 로 서버와 송수..

[Webhacking.kr] Challenge(old) 61번 문제

문제페이지는 해당 페이지와 같다. 해당 페이지에는 view-source 링크만 존재한다. 해당 링크를 통해 소스 페이지를 확인해본다. if(!$_GET['id']) $_GET['id']="guest"; Get 방식의 id 파라미터 값이 존재하지 않으면 guest로 지정한다. $_GET['id'] = addslashes($_GET['id']); if(preg_match("/\(|\)|select|from|,|by|\./i",$_GET['id'])) exit("Access Denied"); if(strlen($_GET['id'])>15) exit("Access Denied"); id 파라미터에 addslashes() 함수를 적용해 특수문자가 잘 인식되도록 역 슬래쉬를 추가해주고, ( ) select from..

[Webhacking.kr] Challenge(old) 60번 문제

문제 페이지는 해당 페이지와 같다. 해당 페이지에는 나의 idx 가 50674 라는 문구와 Access Denied 문구가 출력되있고, view-source 링크가 존재한다. 해당 링크를 클릭하여 소스코드를 확인한다. 소스 코드를 해석 해본다. if(!is_numeric($_COOKIE['PHPSESSID'])) exit("Access Denied view-source"); PHPSESSID 쿠키 값이 정수형이 아닌 경우 Access Denied 문구를 출력한다. sleep(1); if($_GET['mode']=="auth"){ echo("Auth~ "); $result = file_get_contents("./readme/{$_SESSION['idx']}.txt"); if(preg_match("/{$_..

[Webhacking.kr] Challenge(old) 59번 문제

문제페이지는 해당 페이지와 같다. 해당 페이지는 view-source 링크와 join 과 login 창이 존재한다. 먼저 소스 페이지를 확인해본다. if($_POST['lid'] && isset($_POST['lphone'])){ $_POST['lid'] = addslashes($_POST['lid']); $_POST['lphone'] = addslashes($_POST['lphone']); $result = mysqli_fetch_array(mysqli_query($db,"select id,lv from chall59 where id='{$_POST['lid']}' and phone='{$_POST['lphone']}'")); if($result['id']){ echo "id : {$result['id..

[Webhacking.kr] Challenge(old) 54번 문제

문제 페이지는 해당 페이지와 같다. 해당 페이지에 들어가면 Password is 라는 문자뒤에 문자열이 빠르게 지나가고 마지막에 ? 로 끝이 난다. 변화하는 문자열에 FLAG 단어가 존재하는 듯하여 연속된 문자열을 알아내면 될 듯하다. 먼저 소스코드를 확인해본다. function answer() 함수의 aview.innerHTML = x.responseText 부분을 한글자씩 바뀌는 것이 아니라 중첩되도록 실행하도록 aview.innerHTML += x.responseText 로 바꾸어준다. 또한 마지막 if 조건문에 해당하는 i if(x.responseText=="") aview.innerHTML="?"; 는 text가 없으면 ?로 출력하기 때문에 해당 구문은 삭제한다. 이렇게 수정한 스크립트 부분을 ..

[Webhacking.kr] Challenge(old) 53번 문제

문제페이지는 해당 페이지와 같다. 페이지에는 view-source 링크만 존재한다. view-soure 링크를 통하여 해당페이지의 소스코드를 확인한다. if($_GET['answer'] == $hidden_table) solve(53); GET 방식의 answer 파라미터 값이 hidden_table 이면 해당 문제가 풀린다. 숨겨진 테이블명을 알아내면 문제가 풀리는 것 같다. SELECT 구문을 injection 하여 알아내고 싶지만 필터링 되기 때문에 procedure analyse() 라는 함수를 사용한다. procedure analyse() 는 SQL 내장 함수 중 하나로 select a from {table} where a=1 procedure analyse() 가 들어오면 {DB}.{table..

[Webhacking.kr] Challenge(old) 46번 문제

문제페이지는 해당 페이지와 같다. SQL INJECTION 문구와 level 을 입력하는 창에 1이 입력된 채로 존재하고 view-source 링크가 존재한다. view-source 링크를 통해 해당 페이지의 소스코드를 확인한다. $_GET['lv'] = addslashes($_GET['lv']); addslashes() 함수는 문자열 안의 특수문자가 잘 인식되도록 역슬래쉬를 추가해주는 함수이다. $_GET['lv'] = str_replace(" ","",$_GET['lv']); $_GET['lv'] = str_replace("/","",$_GET['lv']); $_GET['lv'] = str_replace("*","",$_GET['lv']); $_GET['lv'] = str_replace("%","",..

[Webhacking.kr] Challenge(old) 29번 문제

문제페이지는 해당 페이지와 같다. 페이지에는 파일을 업로드 하는 부분과 time, ip, file 의 목록이 존재한다. 그리고 FLAG 가 다른 테이블에 존재한다는 내용이 출력되어 있다. 해당 문제는 Flag 가 존재하는 테이블을 찾으면 풀릴 듯하다. 임의로 test.txt 라는 파일을 업로드 시켜보면 목록이 하나 추가되는 것을 볼 수 있다. Burp suite 를 이용하여 SQL 인젝션 공격을 시도해본다. 1. time / ip / file 의 insert 되는 순서를 일아본다. INSERT INTO 테이블명 VALUES (‘a’, ‘b’, ‘c’), (‘d’, ‘e’, ‘f’); INSERT 문은 다중으로 데이터를 저장할 수 있기 때문에 이를 이용하여 INSERT 순서를 알아본다. 패킷의 filena..

[Webhacking.kr] Challenge(old) 34번 문제

문제페이지로 이동하면 debug me 라는 알림창이 뜬다. 확인을 누르면 페이지에 아무런 내용도 출력되지 않아서 바로 소스 코드를 확인해본다. 이 내용을 debug 해야 할 듯한데 스크립트부분이 개행이 되지 않아 가독성이 안좋았다. 가독성을 높여주는 사이트로 이동하여 개행을 시켜보았다. 코드 뷰티파이어 : https://www.prettifyjs.net/ JS Beautify and Minify - Online Beautify (prettify) your JS data or minify (uglify) it with advanced formatting options. Our site has an easy to use online tool to convert your data. www.prettifyjs...