write up
-
[Renewal] webhacking.kr old-38 [100]$ 웹 해킹 $/webhacking.kr 2020. 1. 11. 15:58
log injection 이라 되어 있네요! 소스코드를 확인해 보면 주석을 확인할 수 있습니다. admin.php 라는 페이지가 존재 합니다. log viewer 라고 적혀 있고 admin 으로 로그가 나와야 하는거 같습니다. 1234로 입력을 한뒤 로그를 확인해 보면 아래와 같습니다. IP주소 : 입력값 형태의 출력을 확인 할 수 있습니다. 이번에는 admin을 적어 보겠습니다. admin은 필터링이 되는 것 같습니다. 로그가 위에서 부터 아래로 출력이 되는 것으로 보아 CR-LF Injection이 떠오릅니다. \r이나 \n을 이용해서 줄바꿈을 넣어서 필터링을 우회할 수 있을 것 같습니다. 노트북을 초기화 한지 얼마 안되서 프록시 툴이 없기 때문에.. input을 textarea로 바꿔서 \n을 입력..
-
[Renewal] webhacking.kr old-37 [250]$ 웹 해킹 $/webhacking.kr 2020. 1. 11. 12:42
문제를 확인해 보면 엄청난 소스코드가 존재 합니다. 일단 길어요!! 간략히 설명을 하자면! 파일업로드관련 문제를 다루고 있습니다. ./tmp/tmp-{$time} 파일명의 파일에 127.0.0.1 을 write 합니다. 그리고 업로드한 파일의 이름을 replace를 하고 결과가 참이면 ./tmp/tmp-{$time} 에 자신의 IP를 덮어 씌우는 작업을 합니다. 그리고 ./tmp/tmp-{$time} 에서 file_get_contents함수를 이용해서 파일 내의 데이터를 가져오게 됩니다. file_get_contents 함수로 가져온 데이터에 있는 IP주소로 FLAG를 전달하는데 7777번 포트를 이용해서 전달하게 됩니다. 여기 까지가 코드에 대한 내용입니다. 이제 해야할 일은 총 3가지 입니다. 1. ..
-
[Renewal] webhacking.kr old-36 [200]$ 웹 해킹 $/webhacking.kr 2020. 1. 11. 12:41
현재 디렉터리에서 vi편집기를 이용해서 index.php 파일을 편집 하다가 정전으로 소스코드가 사라졌다고 합니다. 복구를 도와 달라고 합니다. 리눅스 환경 에디터인 vi 에서 파일을 수정하다가 강제 종료를 하게 되면 해당 파일명의 swp 파일이 생성이 되는것을 알 수있습니다. .index.php.swp을 URL 에 적어보면 index.php.swp 파일이 다운로드가 됩니다. notepad를 이용해서 열어보면 아래와 같습니다. flag = FLAG{what_about_the_nano_editor?}
-
[Renewal] webhacking.kr old-35 [350]$ 웹 해킹 $/webhacking.kr 2020. 1. 11. 12:41
문제를 확인해 보면 아래와 같이 입력 칸이 있습니다. 소스코드를 확인해 보겠습니다. 일단 소스코드를 보면 id의 값의 길이가 5보다 크면 안된다. 또한 id, ip, phone 순으로 insert가 가능합니다. id 파라미터로만 admin을 필터링 하기 때문에 phone 파라미터로 insert based sql injection을 해서 admin에 제아이피를 넣어서 아래의 구문을 참으로 만들어서 문제를 풀이해 보도록 하겠습니다. ?phone=1),(id,ip,phone) 을 넣으면 insert 2개를 진행할수 있습니다. 그래서 아래와 같이 파라미터를 넣으면 성공을 합니다.
-
[Renewal] webhacking.kr old-34 [400]$ 웹 해킹 $/webhacking.kr 2020. 1. 11. 12:35
문제를 들어가 보면 가장 먼저 alert창이 뜹니다. 그리고 검은 화면 밖에 뜨지 않습니다. 소스코드를 확인해 보겠습니다. JS 소스코드가 난독화 되어 있기 때문에 난독화 해제를 해보겠습니다. var a = ['RcOhTDV1Ew==', 'McOVwqpRBg==', 'c8K/w43DvcK8', 'SsOrTCF1CVDCgcKLEsKc', 'NsK/w4Bc', 'G1TDpwk=', 'AcKtwqfDlW7Dsw==', 'e3kkcQJfwoNFDEU9', 'QMOXDBo=', 'w5bCsWlh', 'eWY6bg8=', 'FnbDoEvDtl1LUkB7w4Q=', 'esOZTiPDsg==', 'bzfCkFfCtA==', 'ZmzDjHcn', 'PxLCm3LDvA==', 'IcKlVy9pw57DgMK3w6kmwpvC..
-
[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}