from pwn import *
import re
import time

def main():
        r = remote("pwnable.kr", 9007)
        res = r.recvuntil("Ready") + r.recvuntil("\x0a")

        print res 
        time.sleep(3)
        for i in range(100):
                res = r.recvuntil("=") + r.recvuntil("\x0a")
                info = res.split(" ")
                p = re.compile("\d+")
                for i in range(0,2):
                        info[i] = p.findall(info[i])
                N = int("".join(info[0]))
                C = int("".join(info[1]))

                print "N : {0}, C : {1}\n".format(N, C)
                src = 0 
                des = N 
                chance_check = 0 

                while src <= des:
                        chance_check += 1
                        dat = ""
                        mid = (src + des) / 2 

                        for i in range(src, mid + 1): 
                                dat += str(i) + " " 
                        r.sendline(dat)
                        weight = r.recv()

                        if int(weight) == 9:
                                break
                        if int(weight) % 10 == 0:
                                src = mid + 1 
                        elif int(weight) % 10 == 9:
                                des = mid - 1 

                for i in range(C - chance_check + 1): 
                        if int(weight) % 10 == 0 and i == 0:
                                dat = str(int(dat)+1)
                        r.sendline(dat)
                        res = r.recv()
                        print res 
        res = r.recv()
        print res 

if __name__ == "__main__":
        main()



'Wargame > pwnable.kr' 카테고리의 다른 글

pwnable.kr cmd1  (0) 2018.06.15
pwnable.kr input  (0) 2018.06.14
[pwnable.kr] shellshock 1p  (0) 2016.08.20
[pwnable.kr] mistake 1p  (0) 2016.08.19
[pwnable.kr] uaf 8p  (0) 2016.08.15

아래로 스크롤

명령기술
Ctrl + E한 줄 아래로 스크롤하십시오.
Ctrl + D화면 절반을 스크롤 다운합니다 ( scroll 옵션을 사용하여 구성 가능).
Ctrl + F전체 화면을 아래로 스크롤하십시오.
z +창의 맨 위에있는 창 아래의 첫 번째 선을 그립니다.

커서 위치를 기준으로 스크롤

명령기술
창의 맨 위에있는 현재 행을 다시 그려서 커서를 행의 첫 번째 공백이 아닌 문자에 놓습니다.
ztz와 같지만 커서는 같은 열에 두십시오.
지.창의 가운데에있는 현재 행을 다시 그리기하고 행의 첫 번째 비 공백 문자에 커서를 놓습니다.
zzz와 같습니다. 동일한 열에 커서를 두십시오.
지-창의 맨 아래에있는 현재 행을 다시 그려서 커서를 행의 첫 번째 비 공백 문자에 놓습니다.
zbz-와 같지만 커서는 같은 열에 두십시오.

위쪽으로 스크롤

명령기술
Ctrl + Y한 줄 위로 스크롤하십시오.
Ctrl + U화면 반 스크롤 ( scroll 옵션을 사용하여 구성 가능).
Ctrl + B전체 화면을 위로 스크롤하십시오.
z ^창의 아래쪽에있는 창 위의 첫 번째 선을 그립니다.





Ref.https://code.i-harness.com/ko/q/4afcc




'OS > linux' 카테고리의 다른 글

/proc/self/cwd  (0) 2019.05.09
프로세스에서 사용중인 파일 디스크립터 찾기  (0) 2018.07.20
리눅스 넘버링?  (0) 2018.03.27
리눅스 세션 연결 시 history 자동 삭제하기  (0) 2018.03.20
[명령어] strings  (0) 2016.07.28

CTF에서 pwnable 문제를 풀 때 nc를 이용해서 문제에 접속하는 경우가 많다. pwn문제에 nc로 문제를 만들고 공개하는 방법에 대해서 알아보고 기록을 한다.

xinetd를 이용해 nc 포트를 열어서 nc로 문제를 공개하는 방법이 있다.


1.xinetd 패키지를 설치한다.

우분투 기준 $apt-get install xinetd를 입력하면 설치할 수 있다.


2. /etc/xinetd.d/서비스이름 으로 파일을 생성한다.

$vi /etc/xinetd.d/서비스이름


3. 그리고 해당 파일에 아래와 같이 설정을 해준다.

service 서비스이름

{

          disable            = no

          flags              = REUSE

          socket_type      = stream # 사용하는 소켓의 종료를 입력한다. stream은 tcp를 뜻함

          protocol          = tcp       

          wait            = no

          user              = SSo # 계정

          server          = /sbin/shutdown  # 서비스할 파일명

}


추가. .py를 실행하는 서버는

server          = /usr/bin/python
server_args     = /home/script.py
위처럼 작성해주면 된다.


4. 서비스설정을 해주었으면 포트를 개방해주는 설정을 하기위해 /etc/service 파일에 설정을 추가해준다.

해당파일의 맨 아래에 # Local services라는 스트링이 있는데 이 아래에 포트 내용을 추가해준다.

# Local services

서비스이름 1234/tcp


5. nc로 접근하면 서비스가 제대로 실행되는 모습을 확인할 수 있다.

$nc localhost 1234


Ref.http://lily.mmu.ac.kr/lecture/08sm/Fedora2/7jang/2.htm

'HACKING > System hacking' 카테고리의 다른 글

pwnable 풀 때 objdump  (0) 2018.02.25
GOT Overwrite  (0) 2018.02.24
GDB BP에 관한 것  (0) 2017.11.29
heapoverflow 문제 풀이3  (0) 2016.11.05
heap overflow 문제풀이2  (0) 2016.11.02

+ Recent posts