㈠ 请问如何用C语言编写程序在命令提示符中输入指令。
用程序的话不需要打开命令窗口,直接用system函数输入命令就行了。
比如system("cls");
就可以清除程序命令窗口。
用法跟直接在cmd窗口输入指令效果是一样的,输入会直接在终端显示。
㈡ c语言从命令行读入字符串
第一个错误就是你定义的FILE是一个指针,并没有空间,是没法接受字符串的输入的,第二个错误是,假设你的指针有空间了,接受输入的时候也不能用&符号
㈢ CVE-2020-15778 Openssh命令注入漏洞复现
漏洞介绍:
OpenSSH是用于使用SSH协议进行远程登录的一个开源实现。通过对交互的流量进行加密防止窃听,连接劫持以及其他攻击。OpenSSH由OpenBSD项目的一些开发人员开发, 并以BSD样式的许可证提供,且已被集成到许多商业产品中。
2020年6月9日,研究人员Chinmay Pandya在Openssh中发现了一个漏洞,于7月18日公开。OpenSSH的8.3p1中的scp允许在scp.c远程功能中注入命令,攻击者可利用该漏洞执行任意命令。目前绝大多数linux系统受影响
漏洞环境:
漏洞利用条件:
scp命令:
1、先查看目标机器ssh版本:
2、利用scp命令,用kali对Ubuntu进行写文件,复制文件:
Ubuntu上成功复制了文件并执行了创建文件的命令,确认漏洞存在:
既然如此,直接反弹shell岂不美哉
这个漏洞可能适用于远程服务器禁用了ssh登录,但是允许使用scp传文件,而且远程服务器允许使用反引号(`),其中有可能由以下几种方式实现:
详情参考:
iptables拒绝ssh访问但不阻止scp和rsync
又水一篇文章~ 欧耶!
OpenSSH 命令注入漏洞(CVE-2020-15778)
OpenSSH命令注入漏洞复现(CVE-2020-15778
CVE-2020-15778 Openssh-SCP 命令注入漏洞复现报告
㈣ 常见WEB攻击之命令注入
即 Command Injection。是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的。
在Web应用中,有时候会用到一些命令执行的函数,如php中system、exec、shell_exec等,当对用户输入的命令没有进行限制或者过滤不严导致用户可以执行任意命令时,就会造成命令执行漏洞。
黑客将构造好的命令发送给web服务器,服务器根据拼接命令执行注入的命令,最后讲结果显示给黑客。
以DVWA为例,下面使用ping命令测试IP,正常输入一个IP或者域名会返回一个正常的返回结果。
当输入恶意构造的语句 www..com && netstat -an,会把后面的语句也给执行了:
执行结果:
PHP的常见命令执行函数:
system(),exec(),shell_exec(),passthru()
1、system()
system — 执行外部程序,并且显示输出
常规用法:
使用PHP执行:
php test1.php www..com
exec — 执行一个外部程序
3、shell_exec()
shell_exec — 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。
4、passthru()
passthru() 函数与 exec() 函数类似,执行外部程序并且显示原始输出。
Windows:
用^转义<
如果加上单引号会写不进去,如果加双引号会把双引号一起写进去,所以要用^转义<
Linux:
linux下需要用来转义<,不过很多php都默认开启gpc,可以先用16进制转换一句话再用xxd命令把16进制还原.
<?php eval($_POST[pass]);>
转换为16进制:
由于我用的是Linux,所以使用payload写入一句话:
写入成功:
1、采用白名单,或使用正则表达式进行过滤。
2、不要让用户可以直接控制eval()、system、exec、shell_exec等函数的参数。
3、在进入执行命令函数和方法前,对变量进行过滤,对敏感字符进行转义。
㈤ c语言请问命令行怎样输入的
将命令行的目录转到你程序.exe文件的目录(假设为xxx.exe),那么你输入xxx.exe 5 hello应该就得了,因为主函数main可以传入一个int变量和一串字符,数字是要输出的字符串的字符个数,后面就是你输入的字符串。
不过你是初学吗,初学马上学这个好像有点早,不过也没事。原理就类似于其他dos命令一样,后面可以直接接参数,不用scanf的。
还有,更改目录用cd命令
㈥ c/c++实现dll注入
#include<windows.h>
intDllInject(HANDLEhProcess,constchar*dllname){
unsignedlong(__stdcall*faddr)(void*);
intt;
size_tabc;
HMODULEhdll;
HANDLEhp,ht;
LPVOIDpaddr;
unsignedlongexitcode;
intdllnamelen;
hdll=GetMoleHandleA("kernel32.dll");
if(hdll==0)return0;
faddr=(unsignedlong(__stdcall*)(void*))GetProcAddress(hdll,"LoadLibraryA");
if(faddr==0)return0;
dllnamelen=strlen(dllname)+1;
paddr=VirtualAllocEx(hProcess,NULL,dllnamelen,MEM_COMMIT,PAGE_READWRITE);
if(paddr==0)return0;
WriteProcessMemory(hProcess,paddr,(void*)dllname,strlen(dllname)+1,(SIZE_T*)&abc);
ht=CreateRemoteThread(hProcess,NULL,0,faddr,paddr,0,NULL);
if(ht==0){
VirtualFreeEx(hProcess,paddr,dllnamelen,MEM_DECOMMIT);
return0;
}
WaitForSingleObject(ht,INFINITE);
GetExitCodeThread(ht,&exitcode);
CloseHandle(ht);
VirtualFreeEx(hProcess,paddr,dllnamelen,MEM_DECOMMIT);
return1;
}
intfun(char*exename,constchar*dllname){
STARTUPINFOAsi;
PROCESS_INFORMATIONpi;
if(exename==0)return0;
if(dllname==0)return0;
memset(&si,0,sizeof(si));
memset(&pi,0,sizeof(pi));
if(CreateProcessA(NULL,exename,NULL,NULL,0,CREATE_SUSPENDED,NULL,NULL,&si,&pi)==0)return0;
if(DllInject(pi.hProcess,dllname)==0)return0;
ResumeThread(pi.hThread);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
return1;
}
启动程序并注入DLL的代码。