1--TEST--
2GHSA-9fcc-425m-g385 - bypass CVE-2024-1874 - exhaustive suffix test
3--SKIPIF--
4<?php
5if( substr(PHP_OS, 0, 3) != "WIN" )
6  die('skip Run only on Windows');
7?>
8--FILE--
9<?php
10
11$batch_file_content = <<<EOT
12@echo off
13powershell -Command "Write-Output '%0%'"
14powershell -Command "Write-Output '%1%'"
15EOT;
16$batch_file_path = __DIR__ . '/ghsa-9fcc-425m-g385_003.bat';
17
18file_put_contents($batch_file_path, $batch_file_content);
19
20$descriptorspec = [STDIN, STDOUT, STDOUT];
21
22for ($i = 1; $i <= 255; $i++) {
23  echo "Testing $i\n";
24  try {
25    $proc = @proc_open([$batch_file_path . chr($i), "\"&notepad.exe"], $descriptorspec, $pipes, null, null, array("bypass_shell" => true));
26    var_dump($proc);
27    proc_close($proc);
28  } catch (Error) {}
29}
30
31?>
32--EXPECTF--
33Testing 1
34bool(false)
35Testing 2
36bool(false)
37Testing 3
38bool(false)
39Testing 4
40bool(false)
41Testing 5
42bool(false)
43Testing 6
44bool(false)
45Testing 7
46bool(false)
47Testing 8
48bool(false)
49Testing 9
50bool(false)
51Testing 10
52bool(false)
53Testing 11
54bool(false)
55Testing 12
56bool(false)
57Testing 13
58bool(false)
59Testing 14
60bool(false)
61Testing 15
62bool(false)
63Testing 16
64bool(false)
65Testing 17
66bool(false)
67Testing 18
68bool(false)
69Testing 19
70bool(false)
71Testing 20
72bool(false)
73Testing 21
74bool(false)
75Testing 22
76bool(false)
77Testing 23
78bool(false)
79Testing 24
80bool(false)
81Testing 25
82bool(false)
83Testing 26
84bool(false)
85Testing 27
86bool(false)
87Testing 28
88bool(false)
89Testing 29
90bool(false)
91Testing 30
92bool(false)
93Testing 31
94bool(false)
95Testing 32
96resource(%d) of type (process)
97%s.bat
98"&notepad.exe
99Testing 33
100bool(false)
101Testing 34
102bool(false)
103Testing 35
104bool(false)
105Testing 36
106bool(false)
107Testing 37
108bool(false)
109Testing 38
110bool(false)
111Testing 39
112bool(false)
113Testing 40
114bool(false)
115Testing 41
116bool(false)
117Testing 42
118bool(false)
119Testing 43
120bool(false)
121Testing 44
122bool(false)
123Testing 45
124bool(false)
125Testing 46
126resource(%d) of type (process)
127'"%s.bat."' is not recognized as an internal or external command,
128operable program or batch file.
129Testing 47
130bool(false)
131Testing 48
132bool(false)
133Testing 49
134bool(false)
135Testing 50
136bool(false)
137Testing 51
138bool(false)
139Testing 52
140bool(false)
141Testing 53
142bool(false)
143Testing 54
144bool(false)
145Testing 55
146bool(false)
147Testing 56
148bool(false)
149Testing 57
150bool(false)
151Testing 58
152bool(false)
153Testing 59
154bool(false)
155Testing 60
156bool(false)
157Testing 61
158bool(false)
159Testing 62
160bool(false)
161Testing 63
162bool(false)
163Testing 64
164bool(false)
165Testing 65
166bool(false)
167Testing 66
168bool(false)
169Testing 67
170bool(false)
171Testing 68
172bool(false)
173Testing 69
174bool(false)
175Testing 70
176bool(false)
177Testing 71
178bool(false)
179Testing 72
180bool(false)
181Testing 73
182bool(false)
183Testing 74
184bool(false)
185Testing 75
186bool(false)
187Testing 76
188bool(false)
189Testing 77
190bool(false)
191Testing 78
192bool(false)
193Testing 79
194bool(false)
195Testing 80
196bool(false)
197Testing 81
198bool(false)
199Testing 82
200bool(false)
201Testing 83
202bool(false)
203Testing 84
204bool(false)
205Testing 85
206bool(false)
207Testing 86
208bool(false)
209Testing 87
210bool(false)
211Testing 88
212bool(false)
213Testing 89
214bool(false)
215Testing 90
216bool(false)
217Testing 91
218bool(false)
219Testing 92
220bool(false)
221Testing 93
222bool(false)
223Testing 94
224bool(false)
225Testing 95
226bool(false)
227Testing 96
228bool(false)
229Testing 97
230bool(false)
231Testing 98
232bool(false)
233Testing 99
234bool(false)
235Testing 100
236bool(false)
237Testing 101
238bool(false)
239Testing 102
240bool(false)
241Testing 103
242bool(false)
243Testing 104
244bool(false)
245Testing 105
246bool(false)
247Testing 106
248bool(false)
249Testing 107
250bool(false)
251Testing 108
252bool(false)
253Testing 109
254bool(false)
255Testing 110
256bool(false)
257Testing 111
258bool(false)
259Testing 112
260bool(false)
261Testing 113
262bool(false)
263Testing 114
264bool(false)
265Testing 115
266bool(false)
267Testing 116
268bool(false)
269Testing 117
270bool(false)
271Testing 118
272bool(false)
273Testing 119
274bool(false)
275Testing 120
276bool(false)
277Testing 121
278bool(false)
279Testing 122
280bool(false)
281Testing 123
282bool(false)
283Testing 124
284bool(false)
285Testing 125
286bool(false)
287Testing 126
288bool(false)
289Testing 127
290bool(false)
291Testing 128
292bool(false)
293Testing 129
294bool(false)
295Testing 130
296bool(false)
297Testing 131
298bool(false)
299Testing 132
300bool(false)
301Testing 133
302bool(false)
303Testing 134
304bool(false)
305Testing 135
306bool(false)
307Testing 136
308bool(false)
309Testing 137
310bool(false)
311Testing 138
312bool(false)
313Testing 139
314bool(false)
315Testing 140
316bool(false)
317Testing 141
318bool(false)
319Testing 142
320bool(false)
321Testing 143
322bool(false)
323Testing 144
324bool(false)
325Testing 145
326bool(false)
327Testing 146
328bool(false)
329Testing 147
330bool(false)
331Testing 148
332bool(false)
333Testing 149
334bool(false)
335Testing 150
336bool(false)
337Testing 151
338bool(false)
339Testing 152
340bool(false)
341Testing 153
342bool(false)
343Testing 154
344bool(false)
345Testing 155
346bool(false)
347Testing 156
348bool(false)
349Testing 157
350bool(false)
351Testing 158
352bool(false)
353Testing 159
354bool(false)
355Testing 160
356bool(false)
357Testing 161
358bool(false)
359Testing 162
360bool(false)
361Testing 163
362bool(false)
363Testing 164
364bool(false)
365Testing 165
366bool(false)
367Testing 166
368bool(false)
369Testing 167
370bool(false)
371Testing 168
372bool(false)
373Testing 169
374bool(false)
375Testing 170
376bool(false)
377Testing 171
378bool(false)
379Testing 172
380bool(false)
381Testing 173
382bool(false)
383Testing 174
384bool(false)
385Testing 175
386bool(false)
387Testing 176
388bool(false)
389Testing 177
390bool(false)
391Testing 178
392bool(false)
393Testing 179
394bool(false)
395Testing 180
396bool(false)
397Testing 181
398bool(false)
399Testing 182
400bool(false)
401Testing 183
402bool(false)
403Testing 184
404bool(false)
405Testing 185
406bool(false)
407Testing 186
408bool(false)
409Testing 187
410bool(false)
411Testing 188
412bool(false)
413Testing 189
414bool(false)
415Testing 190
416bool(false)
417Testing 191
418bool(false)
419Testing 192
420bool(false)
421Testing 193
422bool(false)
423Testing 194
424bool(false)
425Testing 195
426bool(false)
427Testing 196
428bool(false)
429Testing 197
430bool(false)
431Testing 198
432bool(false)
433Testing 199
434bool(false)
435Testing 200
436bool(false)
437Testing 201
438bool(false)
439Testing 202
440bool(false)
441Testing 203
442bool(false)
443Testing 204
444bool(false)
445Testing 205
446bool(false)
447Testing 206
448bool(false)
449Testing 207
450bool(false)
451Testing 208
452bool(false)
453Testing 209
454bool(false)
455Testing 210
456bool(false)
457Testing 211
458bool(false)
459Testing 212
460bool(false)
461Testing 213
462bool(false)
463Testing 214
464bool(false)
465Testing 215
466bool(false)
467Testing 216
468bool(false)
469Testing 217
470bool(false)
471Testing 218
472bool(false)
473Testing 219
474bool(false)
475Testing 220
476bool(false)
477Testing 221
478bool(false)
479Testing 222
480bool(false)
481Testing 223
482bool(false)
483Testing 224
484bool(false)
485Testing 225
486bool(false)
487Testing 226
488bool(false)
489Testing 227
490bool(false)
491Testing 228
492bool(false)
493Testing 229
494bool(false)
495Testing 230
496bool(false)
497Testing 231
498bool(false)
499Testing 232
500bool(false)
501Testing 233
502bool(false)
503Testing 234
504bool(false)
505Testing 235
506bool(false)
507Testing 236
508bool(false)
509Testing 237
510bool(false)
511Testing 238
512bool(false)
513Testing 239
514bool(false)
515Testing 240
516bool(false)
517Testing 241
518bool(false)
519Testing 242
520bool(false)
521Testing 243
522bool(false)
523Testing 244
524bool(false)
525Testing 245
526bool(false)
527Testing 246
528bool(false)
529Testing 247
530bool(false)
531Testing 248
532bool(false)
533Testing 249
534bool(false)
535Testing 250
536bool(false)
537Testing 251
538bool(false)
539Testing 252
540bool(false)
541Testing 253
542bool(false)
543Testing 254
544bool(false)
545Testing 255
546bool(false)
547--CLEAN--
548<?php
549@unlink(__DIR__ . '/ghsa-9fcc-425m-g385_003.bat');
550?>
551