R0ot's Blog

分享代码,记录生活

0%

原理

很多网站都有文件上传的功能,如果有些网站对上传的文件不做严格的限制,用户上传了一些特殊文件,后台就会将上传文件的内容当做代码执行,这样一来,用户就可以通过上传一些木马文件,获取到网站的WebShell(网页后门),用一些WebShell管理工具,实现对网站的控制
检测后缀:如果一个后缀能骗过检测机制,又能成功被Windows识别,那么就可以成功绕过上传
检测文件内容:通常需要上传一个图片马

简单的一句话木马

<?php @eval($_POST[a]); ?> 有时候<?= @eval($_POST[a]); ?>这样也可以(没有php)

  1. eval()函数,eval函数的作用是将括号里的字符串都当做php语句执行
  2. @是错误控制运算符,可以将产生的错误忽略
  3. $_POST[]是超全局变量,用于获取post请求的值
  4. a是可以修改的,使用中国蚁剑连接时,a为密码
  5. <?的木马容易被识别,来个不一样的GIF89a? <script language="php">eval($_REQUEST[1])</script> 密码是1
    阅读全文 »

过滤绕过

  1. 过滤原理
    经过前段时间的学习,已经可以通过一些方法去查询想要的数据,但一些网站会对一些关键字符进行过滤,也就是说输入进去的字符没法正常的进入到查询语句里.例如preg_replace(参数1,参数2,参数3)函数,会将参数三进行检测,如果发现参数1,则替换为参数2,而对关键字符进行替换删除

  2. 绕过原理
    将被绕过的字符换成另一种表达方式,从而实现绕过过滤

  3. 如何判断页面过滤对象
    从简单的注入语句开始,一步步增加复杂性,通过此方法判断过滤对象

阅读全文 »

简介

  1. 什么是sql注入:
    所谓的sql注入就是通过构造“恶意”的代码,让服务器把提交的数据当做sql语句进行执行,从而查询到想要的信息

  2. 注入的分类
    注入大致可以分为
    按照查询字段 1.字符型 2.数字型(整形)
    按照注入方法 1.Union注入 2.报错注入 3.布尔盲注 4.时间盲注

  3. 什么是注入点
    注入点就是数据库连接访问的地方,例如URL栏,或是页面提供的表单等
    如果这个地方会把用户输入的数据误解成SQL语法,则认为这个地方是注入点
    例如:输入'判断是否存在注入点,报错则说明把'当成代码,存在注入点

  4. 闭合

    1. 闭合符
      ' " ') ")
    2. 闭合方式判断
      在语句上加入闭合符,如果页面产生错误,再加上注释符(--+,#,%23)页面又恢复正常,则证明这是该语句的闭合符
    3. 闭合的作用
      手工闭合前一段查询语句,后面加入其他语句,查询需要的参数,不需要的语句可以用注释符注释
      阅读全文 »

MYSQL简介

  1. 关系型数据库
    MYSQL数据库是一个关系型数据库,关系型数据库就是指,建立在关系模型的基础上,由多张互相连接的二维表组成的数据库
  2. 数据模型
    通过客户端连接数据库管理系统(DBMS),通过DBMS创建数据库,再通过数据库创建数据表
  3. MYSQL启动与连接
    –启动,以管理员身份运行命令行net start mysql80,关闭net stop mysql80
    –连接,可以用mysql自带的客户端命令行运行,也可以在系统的命令行里输入mysql -u root -p
    阅读全文 »

前面经过一周的PHP学习,这是第二周

简单表单

语法

1
2
3
4
5
<form action="提交表单的地址" method="提交表单的方式">  //GET POST REQUEST
<input type="text" name="提交数据的名称"> //type属性中的text表示上传类型是文本
<input type="text" name="提交数据的名称">
<input type="submit" value="提交"> //type属性中的submit表示这是一个提交按钮
</form>

可以用超全局变量$_POST[],$_GET[],$_REQUEST获取提交的表单数据

阅读全文 »

一些基本概念

  1. 定义类
    在php中使用class name{}
  2. 实例化
    使用 $name=new name();创建一个对象$name。
  3. 类属性与类方法
    在类的外部使用类属性和类方法时,要通过实例化的对象$name ->a ,$name ->a()
    类的内部访问时要通过伪变量$this ->($this当前的对象)
  4. 类常量
    在类的内部定义常量用const关键字,类中的常量归类所有,而不是归对象所有,要访问类中的对象,在外部可以使用类名::常量名,在类的内部可以使用self::类名调用(self当前的类)。
  5. static(静态)
    –声明类的属性或方法为 static(静态),就可以不实例化类而直接访问。声明为静态后,此时的方法和属性就归类所有,不归对象所有。
    –静态成员的访问,外部:类名::成员名,内部:可以使用self::成员名类名::成员名.(成员包括属性与方法)
    –实际上,在低版本中php中的方法默认是静态的,所以事实上静态方法还是可以通过实例化的对象访问(不推荐),静态属性则不行。
    –由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用。
    阅读全文 »

基本语法

<?php 作为开头
每句话以 ;结尾
?> 作为结尾

注释

// 单行注释
/** */ 多行注释

传值与传址

$a=$b 传值,指向不同的内存空间
$a=&$b 传址,指向相同的内存空间,同时改变

局部变量,全局变量与超全局变量

全局声明(函数外声明)的变量会保存在$-GLOBALS中,函数内默认不能访问全局变量,访问需要加上global关键字
也可以使用全局数组$GLOBALS('变量名')调用全局变量

超全局变量

菜鸟教程全局变量

局部变量:函数内部声明的变量,只能在函数内部使用

阅读全文 »

斐波那契函数

在——上补充代码,输出100以内的斐波那契数

1
2
3
4
a,b=0,1
while a<=100:
print(a,end=',')
------

答案:
a,b=b+a,a

试着思考相同结构能否用c语言实现

1
2
3
4
5
6
7
8
9
10
int main()
{
int a=0,b=1;
while(a<=100)
{
printf("%d,",a);
------
}
return 0;
}

想了许久没有想出答案,在python的赋值中a,b=b+a,a,a和b的赋值是同时进行的,但是在c语言中似乎无法用同时赋值,必须引用一个新的变量

阅读全文 »

今天给图片创建了一个图床
试试能不能正常的上传图片
正好有个朋友在垃圾桶捡到了个木头

阅读全文 »

一级标题

二级标题

三级标题

四级标题

五级标题
六级标题

斜体 一个*
粗体 两个*
又斜又粗 三个*

阅读全文 »