$ 웹 해킹 $
-
[Renewal] webhacking.kr old-33 [200]$ 웹 해킹 $/webhacking.kr 2020. 1. 11. 12:31
여러 단계가 있는 것으로 보입니다. 소스코드를 확인해 보겠습니다. get방식으로 get이라는 파라미터에 hehe를 넣어줍니다. Next로 넘어가줍니다. 소스코드를 확인해 보겠습니다. 이번에는 POST 방식으로 값을 2개 보내야합니다. 프록시 툴을 이용해서 보내주도록 하겠습니다. Next를 눌러줍니다. 소스코드를 들어가 보겠습니다. 자신의 IP를 GET방식으로 넘겨주면 됩니다. Next를 눌러줍니다. 소스코드를 확인해 보겠습니다. 힌트에 나온 값 이 time()에서 출력된 값인데 get방식으로 md5(time())값을 넣어야 합니다. 나온 값보다 좀더 나중의 시간을 아래의 코드로 암호화 한뒤에 값을 넣고 새로고침을 계속 누릅니다. 다음으로가서 소스코드를 확인해 보겠습니다. get방식 post방식 쿠키 전부..
-
[Renewal] webhacking.kr old-32 [150]$ 웹 해킹 $/webhacking.kr 2020. 1. 11. 12:29
나의 닉네임을 1등으로 만들면 되는것인가 싶은 생각이 든다. 닉네임을 클릭해보면 vote가 가능하고 GET 방식으로 ?hit=닉네임 이라는 값이 전달이 된다. 나의 닉네임은 ws1004이므로 ?hit=ws1004로 값을 보내면 될것 같다. 하지만 1번 투표를 하면 아래와 같이 쿠키값이 생성이된다. 해당 쿠키를 삭제하고 다시 클릭을 해보면 투표가 가능해 진다. 그렇기 때문에 쿠키값을 PHPSESSID 만 넘기고 나의 닉네임을 투표를 100번 반복해 보았다. 위의 코드를 실행하고 해당 페이지를 새로고침하면 Clear! 102가 찍힌 이유는 코드를 실행하기전에 2번 먼저 투표를 해둬서 그렇다.
-
[Renewal] webhacking.kr old-31 [150]$ 웹 해킹 $/webhacking.kr 2020. 1. 11. 12:29
일단 코드를 보면 포트는 10000 부터 10100으로 랜덤으로 생성하고 ?server에 넣은 서버 아이피로 flag를 전송해 줍니다. 그렇기 때문에 10000~10100 포트를 열어줘야 합니다. nc 명령어를 이용해서 포트를 열어보겠습니다. 계속해서 새로고침을 해서 포트가 맞으면 아래와 같이 출력합니다. 위와 같이 에러가 사라지면서 nc를 열어둔 서버 쪽에 flag가 출력이 됩니다. Flag : FLAG{i_have_a_big_and_beautiful_server}
-
[Renewal] webhacking.kr old-30 [550]$ 웹 해킹 $/webhacking.kr 2020. 1. 11. 12:28
파일 업로드 문제로 보인다. 위의 경로에 있는 소스코드를 확인해 보면 아래와 같습니다. 일단 위의 소스코드에서 이상한 부분이 보인다. 바로 mysqli_connect() !! 위의 함수는 mysqli와 연결 해주는 함수 인데 함수를 한번 확인해 보자. 문법을 보면 host, username, password, databasename, port, socket 등등을 인자로 넘겨주는데 아무것도 입력이 되어 있지않은것을 확인할 수 있다. 이럴 때는 php.ini 또는 .htaccess 에서 default 값을 가져와서 mysqli_connect()에 사용하게 되는데 실제 php 공식 사이트에서 어떤 값을 가져오는지 확인해 보자 사이트 : https://www.php.net/manual/en/ini.list.p..
-
[Renewal] webhacking.kr old-29 [400]$ 웹 해킹 $/webhacking.kr 2020. 1. 11. 12:22
문제를 보면 파일업로드를 하면 time과 ip와 file이 출력 되는것 같습니다. 파일을 하나 올려보겠습니다. 파일 업로드를 이용하는 문제가 아닌것 같다는 생각이 들어서 다시 파일 업로드를 하고 프록시로 잡아봤습니다. 입력할수 있는 부분이 filename이고 해당 문자의 아이콘이 데이터 베이스 인것으로 보아 sql injection 이라는 생각으로 insert를 해보려고 했습니다. 많은 시도를 통해서 아래와 같은 칼럼 순서를 알아냈습니다. 가린부분은 IP 부분인데 칼럼 순서가 파일명, 시간, IP였습니다. IP는 자신의 아이피가 아니면 출력을 해주지않는것으로 확인됬습니다. 결과는 아래와 같습니다. 시간은 1970-01-01 부터 1234 가 지난 시간인것 같습니다. 파일이름이 변경된것이 확인 되었기 때문..
-
[Renewal] webhacking.kr old-28 [500]$ 웹 해킹 $/webhacking.kr 2020. 1. 11. 12:21
파일 업로드 관련문제인것을 알 수 있습니다. 파일 업로드를 하게되면 ./upload/lluWo4BDqLw1/ 이라는 폴더 하위에 업로드 되게 됩니다. 또한 ./upload/lluWo4BDqLw1/flag.php를 읽어야 합니다. 하지만 아무것도 출력이 되지 않습니다. 예전에 사용했었던 웹쉘코드를 아무거나 하나 업로드 시켜봤습니다. 업로드한 경로로 들어가 보면 아래와 같이 내부 코드가 실행되는 것이 아닌.. 이미지를 출력하려고 합니다. 그래서 생각한 결과 .htaccess 가 생각이 났고 php 기능을 끄는 옵션을 가지고 있는 파일이므로 옵션을 끄면 php코드를 확인할 수 있을 것 같습니다. 윈도우에서는 .htaccess라는 파일명을 만들수 없기 때문에 1.htaccess를 만들고 프록시 툴을 이용해서 서..
-
[Renewal] webhacking.kr old-26 [100]$ 웹 해킹 $/webhacking.kr 2020. 1. 11. 12:19
소스코드를 확인해 보면 아래와 같습니다. 1. admin을 입력하면 no라는 문자열을 출력하면서 exit()함수를 실행 시킨다. 2. id라는 파라미터 값으로 입력을 하면 urldecode함수를 통해 입력된 URL Encoding 값을 URL Decode를 합니다. 3. 결국 1과 2의 과정을 거친뒤에 id의 값이 admin일 때 Clear가 되는 문제입니다. 그렇다는 것은 ?id=%61%64%6D%69%6E 라고 넣어보면 urldecode 가 자동적으로 URL을 통해 전달이 될때 1번이 되기 때문에 ?id=admin이 되고 1번에 필터링이 되고 아래와 같이 출력이 됩니다. 그렇기 때문에 URL Encode를 2번 해서 ?id=%2561%2564%256D%2569%256E 라고 넣으면 서버로 전달이 될때..