【pwnable.kr】cmd1

最近的pwnable都是linux操作系统层面的。
ssh cmd1@pwnable.kr -p2222 (pw:guest)
首先还是下载源代码:
#include <stdio.h>
#include <string.h> int filter(char* cmd){
int r=0;
r += strstr(cmd, "flag")!=0;
r += strstr(cmd, "sh")!=0;
r += strstr(cmd, "tmp")!=0;
return r;
}
int main(int argc, char* argv[], char** envp){
putenv("PATH=/fuckyouverymuch");
if(filter(argv[1])) return 0;
system( argv[1] );
return 0;
}
其中有一句putenv,其实我现在也没明白有什么用,不过有一个提示,有一个新的文件夹/tmp/fuckuverymuch/。

还是可以看见有很多东西的。
现在根据源代码可以分析出的是,程序调用system()函数执行用户输入的参数命令,但其中不能包括“flag”、“sh”、“tmp”字样。
就是说把这三个东西藏起来就好。
其实,system命令的默认PWD环境变量应该是与这个程序的PWD环境变量相同,这个环境变量是什么,就是默认“./”执行的文件夹目录,一般是根据程序调用的bash窗口目录来的。
我们可以通过写一个bash脚本,通过system执行这个脚本来运行。
比如我在/tmp文件夹下写了一个叫p4nda的脚本,内容是
cat /home/cmd1/flag
然后我选择在bash进入/tmp目录下后,执行/home/cmd1/cmd1程序,这样程序的PWD环境变量就是/tmp,这样system的PWD环境变量也是/tmp
在执行system('./p4nda')就可以了。
还需要执行一条chmod 777 ./p4nda
操作流程如下
进入/tmp目录:cd /tmp
然后写文件:vi p4nda

然后修改可执行权限 chmod 777 ./p4nda
最后,执行 /home/cmd1/cmd1 "./p4nda"

【pwnable.kr】cmd1的更多相关文章
- 【pwnable.kr】cmd2
这道题是上一个cmd1的升级版 ssh cmd2@pwnable.kr -p2222 (pw:mommy now I get what PATH environmentis for :)) 登录之后, ...
- 【pwnable.kr】 asm
一道写shellcode的题目, #include <stdio.h> #include <string.h> #include <stdlib.h> #inclu ...
- 【pwnable.kr】 [simple login]
Download : http://pwnable.kr/bin/login Running at : nc pwnable.kr 9003 先看看ida里面的逻辑. 比较重要的信息时input变量再 ...
- 【pwnable.kr】 brainfuck
pwnable.kr第二关第一题: ========================================= Download : http://pwnable.kr/bin/bfDownl ...
- 【pwnable.kr】 unlink
pwnable.kr 第一阶段的最后一题! 这道题目就是堆溢出的经典利用题目,不过是把堆块的分配与释放操作用C++重新写了一遍,可参考<C和C++安全编码一书>//不是广告 #includ ...
- 【pwnable.kr】 memcpy
pwnable的新一题,和堆分配相关. http://pwnable.kr/bin/memcpy.c ssh memcpy@pwnable.kr -p2222 (pw:guest) 我觉得主要考察的是 ...
- 【pwnable.kr】 codemap
pwnable新的一题. download: http://pwnable.kr/bin/codemap.exe ssh codemap@pwnable.kr -p2222 (pw:guest) 这道 ...
- 【pwnable.kr】 uaf
目测是比较接近pwnable的一道题.考察了uaf(use after free的内容),我觉得说白了就是指针没有初始化的问题. ssh uaf@pwnable.kr -p2222 (pw:guest ...
- 【pwnable.kr】input
这道题是一道一遍一遍满足程序需求的题. 网上其他的题解都是用了C语言或者python语言的本地调用,我想联系一下pwntools的远程调用就写了下面的脚本, 执行效果可以通过1~4的检测,到最后soc ...
随机推荐
- Spring Schedule 实现定时任务
很多时候我们都需要为系统建立一个定时任务来帮我们做一些事情,SpringBoot 已经帮我们实现好了一个,我们只需要直接使用即可,当然你也可以不用 SpringBoot 自带的定时任务,整合 Quar ...
- 由前端登录验证,页面跳转,携带headers token引发的思考和尝试
目录 1 前言 2 我的实现方式与存在的问题 3 我想到的解决方案 3.1 前端跳转时携带headers{'token': token} 不就行了(经验证不可行) 3.2 前端跳转封装请求,携带hea ...
- python使用pip安装库时出现timeout或者速度慢
豆瓣:https://pypi.doubanio.com/simple/ pip3 install -i https://pypi.doubanio.com/simple/ selenium easy ...
- SVN团队开发项目工具(安装以及使用)
https://pan.baidu.com/s/1jJyo9ue 密码:ce9z
- 分析一次double强转float的翻车原因(转载)
https://www.cnblogs.com/CoderAyu/p/11489577.html float只能保证7位有效数字. double d = 8345933; float f = (flo ...
- 「CSP」第一届提高组考后总结
「CSP」第一届提高组考后总结 问题分析+反思 成绩 心态 考前心态 考时心态 考后心态 方法 心灵鸡汤... 在学习了三年之后,我们信竞迎来了初中最后一次大考,也是第一次 CSPCSPCSP 考试. ...
- 从数据库中查询所有表及所有字段的SQL语句
从数据库中查询所有表及所有字段的SQL语句 由于一个小项目的需要,近日完成一个从数据库中查询所有表及所有字段的方法,其实用两条SQL语句就可以完成. Sql Server版:列出当前DB中所有表:se ...
- scrollBy 与 scrollTop的区别
scrollTo是相对于初始位置 scrollBy是相对于上次移动的最后位置
- Linux CentOS7 VMware正则介绍、grep工具、egrep表达式
一.正则介绍 正则是学习shell脚本的必学的内容,正则学的好坏直接影响到shell编程能力. 正则表达式:使用单个字符串来描述或匹配一系列符合某个句法规则的字符串.通常用来检索和替换那些符合某个模式 ...
- AngularJS1.X指令
<!DOCTYPE html> <html ng-app='myApp'> <head> <meta charset="utf-8"> ...