Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)
SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
知识点:1,判断是数字型还是字符型,单引号还是双引号
2,union select联合查询注入
3,payload原理与防御措施
0X0a
判断注入点及类型
这道题因为是sqli-lab的靶场,所以知道是get型的单引号注入,直接在url栏就可以尝试
通常情况下,加个单引号,使id这个参数不能闭合,通过分析返回的报错信息,来进一步判断
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201007212113129.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dvbmdqaW5nZWdl,size_16,color_FFFFFF,t_70#pic_center)
**单引号判断‘ 显示数据库错误信息或者页面回显不同(整形,字符串类型判断)**
可以看到,单引号没有闭合,返回了报错信息,显示的就是单引号
兄弟萌也可以直接打开源码,通过一步步的比较,进一步学习
sql语句如上图,id这个参数周围是单引号
and 1=1 / and 1=2 回显页面不同(整形判断)
在数据库中 1=1 和1=2 后面随便输入字符串(相当于1=1和1=2后面的查询语句),发现select 1="1dasd"时返回1正确,1="2dasd"时返回0错误,即select在查询时忽略后面的字符串,只让1和后面第一个数字对比,如果相等就是正确,不相等返回错误。
0x0b
**union select联合查询注入**
1,***判断列数***
order by 函数是对MySQL中查询结果按照指定字段名进行排序,除了指定字 段名还可以指定字段的栏位进行排序,第一个查询字段为1,第二个为2,依次 类推。我们可以通过二分法来猜解列数
输入order by 4 --+,页面回显错误,说明不存在第四列
如此实验2和3,发现3成功,故列数为3
2,