情况一:空格被过滤
使用括号()代替空格,任何可以计算出结果的语句,都可以用括号包围起来;
select * from(users)where id=1
使用注释/**/绕过空格;
select * from/**/users/**/where id=1
情况二:限制from与某种字符组合
在from后加个点.即使用from.来代替from;
select * from. users where id=1
再直接看GIF:
说白了,就是将‘字段名 '替换成hex;
这里会联想到开始学SQL注入的时候,利用load_file或者into outfile,常用hex把一句话编码一下再导入;
这里确实省去了'单/双引号',万无一失(magic_quotes_gpc()咱不提);
但当时只顾着看结果了,今天在整理以前的资料时发现了这个问题,脑子却晕的不知道为啥这么编码,实际 *** 作一下:
可以很清楚看到报错,select后面的第一个'单引号,和一句话木马里cmd前那个单引号闭合导致后面语句报错;
然后转成hex,去掉引号,发现可以写入;
这里我的机子没给他权限,会提示不能写,实际还得看情况;
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
MySQL数据库用户密码跟其它数据库用户密码一样,在应用系统代码中都是以明文出现的,在获取文件读取权限后即可直接从数据库连接文件中读取,例如asp代码中的conn.asp数据库连接文件,在该文件中一般都包含有数据库类型,物理位置,用户名和密码等信息;而在MySQL中即使获取了某一个用户的数据库用户(root用户除外)的密码,也仅仅只能 *** 作某一个用户的数据库中的数据。
在实际攻防过程中,在获取Webshell的情况下,是可以直下载MySQL数据库中保留用户的user.MYD文件,该文件中保存的是MySQL数据库中所有用户对应的数据库密码,只要能够破解这些密码那么就可以正大光明的 *** 作这些数据,虽然网上有很多修改MySQL数据库用户密码的方法,却不可取,因为修改用户密码的事情很容易被人发现!
1.1MYSQL加密方式
MYSQL数据库的认证密码有两种方式,MYSQL 4.1版本之前是MYSQL323加密,MYSQL 4.1和之后的版本都是MYSQLSHA1加密,MYSQL数据库中自带Old_Password(str)和Password(str)函数,它们均可以在MYSQL数据库里进行查询,前者是MYSQL323加密,后者是MYSQLSHA1方式加密。
(1)以MYSQL323方式加密
SELECTOld_Password(&#39bbs.antian365.com&#39)
查询结果MYSQL323= 10c886615b135b38
(2)以MYSQLSHA1方式加密
SELECTPassword(&#39bbs.antian365.com&#39)
查询结果MYSQLSHA1= *A2EBAE36132928537ADA8E6D1F7C5C5886713CC2
执行结果如图1所示,MYSQL323加密中生成的是16位字符串,而在MYSQLSHA1中生存的是41位字符串,其中*是不加入实际的密码运算中,通过观察在很多用户中都携带了“*”,在实际破解过程中去掉“*”,也就是说MYSQLSHA1加密的密码的实际位数是40位。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)