SQL注入:基本的sql注入类型(数字,字符,搜索,xx)

0x0 数字型
传入后台的是数字SQL注入:基本的sql注入类型(数字,字符,搜索,xx)
我们可以猜猜看,数据库的查询语法应该是这样的
SQL注入:基本的sql注入类型(数字,字符,搜索,xx)

因为是post请求,我们不能在url上直接测试,需要用burp抓包查看。
抓包后send到repeater里,将id=1修改为id=1 or 1=1
SQL注入:基本的sql注入类型(数字,字符,搜索,xx)
点击go,返回的http响应码是200,请求被成功地完成。
于是我们如愿找到显示的字符段
SQL注入:基本的sql注入类型(数字,字符,搜索,xx)
数据库里的所有信息全部被遍历出来。

0x1 字符型
数据库查询时拼接的变量是字符串
SQL注入:基本的sql注入类型(数字,字符,搜索,xx)
根据以上的显示信息,我们可以猜想查询语句是这样的
SQL注入:基本的sql注入类型(数字,字符,搜索,xx)
我们针对这个字符型构造一个payload,根据我们的猜想,先闭合前面的’,再用#或者–注释掉后面的’
SQL注入:基本的sql注入类型(数字,字符,搜索,xx)
这张表遍历出来了
SQL注入:基本的sql注入类型(数字,字符,搜索,xx)
0x2 xx型(含括号型)
SQL注入:基本的sql注入类型(数字,字符,搜索,xx)
数据库查询拼接变量时前面含有(
解决办法:’) or 1=1 # 闭合前面的)

总结:
SQL注入:基本的sql注入类型(数字,字符,搜索,xx)
0x3常用的测试是否有注入点方法:

  1. ‘or 1=1 #表里的内容是否会全部遍历出来。 有注入点
  2. 先试试’and 1=1#,出现正常结果,再试试’1=2#, 查不到任何结果,说明我们构造的内容加入了后台数据库的判断。 有注入点
  3. 单独输入 ’ 会报错。说明‘没有被过滤,攻击者可以构造闭合 有注入点