pwnable.kr cmd1之write up
看一下源代码:
#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=/fuckyouverymuch");
if(filter(argv[])) return ;
system( argv[] );
return ;
}
我们看到filter函数过滤了flag,sh,tmp,我们输入的参数在system执行,然而我们过滤了一些参数,对于linux系统,我们的通配符还没有过滤。题中的思路是我们输入的参数过滤了flag,sh,tmp后system执行该参数。于是我们输入如下,并得到flag:


补充:linux通配符
* - 通配符,代表任意字符(0到多个)
? - 通配符,代表一个字符
# - 注释
/ - 跳转符号,将特殊字符或通配符还原成一般符号
| - 分隔两个管线命令的界定
; - 连续性命令的界定
~ - 用户的根目录
$ - 变量前需要加的变量值
! - 逻辑运算中的"非"(not)
/ - 路径分隔符号
>, >> - 输出导向,分别为"取代"与"累加"
' - 单引号,不具有变量置换功能
" - 双引号,具有变量置换功能
` - quote符号,两个``中间为可以先执行的指令
() - 中间为子shell的起始与结束
[] - 中间为字符组合
{} - 中间为命令区块组合
Ctrl+C - 终止当前命令
Ctrl+D - 输入结束(EOF),例如邮件结束的时候
Ctrl+M - 就是Enter
Ctrl+S - 暂停屏幕的输出
Ctrl+Q - 恢复屏幕的输出
Ctrl+U - 在提示符下,将整行命令删除
Ctrl+Z - 暂停当前命令
&& - 当前一个指令执行成功时,执行后一个指令
|| - 当前一个指令执行失败时,执行后一个指令 其中最常用的是*、?、[]和 ‘。下面举几个简单的例子: ,ls test* <== *表示后面不论接几个字符都接受(没有字符也接受) ,ls test? <== ?表示后面当且仅当接一个字符时才接受 ,ls test??? <== ???表示一定要接三个字符 ,cp test[~] /tmp <== test1, test2, test3, test4, test5若存在,则复制到/tmp目录下 ,cd /lib/modules/' uname -r'/kernel/drivers <== 被 ' ' 括起来的命令先执行
pwnable.kr cmd1之write up的更多相关文章
- 【pwnable.kr】cmd1
最近的pwnable都是linux操作系统层面的. ssh cmd1@pwnable.kr -p2222 (pw:guest) 首先还是下载源代码: #include <stdio.h> ...
- 【pwnable.kr】cmd2
这道题是上一个cmd1的升级版 ssh cmd2@pwnable.kr -p2222 (pw:mommy now I get what PATH environmentis for :)) 登录之后, ...
- pwnable.kr的passcode
前段时间找到一个练习pwn的网站,pwnable.kr 这里记录其中的passcode的做题过程,给自己加深印象. 废话不多说了,看一下题目, 看到题目,就ssh连接进去,就看到三个文件如下 看了一下 ...
- pwnable.kr bof之write up
这一题与前两题不同,用到了静态调试工具ida 首先题中给出了源码: #include <stdio.h> #include <string.h> #include <st ...
- pwnable.kr col之write up
Daddy told me about cool MD5 hash collision today. I wanna do something like that too! ssh col@pwnab ...
- pwnable.kr brainfuck之write up
I made a simple brain-fuck language emulation program written in C. The [ ] commands are not impleme ...
- pwnable.kr login之write up
main函数如下: auth函数如下: 程序的流程如下: 输入Authenticate值,并base64解码,将解码的值代入md5_auth函数中 mad5_auth()生成其MD5值并与f87cd6 ...
- pwnable.kr详细通关秘籍(二)
i春秋作家:W1ngs 原文来自:pwnable.kr详细通关秘籍(二) 0x00 input 首先看一下代码: 可以看到程序总共有五步,全部都满足了才可以得到flag,那我们就一步一步来看 这道题考 ...
- pwnable.kr simple login writeup
这道题是pwnable.kr Rookiss部分的simple login,需要我们去覆盖程序的ebp,eip,esp去改变程序的执行流程 主要逻辑是输入一个字符串,base64解码后看是否与题目 ...
随机推荐
- android 百度地图
展示当前位置地图 参考百度定位demo (LocationDemo) 实现此功能,运行发现 BDLocationListener 的onReceiveLocation方法无法执行,原因是 Androi ...
- 洛谷 P2841 A*B Problem
https://www.luogu.org/problemnew/show/P2841 根本不会啊... 大概就是:如果两个数模a的结果相同,那么它们前面同时加上一个0或1后模a的结果仍然相同,因此可 ...
- Appium + Python自动化 - 元素定位uiautomatorviewer
元素定位主要介绍如何使用uiautiomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作.uiautiomatorviewer是android-sdk自带的一个元素定位工具,非常 ...
- GCC KEIL ARM编译器
经常用keil,也听说IAR的编译效率很高,原来C51时用proteus,最近proteus8开始支持stm32,所以在研究用keil5+HAL+proteus学习STM32F. 问题:因为prote ...
- ios学习笔记 UITableView(纯代码) (一)
参考 “https://www.cnblogs.com/ai-developers/p/4557487.html” UITableViewCell 有一个代码重用 减少资源的浪费 参考 https: ...
- PHP设计模式 观察者模式(Observer)
定义 当一个对象状态发生改变时,依赖它的对象全部会收到通知,并自动更新. 模式要点 Event:事件 Trigger() 触发新的事件 abstract EventGenerator 事件产生者 Fu ...
- hihocoder offer收割编程练习赛8 A 小Ho的强迫症
思路: 乱搞. 实现: #include <iostream> #include <cstdio> using namespace std; typedef long long ...
- Android手机屏幕投射到电脑神器Vysor
做android开发的,经常要把手机屏幕投射到电脑,用来演示.普遍的解决方案是360或者豌豆荚的演示功能,缺点是延迟非常厉害,大概有3秒左右,非常影响演示效果.以下介绍Vysor,几乎0延迟,能与手机 ...
- java写跳一跳辅助程序
##起初是想使用按键精灵脚本程序控制,但还是选择熟悉的java.我这里使用了工具,造成延迟问题.也求教:java控制安卓的正确姿势, 参考了.NET玩跳一跳,思路都是一样的,只不过使用ADB控制安卓的 ...
- Android(java)学习笔记162:开发一个多界面的应用程序之两种意图
1.两种意图: (1)显式意图: 在代码里面用intent设置要开启Activity的字节码.class文件: (2)隐式意图: Android(java)学习笔记218:开发一个多界面的应用程序之人 ...