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.php2. www.dikesec.com/news.php?id=13. www.dikesec.com/news.php?id=1&page=24. 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=1www.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  requestsimport socketimport 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()

运行截图:

转载于:https://www.cnblogs.com/haq5201314/p/8595441.html

python 打造一个sql注入脚本 (一)相关推荐

  1. Sqlmap速查表/功能移植/Python批量检测SQL注入

    title: Sqlmap速查表与Python进行功能移植 copyright: true top: 0 date: 2021-02-27 11:59:00 tags: [扫描注入,注入,sqlmap ...

  2. thinkphp日志泄漏漏洞_ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法...

    ThinkPHP 3.1.3及之前的版本存在一个SQL注入漏洞,漏洞存在于ThinkPHP/Lib/Core/Model.class.php 文件 根据官方文档对"防止SQL注入" ...

  3. 测试php框架漏洞,ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法...

    作者: seay 下面是摘自thinkphp官方的一个公告,官方直接贴出这些东西是非常不负责的行为,跟上次apache公开的Struts2的代码执行一样的行为,会造成很多用户被黑.建议类似的厂商不要再 ...

  4. /plus/recommend.php sql注入漏洞,代码审计:ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法 | Seay 渗透 编程 代码审计 网络安全博客...

    显示不全请点击全屏阅读 下面是摘自thinkphp官方的一个公告,官方直接贴出这些东西是非常不负责的行为,跟上次apache公开的Struts2的代码执行一样的行为,会造成很多用户被黑.建议类似的厂商 ...

  5. 一个sql注入直接把我们服务搞挂了

    前言 最近我在整理安全漏洞相关问题,准备在公司做一次分享.恰好,这段时间团队发现了一个sql注入漏洞:在一个公共的分页功能中,排序字段作为入参,前端页面可以自定义.在分页sql的mybatis map ...

  6. 利用Python打造一个语音合成系统

    利用Python打造一个语音合成系统 背景 一直对语音合成系统比较感兴趣,总想能给自己合成一点内容,比如说合成小说,把我下载的电子书播报给我听等等. 语音合成系统 其实就是一个基于语音合成的工具,但是 ...

  7. python聊天小程序支持私聊和多人_利用Python打造一个多人在线匿名聊天的小程序!(前后端完整开发)...

    用Python打造一个多人在线匿名聊天的小程序(附代码) 最近看到好多设计类网站, 都提供了多人在线匿名聊天的小功能, 感觉很有意思, 于是自己就用django框架写了一个, 支持手动实时更名, py ...

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

    [Python] 用python做一个游戏辅助脚本,完整思路 一.说明 简述:本文将以4399小游戏<宠物连连看经典版2>作为测试案例,通过识别小图标,模拟鼠标点击,快速完成配对.对于有兴 ...

  9. Python 打造一个语音合成系统

    Python 打造一个语音合成系统 平时我们聊天的时候,也许会想着录制一些自己的声音, 而且还想有点特色,也就是所谓的变声,今天我们要说 的就是这个变声器的制作,说的高大上点就是语音合成系统. 他能实 ...

最新文章

  1. Linux下修改PATH环境变量
  2. linux-进程的替换exec函数族
  3. 解决 /var/run/nginx.pid failed
  4. yocto linux dns,yocto-sumo源码解析(一): o
  5. JavaScript面向对象中的严格模式
  6. 测试asp.net for Linux的环境搭建
  7. 文件系统对性能的影响
  8. ios category类别的使用
  9. 怎样使计算机屏幕看着不累,电脑族的显示器如何摆最不累
  10. python从菜鸟到高手 pdf 百度云_Python从菜鸟到高手(4):导入Python模块
  11. python学生信息管理系统
  12. keras下的线性回归实例
  13. win10 Anaconda 安装教程
  14. (十) 一起学 Unix 环境高级编程 (APUE) 之 线程控制
  15. Centos 下tomcat环境搭建
  16. 解决.net core 读取json文件中文乱码的问题
  17. VBScript 程序员参考手册 读书笔记08-
  18. S32K--输入捕获(FTM_IC)配置与使用学习笔记(SDK3.0)
  19. 非静默授权没有弹出弹框_网易考拉Android统一弹框
  20. tensorflow语义分割计算mIoU时忽略某一类别

热门文章

  1. 设计模式之- 外观模式(Facade Pattern)
  2. Codeforces 666E. Forensic Examination
  3. python下载大文件
  4. poj 1330 Nearest Common Ancestors LCA/DFS
  5. 关于 asp.net 点击确定按钮 获取不到新值问题
  6. Python黑魔法,一行实现并行化
  7. tf.summary.FileWriter
  8. Matlab英文操作系统下中文乱码的解决方案
  9. AUTOSAR从入门到精通100讲(三)-基于UDS服务的BootLoader架构和刷写流程
  10. 微型计算机应用领域及应用,自考“微型计算机应用基础”自考大纲(1)