Web/webhacking.kr 32

Webhacking.kr old-44

if($_GET['view_source']){ highlight_file(__FILE__); exit; }?> if($_POST['id']){ $id = $_POST['id']; $id = substr($id,0,5); system("echo 'hello! {$id}'"); // You just need to execute ls }?>name : view-source id 폼 입력값을 그대로 넣는다.5글자만 가능하다.ls 를 실행시키면 된다. ';ls' 를 썼다. 풀었다! 인줄 알았으나 저건 flag가 아니라 flag 파일이다. 즉, 저 파일을 읽어야 flag를 알 수 있는 것. 근데 명령어 부분 보면 ';' 이 세 바이트는 무조건 써야하는데, 어떻게 해야 할까 고민했다.그러다가 문득..

Web/webhacking.kr 2025.05.26

Webhacking.kr old-03

처음에는 nonogram 만 풀면 풀릴 줄 알고 개꿀문제인가? 싶었다.다 풀고 나서는 function go(){ var answer=""; for(i=1;i kk._answer.value=answer; kk.submit(); } 이 부분에서 eval() 함수를 통해 XSS가 일어날 것이라고 생각하고 삽질했다. 그러다가 그냥 문제 해결하고 로그 남기는 부분으로 넘어갔는데,body 데이터에 answer값과 id값을 보내더라. 감도 못잡고 그냥 answer에 ' or 1=1;-- - 넣어서 보내봤는데 풀렸다.. 아마도 DB에서 answer값이랑 id 값 이용해서 가져오는 기능이 있었나보다.. 찝찝하지만 풀었다!

Web/webhacking.kr 2025.05.09

Webhacking.kr old-56

왠지 blind sql injection 일 것만 같은 문제이다. 보통 저런 검색폼은 like '%{}%' 형식으로 되어 있기 때문에 어떤 컬럼을 기준으로 검색하는 지 알아봐야겠다. FLAG라는 문구를 쳐보니까 admin만 나온다. 아마 저 subject 안의 내용을 토대로 검색이 되는 것으로 보인다.import requestsurl = 'URL'start = "flag{"for j in range(100): for i in range(33,126): if i == 37: continue r = requests.post(url, data={'search':start+f'{chr(i)}'},cookies={'PHPSESSID':'SESSION'}) ..

Web/webhacking.kr 2025.05.08

Webhacking.kr RPG-1

점수가 너무 찔끔찔끔 오르는 것 같아 200점짜리 문제를 도전해봤다. 개발자 코드를 가보면 자바스크립트 코드가 정말 많이 쏟아져나온다.저 코드들을 전부 해석하려고 삽질을 몇 시간을 했으나.. 실패 결국 욕심 안부리고 그냥 좌표값만 바꿔서 풀었다. 개발자 도구 -> 콘솔에서 window를 통해 페이지 내의 모든 것들을 뜯어보자. 저 놈이 플레이어의 정보인듯 하다. _y가 현재 플레이어의 좌표니까, 1로 바꿔보면 캐릭터가 위로 올라간다.상자를 열자. 풀었다!

Web/webhacking.kr 2025.05.07

Webhacking.kr old-47

뭔 문제인지 몰라서 삽질을 너무 많이한 문제였다. 메일은 보통 SMTP 를 통해 전송하는데, SMTP 는 HTTP 와 다른 헤더 구조를 지니고 있다.(구글 메일에서도 받은 메일을 통해 헤더 구조를 볼 수 있다.) 헤더 중에서 Cc 라는 헤더가 있는데, 쉽게 말해 To 헤더에 붙는 받는 사람 이외에 또 보낼 사람들을 입력하는 부분이다. Cc 헤더를 삽입하자. 줄바꿈 이용해서 넣었는데 안되길래 줄바꿈 되는 폼으로 바꿔서 넣었다.flagCc: 아무메일@naver.com이런 식으로 넣으면 flag를 찾을 수 있다.풀었다!

Web/webhacking.kr 2025.05.06