操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    原創: iqiqiya 合天智匯

    上回說到三道不同平臺的Reverse題目帶你入逆向坑

    本文主要是寫一下自己在使用Z3約束器來解方程時遇到的坑

    失敗了好多次 才流淚寫下這篇教程(好幾次都想放棄) 避免大家和我一樣浪費時間 百度谷歌了好久 也沒找到方法 話說大佬們是不是有什么技巧

    ps:大家給點個贊好不好 感謝

    一、z3簡單介紹

    z3是由微軟公司開發的一個優秀的SMT求解器(其實就是一個定理證明器),它能夠檢查邏輯表達式的可滿足性。我們做CTF逆向題可能會經常用它來解方程。變量類型有整數Int,實數Real(需要得到float型的值時可以用這個),至于數組,就用BitVec好啦

    先來說一下簡單的使用吧

    比如我想求一下a*b=0x24這個方程的解

    很明顯,這里的解不止一個

    這里就是z3的一個特點就是當解有多個的時候只會幫我們求出一個可能的解

    如果我們想要拿到需要的解 那就增加約束條件 比如我想要得到當a==2時的解 就像下圖所示:

    二、windows下安裝z3步驟

    1:確定你的Python版本為2.X(我的是2.7)

    2:pipinstall z3或者pipinstall z3-solver是不行的(親測)

    3:必須采用源碼安裝

    下載鏈接:

    https://pypi.org/project/z3-solver/4.5.1.0/#files

    我用的是這個版本 可以正常使用 好像有新版本 你自己可以嘗試

    4:下載對應電腦版本的

    我的電腦是win10x64位專業版

    所以我選擇的是

    點擊就可以下載

    5:安裝的話直接cmd

    (如果你的環境變量配置的是默認Python3的話 記得一定要切換到Python2.x\Scripts)

    6:最后輸入命令

    pipinstall z3_solver-4.5.1.0-py2-none-win_amd64.whl

    注意:文件路徑,我是直接放在了桌面

    三、說一下z3的用法

    以iscc中的一道逆向題為例

    先放到我的ubuntu子系統中 file一下 格式file + 文件名

    知道是elfx64位文件

    于是直接載入IDAx64中

    函數不是太多

    直接雙擊左側main

    發現右側圖形模式很明顯的可以看到一些關鍵的字符串 稍加思索 就可以知道sub_400766就是關鍵的函數 jz是關鍵跳轉

    那么我們先F5一下

    接著雙擊函數名

    看到有一個長度的判斷 還有兩個四元一次方程組 等等

    但是這樣對于新手來說不太好看 那就美化一下

    在s頭上按Y鍵 將原來的char s[4] 改為chars[32] 點擊OK

    將那些讓人頭大的變量名按N重新命名(x1~x8)

    就像下圖一樣

    接著右鍵—Hidecast(隱藏聲明)

    最后變成這個樣子

    具體計算的時候我們分開來做

    先來求解第一個方程組

    這時候可以得到

    [x4=862734414,

    x3=829124174,

    x2=1801073242,

    x1=1869639009]

    接著打算用python求srand的種子還有確定v1,v2,v7,v8,v9,v10,v11,v12的值的

    但是不會

    我是直接gdb動態調試得到的

    v1=0x16

    v2=0x27

    v7=0x2d

    v8=0x2d

    v9=0x23

    v10=0x29

    v11=0xd

    v12=0x24

    有大佬用的C語言解的 我覺得很不錯 貼上來

    #include<stdio.h>

    #include<stdlib.h>

    intv1,v2,v7,v8,v9,v10,v11,v12;

    intmain(void) {

    srand(829124174^ 1801073242 ^ 1869639009 ^ 862734414);

    v1=rand() % 50;

    v2=rand() % 50;

    v7=rand() % 50;

    v8=rand() % 50;

    v9=rand() % 50;

    v10=rand() % 50;

    v11=rand() % 50;

    v12=rand() % 50;

    printf("v1=%d \n v2=%d \n V7=%d \n v8=%d \n v9=%d \n v10=%d \n v11=%d \nv12=%d",v1,v2,v7,v8,v9,v10,v11,v12);

    return0;

    }

    接著求解第二個方程組

    代碼如下

    好啦 接下來就簡單了

    不過還缺一個庫libnum(同樣只能python2.x安裝百度有教程)

    我還是用kalilinux吧

    當然這個還不是flag

    需要運行 輸入得到的ampoZ2ZkNnk1NHl3NTc0NTc1Z3NoaGFG

    即可得到

    flag{th3_Line@r_4lgebra_1s_d1fficult!}

    完。

    后記:最好還是用linux吧

    有些庫太難裝了

    我的朋友應該都知道我最近在玩3D打印機,因為有些材料其實對溫度和濕度都是有一定的要求的。這個東西就比較貴了,它的溫度的精度可以正負3到5,濕度可以到正負10。一般會把它放在這個位置,因為攝像頭正好對著那邊,所以就可以看到打印機里面的倉溫和濕度是多少。

    因為這個料確實對溫度和濕度的要求比較高,再加上誤差,我確確實實不能夠及時的去調整溫度、濕度。而在我煩惱的時候杜克正好救了我一命。他們溫濕度計的數字非常的大,但是機身卻非常的小巧。

    我們做一下對比,同樣是在同一個環境,小的是43的濕度,而杜克的是31,溫度也差了將近4度左右。而杜克的這款小溫濕度計的誤差只有1%不到,而且屏幕的尺寸超級大。就算我在后臺去查看打印過程監控的時候,杜克的這款溫度計也能非常的清晰的看出濕度和溫度。這種使用體驗是這種小咪咪的垃圾溫濕度傳感器所帶來不了的。

    當然不光打印機內部的溫濕度非常重要,因為拓竹A1是敞開式的,沒有封箱,所以整個房間的溫濕度也非常的重要。這款杜克TH3溫濕度計就完美解決了我幾乎所有的需求。它的背部有一塊磁鐵,可以吸在任何鐵的地方。如果有引磁片也可以吸在引磁片上。

    KG3也可以經過手機設置之后連入你家的2.5G的Wifi,它可以在每天6點鐘去更新實時的時間、天氣、日期等信息。而且它是type c供電款的,不用再買小電池了。4.3寸的屏幕真的非常友好,需要的實時數據它都有。溫度的誤差只有0.1度,而濕度也只有1%,這個真的非常可貴。

    而且它的外殼是ABS材料,背后也有小的撐腳,可以這樣放在桌子上,一般會把它放在顯示器的下面,隊伍房間內的數據就一目了然了。

    杜克的這兩款非常實用的小工具已經上架樓的小黃車了,有興趣且有需要的同學可以點進去看一下,不貴真的不貴。喜歡莫斯視頻也別忘了幫忙一鍵三連,你的支持是我最大的動力。

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有