view-source 코드의 길이가 길다. 대충 살펴보면은 flag변수에 flag정보를 저장하고 time에 따라 파일 명을 정한 후 파일을 업로드 한다. 이때, 파일 이름이 있으면은 파일에 서버 ip를 작성해서 저장한다. 그리고 socket으로 7777번 포트에다가 flag가 저장된 파일을 올린다. 7777번 포트를 내부 포트로 보내기 위해 포트포워딩을 해줬다. 그리고 원래라면 윈도우에서 netcat을 사용해 서버를 열어야 하지만 무슨일인지 윈도우에서 netcat이 잘 작동되지 않아서 리눅스 가상머신을 통해 진행해 주었다. nc명령어를 이용해 7777번 포트를 열어두고 버프스위트 프록시 히스토리에서 파일 업로드 패킷을 리피터로 가져온 다음 파일 명을 시간에 맞춰 보내주면 nc로 열어둔 7777번 포트에 ..
분류 전체보기
저 스크립트를 주입시키면 풀리는 문제인듯 하다. code에 스크립트를 고대로 넣으면 no hack이라 뜨면서 필터링 된것을 볼 수 있는데 어떤필터링인지 몰라 막 넣어봤다. 그런데 문자는 두글자 이상 이어지면 필터링 되는 것 같았다. 그래서 문자가 이어지지 않게 null문자를 끼어넣어서 시도해봤다. 웹에서 null문자는 %00 이다. index.php?code=a%00l%00e%00r%00t%00(1); 이렇게 문자들 사이에 막 끼워넣으니 풀리게 되었다.
"; echo "view-source"; $_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"); $result = mysqli_fetch_array(mysqli_query($db,"select {$_GET['id']} from chall61 order by id desc limit 1")); echo "{$result['id']}"; if($result['id'] == "admin") solve(61); echo "";?> result의 id가..
Input 값에 알맞은 값을 넣어 Correct 값이 나오게 하면 되는 문제이다. 먼저 IDA에 프로그램을 넣고 main함수를 찾아보겠다. Strings 항목에서 Correct 부분을 더블클릭해준후 F5를 통해 디컴파일 해주면 main함수를 찾을 수 있다. 딱봐도 sub_7FF677621000에 true가 반환되게 하면은 Correct를 얻을 수 있다. 보면은 byte_7FF677623000[i]의 값이 i xor (a1+i) + 2*i랑 같아야 통과할 수 있다. byte_7FF677623000값을 hex view에서 보면은 아래와 같다. 우리가 필요한 값은 0x18까지 즉, 24자리이므로 49부터 45까지의 값을 긁어와 파이썬을 이용해 플래그를 확인해보겠다. by = [0x49, 0x60, 0x67, ..
한줄씩 차근차근 해보겠다. [Register] rcx = 0 rdx = 0 rsi = 0x400000 ======================= [Memory] 0x400000 | 0x67 0x55 0x5c 0x53 0x5f 0x5d 0x55 0x10 0x400008 | 0x44 0x5f 0x10 0x51 0x43 0x43 0x55 0x5d 0x400010 | 0x52 0x5c 0x49 0x10 0x47 0x5f 0x42 0x5c 0x400018 | 0x54 0x11 0x00 0x00 0x00 0x00 0x00 0x00 ======================= [code] 1: mov dl, BYTE PTR[rsi+rcx] // dl = 0x67 2: xor dl, 0x30// 0x57 3: mov B..