小白pwn之旅之pwnable06

pwnable-----coin1和blackjack

coin1

  1. 看題,連上去,發現要做題還要在60秒做一百題(怎麼可能嘛)
    在這裏插入圖片描述

  2. 分析就寫腳本開始,(題中又說網絡不好可以在服務器端寫,嘿嘿)

  3. 那直接連接上一題 ssh [email protected] -p2222 (pw:guest) 。就行了,在cd /tmp下寫就好了這裏你會發現已經有大佬寫好了的(真好)叫coin.py,coin1.py,coin2.py(還挺多的)

# coding: utf-8
from socket import*
import random
import time
HOST='0.0.0.0'
PORT=9007
#建立socket對象
client=socket(AF_INET,SOCK_STREAM)
#AF_INET表示將使用標準的ipv4地址或主機名
#SOCK_STREAM說明這是一個TCP客戶端
    
client.connect((HOST,PORT))#連接
data = client.recv(1024)
time.sleep(4)
for i in range(100):
    data = client.recv(1024)#接收數據
    int_cnt=data.find('N=')+2 #int_cnt用於找到N,C
    N=0
    C=0
    while True:     
        N+=int(data[int_cnt])
        int_cnt+=1
        if data[int_cnt]==' ':
            break
        N*=10
    int_cnt=data.find('C=')+2
    while True:     
        C+=int(data[int_cnt])
        int_cnt+=1
        if data[int_cnt]<'0' :
            break
        if data[int_cnt]>'9' :
            break
        C*=10
    print 'get N=%d'%N,'get C=%d'%C#打印N,C
    left=0
    right=N-1
    mid=(left+right)/2#二分
    for i in xrange(C):#C次詢問 
        str_ask=[str(n) for n in xrange(left,mid+1)]
        str_ask=" ".join(str_ask)#構造要詢問的硬幣
        client.send(str_ask+"\n")#發送數據
        str_weight=client.recv(1024)#接收數據
        str_weight.split("\n")
        int_weight=int(str_weight)
        print "int_weight = ",int_weight,"l=%d mid=%d r=%d"%(left,mid,right)
        if int_weight!=((mid-left+1)*10):
            right=mid
            mid=(right+left)/2
        else:
            left=mid+1
            mid=(left+right)/2
    client.send(str(mid)+"\n")
    ans=client.recv(1024)
    print "ans=",ans
ans=client.recv(1024)#flag
print "ans=%s"%ans    
client.close()

在一邊跑coin1和腳本就得到flag
在這裏插入圖片描述

blackjack

  1. 看題
    在這裏插入圖片描述
    看看網址發現網址403報錯,沒有辦法就去看看博主門怎麼寫出來的(嘻嘻)
    這位大神寫得挺好的
  2. 這是一道溢出的題
  3. 在這裏插入圖片描述
    在這裏插入圖片描述
    這樣就能cat flag。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章