2
我正試圖創建一個java程序,導致程序Vulnserver中的緩衝區溢出。爲什麼printwriter會將我的信息分成兩個字符串?
每當我發送一個字符串超過4094個字符時,它會以兩個字符串接收命令命令。它再次將其分成8188個字符的三個字符串等。
它爲什麼這樣做?我該如何阻止它?我試圖發送命令TRUN,然後是5000 A。它不是因爲它與perl程序一起工作的接收程序。
package fuzzer;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class VulnserverFuzz {
public static Socket s;
private static String Command = "TRUN ";//Command TRUN
public static void main(String[] args) throws FileNotFoundException{
PrintWriter pri = null;
try {
s = new Socket("127.0.0.1", 9999);
pri = new PrintWriter(s.getOutputStream(), true);
} catch (Exception e) {e.printStackTrace();}
(new Thread(new VulnThread())).start();//Starts thread to listen for response
Scanner input = new Scanner(System.in);
for(int k=0; k<5000; ++k){Command += "A";}// Add 5099 A's to Command
String bre = (Command);
pri.println(bre);
pri.flush();
}
}
響應:
TRUN完成
未知命令
不知道它是否有很大的不同,但它看起來像你在客戶端後啓動服務器線程。 (VulnThread())開始();如果你把它放在套接字連接之前會發生什麼? – vcetinick
對不起,我認爲我的編輯之前保存。 vulnthread從掃描器獲取來自服務器的響應。 Vulneserver是一個單獨的可執行文件。 – user1500007