本篇讲解sql注入相关题目
一、整数形(字符型注入)注入
1、打开题目,输入1进行尝试
若where后有 ' ' 则题型为字符型注入,反之为整形
若题目为字符型,则需在语句最后加上#(注释符)排除 ' 的影响
其余步骤整数型与字符型一致,下面以整数型举例
2、通过联合查询判断表中有多少字段
发现当尝试两个字段时有回显信息,三个则没有,说明表中有两个字段
(与此同时,因为题中只能显示一行信息,则可以前一个查询条件设置为0,这样回显信息就是后面查询条件的)
3、使用后一个字段查询数据库信息
查询层次为schema—table—column
(同时因为只有一行回显,则可使用group_concat语句将表内所有信息表现在一行里)
此时可发现除默认表以外,还有一个表格sqli,接下来的思路就为查询table下sqli中的数据,用where语句协助查询
可以看见flag表格,继续查询colmun下的flag表格
可以发现flag
接着就可直接查询flag
二、报错注入
因为报错注入有一些特别之处,所以此处先引入几个函数
>因为报错回显有长度限制,即使是group_concat也无法将全部内容显示,就需使用字符截取函数
substr(字符串,起始位置,截取长度)或mid(字符串,起始位置,截取长度)
>updatexml()函数,具有报错功能(主力)
语法结构:
1' and updatexml(1, concat(0x7e, (SELECT database()), 0x7e), 1) and '1'='1
报错注入思路与前两个相似
接下来看题
报错注入的特点是回显显示查询正确或错误,如图
可判别表中有两个字段
为使回显结果现实数据库中内容,引入函数updatexml()
同时为使全部字段显示,引入函数substr()
可以得到如此一坨,发现特殊字段sqli,接下来的步骤与整数型大同小异就不写了#懒'~')
然而由于报错显示有限,需自己调整,然后自己拼上
三、时间盲注
这玩意我就不懂了,总之就是要用脚本,脚本语言是python#摆
大致原理就是利用sleep()函数和时间来判断猜测字符是否正确,猜测字符正确则睡眠较长时间