is_numeric('0x123abc') === FALSE
$_GET['id']
злодей подсовывает нечто. Куда дальше это значение идёт, как проверяется? Строка "0x123abc" на проверке is_numeric() даёт false
. Если дальше вы отвергаете и не обрабатываете такой запрос, всё в порядке. $hex = hex2bin("31206f72206e756d5f626c6f6b203d203231");
var_dump($hex);
// 1 or num_blok = 21
var s = '31206f72206e756d5f626c6f6b203d203231', out = [], i;
for( i = 1; i < s.length; i+=2) out.push( String.fromCharCode( parseInt( s.substr(i-1,2), 16)));
out.join("") // 1 or num_blok = 21
parseInt( '0x32', 16)
. На SQL просто SELECT 0x32;
31206f72206e756d5f626c6f6b203d203231
даёт совершенно осмысленный код 1 or num_blok = 21
0x32
– текст, цифру «2». Точно так же 0x53
вам даст заглавную букву "S", например. select * from tables where id_banner = 50
?