$ 웹 해킹 $/webhacking.kr
-
-
[Renewal] webhacking.kr old-40 [500]$ 웹 해킹 $/webhacking.kr 2020. 1. 11. 16:02
문제를 확인해 보면 위와 같이 no , id , pw에 입력이 가능한 폼이 존재 합니다. login을 눌러보면 다음과 같이 URL에 GET 방식으로 값이 서버로 전송이 되는것을 확인할 수 있습니다. 또한 로그인에 성공을 하면 아래와 같이 Success - guest가 출력이 됩니다. 그렇다면 이번에는 no, id, pw중 어디에서 SQL Injection이 터지는지를 확인해보겠습니다. 위의 파라미터를 입력하면 아무런 일이 일어나지 않지만 위의 파라미터를 입력하면 Success - guest 가 출력이 됩니다. 그렇기 때문에 no에서 SQL Injection이 가능합니다. 먼저 admin을 띄워 보겠습니다. 위의 파라미터를 입력해 보면 필터링에 걸려서 아래와같이 출력됩니다. %20 인 띄어쓰기에서 필터링이..
-
[Renewal] webhacking.kr old-39 [100]$ 웹 해킹 $/webhacking.kr 2020. 1. 11. 16:01
심플한 입력창입니다. 소스코드를 확인해 보겠습니다. 이문제는 입력하는 칸에는 15글자만 가져오고, 쿼리문에서는 13글자 이하여야 한다고 합니다. 하지만 id쪽 쿼리문을 보면 싱글쿼터를 열고 닫지 않은것을 확인할 수 있는데, 입력하는 입장에서 쿼리문을 닫아야 하지만 하나의 싱글쿼터가 입력이 되면 싱글쿼터 2개로 치환을 합니다. ' -> '' 그렇기 때문에 '를 입력하기 쉽지가 않습니다. mysql을 공부하다가 알게 된 사실이 하나 있는데 'a' 와 'a ' 와 똑같이 인식을 한다는 점입니다. 해당 문제에서 깊게 다룰 이야기는 아니니 간단하게 설명을 하자면.. mysql 에서 칼럼의 형식을 지정할때 char, varchar 등등 여러 형식이 존재 하는데 char 형식일때 생기는 상황입니다. char(5) 라..
-
[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..