POST注入的分类有很多:
搜索框
登录框
认证框
还有XXXX,总之什么情况就是什么注入
言而总之,都他么一样,不就是POST传数据的时候动点手脚么?
写了个简单的搜索框注入的网页:
代码折叠了,大家展开看
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>搜索型注入</title> 5 <meta charset="utf-8"> 6 </head> 7 <body> 8 <h1>学无止境--POST注入</h1> 9 <form action="" method="POST"> 10 搜索内容:<input type="text" name="content"> 11 <input type="hidden" name="hid" value="1"> 12 <input type="submit" name=""> 13 14 </form> 15 <?php 16 if(isset($_POST[‘hid‘])){ 17 $content = !empty($_POST[‘content‘])?$_POST[‘content‘]:""; 18 if($content == ""){ 19 exit("请输入要搜索的内容"); 20 } 21 $link = mysql_connect("127.0.0.1","root","root"); 22 mysql_query("set names utf8"); 23 mysql_select_db("sqli"); 24 $sql = "select * from search where content = ‘$content‘"; 25 /* 26 创建数据表 27 create table search( 28 id int primary key auto_increment, 29 content varchar(30) 30 )charset utf8; 31 插入测试数据 32 insert into search values(NULL,‘Hello‘),(NULL,‘World‘); 33 */ 34 $result = mysql_query($sql); 35 while($row = mysql_fetch_array($result)){ 36 echo "ID:".$row[‘id‘]; 37 echo "内容:".$row[‘content‘]; 38 echo "<hr />"; 39 } 40 echo "执行的SQL语句:$sql"; 41 } 42 ?> 43 </body> 44 </html>
学无止境
我数据库一共有两条数据,分别是Hello和World,来搜索一下看看
分析一下执行的SQL语句,我们通过数据库查询条件为content字段内容等于Hello的数据,但这个SQL语句并不安全
我们把搜索内容换一下:Hello‘ and 1=1 #
可以看到结果也是正常的.也就是说我们成功的把语句代入到数据库了.
接下来也就和普通注入没什么区别了...
OK,简单的解释一下SQL语句.我们搜索的内容是Hello‘ and 1=1 #,代入到数据库的语句是:select * from search where content = ‘Hello‘ and 1=1 #‘
在Hello后面的那个单引号闭合了前面的单引号,让Hello成为了一个单独的字符串,随即就是我们的注入语句,最后是一个#,注释了后面的单引号,数据库在执行语句的时候其实执行的是:select * from search where content = ‘Hello‘ and 1=1,这个语句相信大家就很熟悉了.
大家有喜欢的可以加个好友一起研究学习.
时间: 2024-10-25 03:51:48