1. 程式人生 > >pawnable.kr - 練習【持續更新中】

pawnable.kr - 練習【持續更新中】

前言

刷一刷題。。才發現題目腦洞可以有多大

fd

這裡可以看見這裡有一個fd引數如果我們讓fd等於0,那麼之後呼叫read之後的第個引數為0就會讀取我們鍵入的值瞭然後就可以輸入下滿要比較的值就可以了

collision

這裡可以看見這裡有一個強制型別的轉換,char型別每一個佔一位而int佔4位所以我們輸入的應該是5*4=20個字元並且每4個轉換後相加的結果為hashcode = 0x21DD09EC這裡沒有截圖完前面還有一點,這樣就可以了,把這個數除以5然後輸入就可以了

./col  python -c "print '數'*5 " 

bof

就是一個溢位操作覆蓋變數

flag

是一個逆向脫殼的操作在linux下只有upx的殼只要

upx -d ./flag

然後就可以脫殼瞭然後再拖進ida就可以看見了

passcode

可以發現name陣列存在一個溢位修改passcode1,然後利用scanf的任意地址寫對passcode2的地址寫入check的值就可以了

random

因為Linux,libc庫中的rand()函式是一個偽隨機數所以可以直接利用這個原理本地編譯一下可以發現每次random的值都是不變的所以可以直接用這個值異或下就可以看見我們的輸入了

 

未完。。。