CTF PWN 远程payload

最近在研究一些pwn类型的题.答案中经常出现一些python -c “XXX”|远端的程序.令我十分费解,经过我两个小时的研究,出了一些结果.给大家分享一下.
就拿pwnable.kr的一道题的答案举例:python -c “print (‘a’*96+’\x00\xa0\x04\x08’+’\n’+’134514147’)” | ./passcode.
首先这是linux的一条管道命令,前面的输出作为后面一个的输入,passcode是一个linux下的可执行程序.
你是否会认为前者输出的只作为一个参数传入后者?
或者你有会问:如何传递两个参数给后面的程序?
我百度了许久,没找到合适的答案.于是就自己亲自尝试.
上面的输出是作为两个参数传入后者的,因为字符串中有一个’\n’.这个’\n’,将上面的字符串分成两个参数传递给后者.
举个例子:

#include
int main()
{
    int a;
    int b;
    scanf("%d",&a);
    scanf("%d",&b);
    printf("a is %d\n",a);
    printf("b is %d\n",b);
    return 0;
}
这是一段很简单的C语言程序,如何通过命令行一次传入两个参数呢?
python  -c "print ('12'+'\n'+'13')"|./simple

成功传入两个参数
另外还有其他方法,比如:

python -c "print ('12');print('\n');print(12)"|./simple

这样也是可以成功的.

你可能感兴趣的:(PWN)