ssh cmd1@pwnable.kr -p2222 (pw:guest)

先看一下c的源码

#include <stdio.h>
#include <string.h> int filter(char* cmd){
int r=;
r += strstr(cmd, "flag")!=;
r += strstr(cmd, "sh")!=;
r += strstr(cmd, "tmp")!=;
return r;
}
int main(int argc, char* argv[], char** envp){
putenv("PATH=/thankyouverymuch");
if(filter(argv[])) return ;
system( argv[] );
return ;
}

上面那个filter函数把flag  sh  tmp都过滤掉了,输入的参数可以用system调用

过滤掉了关键字,怎么办

我们可以用通配符的方式来获得flag

还有一种就是修改环境变量

 putenv("PATH=/thankyouverymuch");

在/tmp/thankyouverymuch下面添加一个bash脚本,之后让system调用

新建一个bash脚本

输入/bin/cat /home/cmd1/flag

之后赋予它755的权限

在执行 相当于调用system(‘./gnq’)

mommy now I get what PATH environment is for :)

最新文章

  1. ArrayList源码阅读笔记(基于JDk1.8)
  2. zookeeper 安装与配置
  3. 对 JimmyZhang 老师的文章《项目代码风格要求》的一些个人观点
  4. 操作SQLite数据库
  5. Majority Element || leetcode
  6. Linux平台下利用系统接口函数按照行读写文件
  7. 【笨嘴拙舌WINDOWS】实践检验之屏幕取色
  8. Qt入门(17)——组装复杂的控件
  9. SpringMVC介绍之约定优于配置
  10. freemarker 空白处理
  11. CultureInfo中重要的InvariantCulture
  12. Java web轻量级开发面试教程读书笔记:数据库方面,如何准备面试
  13. 用wrk测试nginx/ndoejs/golang
  14. &#39;boost/iterator/iterator_adaptor.hpp&#39; file not found之xcode生成时报错的解决方案
  15. 从零开始学习前端开发 — 14、CSS3变形基础
  16. JeeSite中Excel导入导出
  17. git的安装(和远程仓库建立连接)
  18. Dubbo+ZK与Eureka注册中心比较
  19. Android直接用手机打包apk!
  20. h5页面使用sessionStorage滚动到上次浏览器位置《原创》

热门文章

  1. X短期项目总结
  2. 不依赖官方LibPack编译FreeCAD的一次尝试
  3. 0. gitlab 一些常用知识
  4. c++ 命令行执行
  5. Leetcode 1239. 串联字符串的最大长度
  6. VUE 实现监听滚动事件,实现数据懒加载
  7. Python连载42-异步协程函数
  8. php+laravel依赖注入浅析
  9. Ubuntu更新python3.5到python3.7
  10. Ansible之roles角色