is_numeric('0x123abc') === FALSE $_GET['id'] злодей подсовывает нечто. Куда дальше это значение идёт, как проверяется? Строка "0x123abc" на проверке is_numeric() даёт false. Если дальше вы отвергаете и не обрабатываете такой запрос, всё в порядке. $hex = hex2bin("31206f72206e756d5f626c6f6b203d203231");
var_dump($hex);
// 1 or num_blok = 21var 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", например.