看題,連上去,發現要做題還要在60秒做一百題(怎麼可能嘛)
分析就寫指令碼開始,(題中又說網路不好可以在伺服器端寫,嘿嘿)
那直接連線上一題 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=
0while
true
:
n+=int(data[int_cnt]
) int_cnt+=
1if data[int_cnt]
==' '
:break
n*=10 int_cnt=data.find(
'c=')+
2while
true
:
c+=int(data[int_cnt]
) int_cnt+=
1if data[int_cnt]
<
'0':
break
if data[int_cnt]
>
'9':
break
c*=10print
'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
看題
看看**發現**403報錯,沒有辦法就去看看博主門怎麼寫出來的(嘻嘻)
這位大神寫得挺好的
這是一道溢位的題
這樣就能cat flag。
小白pwn之旅之pwnable05
看原始碼 include include define pw len 10 define xorkey 1 void xor char s,int len int main int argc,char ar printf do not bruteforce.n sleep time 0 20 cha...
小白pwn之旅之pwnable07
連上去看源 發現關鍵 分析輸入乙個 6 位元組的字串,與程式隨機生成的 6 位元組字串比較。看第乙個for迴圈這裡是乙個acsii碼1 45,但可顯示的是從33 45,第二個for迴圈巢狀的意思是將輸入的6個位元組與系統的生成的6個位元組只要有乙個相同就能cat flag。這裡我選的的 連線上去,看...
小白的github之旅
一直聽說github是乙個很好用的工具,是程式設計師必備,感覺裡面有很多有用的學習資源,奈何一直不知道怎麼使用,趁著考完研有一定的英語基礎現在嘗試著摸索一下,在此記錄下自己的摸索過程,希望能對之後看到這個很粗劣的部落格的小白有所幫助,同時學習一下怎麼寫部落格,純屬為了記錄,有錯誤歡迎批評指正。本來以...