sql实例
–+为注释 +在url中会被转换为空格
(%20为空格的url编码)
或者使用%23即#为注释#的url编码为%23
根据上面可以推测
SELECT id,name,age from table_name where name =’ ’
判断sql注入
进一步
SELECT id, name,age from table_name where name =’ ’ injection
’ ’ 后为我们可以注入的地方
通过order by 判断列数为5列 (order by 判断列数 当数字小于列数不会出错当出错表示输入的列数大于实际列数)order by 可以使用二分法
union 使用 null(null 可以转换为其他类型而不引起错误)
通过concat() 获取信息0x3a为:的十六进制编码用来分隔获取的信息可知当前使用的版本 用户 数据库名
获取数据库
获取当前数据库的表名
获取列名
查询
可以直接查询
select table_schema,table_name,column_name form information_schema.columns where table_schema =database();
然后直接把整个表单列出 可以使用concat()把内容全部一次性输出
如果只能够输出一行则可以使前面的条件为假and(1=2) 输出后面的
下一行可以在where后修改输出下一行如where id > 1;
实例二
不允许输入空格或+(加号会被转换为空格)
可以使用/**/代替空格的输入
或者也可以使用() 例如and(1=1)
实例三
与上面相同
实例四
为数字型 id后可以不用加单引号
mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。
下列字符受影响:
\x00
\n
\r
’
"
\x1a
输入单引号会被转义
绕过可以加上
实例五
与上面相同
实例六
需要在结尾处为数字 在结尾处加上and 1=1不过and 1=1要跟在where后才会有效
可以列出表的时候后面加上where id > -1