0x00前言:

昨天刚刚看完小迪老师的sql注入篇的第一章

所以有了新的笔记。

0x01笔记:

sql注入原理:
网站数据传输中,接受变量传递的值未进行过滤,导致直接带入数据库查询执行的操作。
sql注入对渗透的作用:
获取数据
sql注入特性:
攻击方法由数据库类型决定
攻击结果由数据库决定 漏洞代码:
sql.php
<?php
$id=$_GET['x'];
$sql="select * from news where id=$x";
还没完
?> 当我们在网页执行访问了:
http://127.0.0.1/sql.php?x=1
在数据库其实是这样的
$id=1
select * from news where id=1 注入语句 http://127.0.0.1/sql.php?x=1 and 1=1 真
select * from news where id=1 and 1=1
返回正常页面 http://127.0.0.1/sql.php?x=1 and 1=2 假
select * from news whsere id=1 and 1=2
返回错误页面 and or xor
且 或 非
sql语句中逻辑运算符:
and 1=1 真且真=真
or 1=2 真或假=真
and 1=2 真且假=假 sql注入拓展深入部分:
sql注入能调用数据库作的动作(例如:文件读写,调用执行等) php一些sql的函数:
mysql_connect(); mysql连接函数
mysql_select_db(); 选择对应数据库
mysql_query(); mysql执行函数 sql注入产生的必备条件:
1.变量接受 判断变量是否接受了:打开一个有id的站修改id看看页面会不会变化,如果变化了就代表变量接受。如果没变化,就代表变量不接受。 2.带入数据库查询执行 判断是否带入数据库查询执行:打开一个有id的站修改id看看页面会不会变化,如果变化了就代表带入了数据查询执行。如果没变化,是没带入数据库查询执行的也就是说页面是不会变动的。 3.不存在过滤(可尝试绕过) 题目:
1.请从下面站点地址选择可能存在注入的选项(BCD) 1. www.dikesec.com/news.php
2. www.dikesec.com/news.php?id=1
3. www.dikesec.com/news.php?id=1&page=2
4. www.dikesec.com/login.php 注入代码前面必须空一个格
2.参数page存在注入,请问下面注入测试正确的是(AC)
A.www.dikesec.com/news.php?id=1&page=1 and 1=1
B. www.dikesec.com/news.php?page=1&id=1 and 1=1
C. www.dikesec.com/news.php?page=1 and 1=1 &id=1 www.dikesec.com/news.php?page=1&id=1 如果page是注入点
就要在page后面空一格加注入代码,而不是在后面加 在我们放入sqlmap进行sql扫描的的时候必须理清楚哪里是注入点,如果page是注入点的话我们得这样
www.dikesec.com/news.php?id=1&page=1
这样就可以放到工具里扫了 例子:
http://www.gdgy33.com/page.php?id=150&aid=3&bid=1
假设id存在注入我们得移到后面去 变成这样子
http://www.gdgy33.com/page.php?bid=1&aid=3&id=150
不会影响页面的 post注入:
假设有个表单让你进行注入。因为表单的条件方式都是POST。在表单里输入恶意代码也会产生注入点 cookie注入:
把恶意代码带到cookie后面。

  0x02初步:

今天是我们学习sql注入的第一天,就先写判断注入的脚本吧。后面慢慢加上去

import  requests
import socket
import time logo="""
___====-_ _-====___
_--^^^#####// \\#####^^^--_
_-^##########// ( ) \\##########^-_
-############// |\^^/| \\############-
_/############// (@::@) \\############\_
/#############(( \\// ))#############\
-###############\\ (oo) //###############-
-#################\\ / VV \ //#################-
-###################\\/ \//###################-
_#/|##########/\######( /\ )######/\##########|\#_
|/ |#/\#/\#/\/ \#/\##\ | | /##/\#/ \/\#/\#/\#| \|
` |/ V V ` V \#\| | | |/#/ V ' V V \| '
` ` ` ` / | | | | \ ' ' ' '
( | | | | )
__\ | | | | /__
(vvv(VVV)(VVV)vvv)
"""
print(logo)
def sql():
global url
url=input('[^]Please enter the URL that needs test injection:').lower()
if url !=None:
time.sleep(0.5)
header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'}
print('[1]GET')
print('[2]POST')
lwd=input('[^]Please enter what kind of method you want to ask for:')
if lwd=="1":
r=requests.get(url,header)
status=r.status_code
if status == 200:
print('\033[1;32;40m')
print('[^]Link stability')
print('\033[0m')
else:
print('\033[1;31;40m')
print('[~]State code',status)
print('[^]Response code')
print('\033[0m')
exit()
elif lwd=="2":
r=requests.post(url,header)
status=r.status_code
if status == 200:
print('\033[1;32;40m')
print('[^]Link stability')
print('\033[0m')
else:
print('\033[1;31;40m')
print('[~]State code', status)
print('[^]Response code')
print('\033[0m')
exit()
else:
print('[~]Not Found')
exit()
sql() def zhuru():
headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'}
url1=url+'%20and%201=1'
url2=url+'%20and%201=2'
zhusx=requests.get(url,headers).content
zhus=requests.get(url1,headers).content
zhuss=requests.get(url2,headers).content
if zhusx == zhus and zhusx !=zhuss:
print('[^]Discovery of injection point')
else:
print('[~]No injection point was found')
exit() zhuru()

运行截图:

python 打造一个sql注入脚本 (一)的更多相关文章

  1. python打造一个Mysql数字类型注入脚本(1)

    前言: 总是想写一个sql注入脚本,但是之前的那些都不行. 这次做好了准备,然后嘿嘿嘿. 准备: sql注入的基础知识 熟悉怎么判断 正文: 思路概念图: 这里我没有限制用户输入,不限制的话可能会 @ ...

  2. Python中防止sql注入的方法详解

    SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库.下面这篇文章主要给大家介绍了关于Python中 ...

  3. 如何编写一个SQL注入工具

    0x01  前言 一直在思考如何编写一个自动化注入工具,这款工具不用太复杂,但是可以用最简单.最直接的方式来获取数据库信息,根据自定义构造的payload来绕过防护,这样子就可以. 0x02 SQL注 ...

  4. phpcms v9 sql注入脚本

    phpcms v9 SQL注入脚本 用法:python phpcms.py http://www.baidu.com import requests,sys,urllib url = sys.argv ...

  5. phantomjs + python 打造一个微信机器人

    phantomjs + python 打造一个微信机器人 1.前奏   媳妇公司不能上网,但经常需要在公众号上找一些文章做一些参考,需要的时候就把文章链接分享给我,然后我在浏览器打开网页,一点点复制过 ...

  6. [Python] 用python做一个游戏辅助脚本,完整思路

    一.说明 简述:本文将以4399小游戏<宠物连连看经典版2>作为测试案例,通过识别小图标,模拟鼠标点击,快速完成配对.对于有兴趣学习游戏脚本的同学有一定的帮助. 运行环境:Win10/Py ...

  7. python打造一个分析网站SQL注入的脚本

    前言: 昨天晚上其实就已经写完代码.只不过向FB投稿了,打算延迟一晚上在写博客 所有才到今天早上写.好了,接下来进入正题. 思路: 1.从网站源码中爬取那些类适于:http://xxx.com/xx. ...

  8. 点击劫持漏洞之理解 python打造一个挖掘点击劫持漏洞的脚本

    前言: 放假了,上个星期刚刚学习完点击劫持漏洞.没来的及写笔记,今天放学总结了一下 并写了一个检测点击劫持的脚本.点击劫持脚本说一下哈.= =原本是打算把网站源码 中的js也爬出来将一些防御的代码匹配 ...

  9. 常规SQL注入脚本

    一:union报错注入 猜字段长度:order by 28 先显示位http://127.0.0.1/sql.php?cmd=-1 UNION SELECT 1,2,3,4,5,6,7,8,9 当前数 ...

随机推荐

  1. This is very likely to create a memory leak. Stack trace of thread

    1.错误描述 警告: The web application [cmp] appears to have started a thread named [Abandoned connection cl ...

  2. EasyDSS流媒体服务器实现RTMP直播同步HLS录像和时移回放

    本文转自EasyDarwin团队成员Alex的博客:http://blog.csdn.net/cai6811376/article/details/74166337 "目前在市面上可以找到的 ...

  3. MarkDown初学

    什么是MarkDown? 第一次用这个MarkDown,感觉很好,界面友好,使用简洁而又使用,最主要的是此园支持这个语法,欣慰欣慰!先这么多,看看效果如何 推荐个不错的学习网站 Markdown 语法 ...

  4. jQuery radio|checkbox的取值与赋值

    文章简单即是美[我说的是技术博客] |--radio   |--checkbox   参考: http://blog.csdn.net/gd2008/article/details/6951208 h ...

  5. 【angular之起步】安装

    人生只有眼前的苟且. 所以为了远方,最近在策划一个大阴谋------做一个自己的网站,杂而全的. 各种胡思乱想了一周,先把页面写完了,没辙,就这个不用费太多脑子. 然后开始重头戏,就卡死了. angu ...

  6. 用python验证蒙提霍尔问题

    最初看到这个问题是初中的时候买了一本有关数学谜题的书里面概率论的一张的课后拓展就是说到三门问题,当时作为一个扩展阅读看了一下,里面说到了一个世界智商最高的女人秒杀了美国一大群的数学高材生的精彩故事(比 ...

  7. [转]blocks编程

    原文地址:http://geeklu.com/2012/01/block/ 介绍 声明创建和调用 Block和变量 Block实际应用 1.介绍 Block是一个C Level的语法以及运行时的一个特 ...

  8. linux下导入、导出mysql 数据库命令

    一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):1.导出数据和表结构:mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql#/usr/lo ...

  9. WordCount运行详解

    1.MapReduce理论简介 1.1 MapReduce编程模型 MapReduce采用"分而治之"的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然 ...

  10. php7+Redis+Windows7安装 (phpstudy)

    1.首先去github网站上下载https://github.com/dmajkic/redis/downloads: 2.根据实际情况,将64bit的内容cp到自定义盘符目录,如D:\Redis; ...