SQLi-LABS 学习SQL注入(less 23-less38 )

less 23 GET - Error based - strip comments (基于错误的,过滤注释的GET型)

先单引号让他报错

图片.png

可以知道是单引号闭合。
然后发现--和#都被过滤了
图片.png

那么就只能用闭合后面引号的方法,根据报错可以知道语句为id='$ID' limit 0,1
那么可以这样闭合id='1' or '1'='1' limit 0,1或者是id='1' and '1'='1' limit 0,1
图片.png

less-24 - Second Degree Injections Real treat -Store Injections (二次注入)

这是一个完整的注册登陆以及改密网站

图片.png
真正有跟数据库交互的就login_create.php,login.php,pass_change.php这三个文件
PHP mysql_real_escape_string() 函数
login.php
图片.png
login_create.php
图片.png
pass_change.php
图片.png
图片.png

发现只有$_SESSION["username"]没有被过滤,这个SQL语句是用来更改密码的,而且mysql_real_escape_string()函数只会过滤以下字符
\x00
\n
\r
\
'
"
\x1a
而注释是不会过滤掉的,我们可以注册一个包含注释符号的username,然后用这个username更改密码的时候会被注入到update语句中,更改注释前面的用户名的密码。

图片.png
比如我们想更改用户名为Dummy的密码,我们可以注册一个username=Dummy' -- k
图片.png
然后登陆更改密码为456
图片.png
而你会发现Dummy的密码变为了456,而Dummy' -- k的密码还是123
图片.png

可能有人会说注册的时候不是被过滤了单引号吗。
我们admin' -- 变成了admin' -- ,还是正常闭合了,但是存进数据库的时候他依旧是一个单引号。(转义只是暂时在这里使它失去了单引号的作用,但它还是表示单引号)

图片.png

less 25 Trick with OR & AND (过滤了or和and)

单引号报错

图片.png

发现是单引号闭合,注释也正常
图片.png
发现被过滤了and和or
图片.png
图片.png
正则表达式模式修饰符开了i模式不能用大小写绕过。
图片.png
我们可以用&&代替and,||代替or。
图片.png
图片.png
&要换成%26url编码

双写也是可以的,因为他只过滤一次。
图片.png
图片.png

这道题用union也是可以的。

less 25a Trick with OR & AND Blind (过滤了or和and的盲注)

跟less25一样只不过错误信息被屏蔽了。and和or也被过滤了。而注释没有被过滤

图片.png
图片.png

发现是数字型注入
图片.png

延时注入http://127.0.0.1/sqli-labs-master/Less-25a/?id=1 %26%26 if(length(database)=8,1,sleep(5))
联合查询
图片.png

less 26 Trick with comments and space (过滤了注释和空格的注入)

通过输入and1,or1,--1,/*1,/1,1,1' ' ' '

图片.png
发现被过滤了and,or,单行多行注释,/ ,空格,没有过滤单引号。
图片.png
对于注释和结尾字符的我们此处只能利用构造一个 ' 来闭合后面到 ' ;对于空格,有较多的方法:
%09 TAB键(水平)
%0a 新建一行
%0c 新的一页
%0d return功能
%0b TAB键(垂直)
%a0 空格(应该是php转化的时候是一个特殊字符,然后mysql会解释为空白字符)
图片.png
查数据库名
图片.png
查列名,不要忘记information中的or被过滤了
图片.png

图片.png
查字段
图片.png
查数据,不要忘了passowrd中的or
图片.png

less 26a GET - Blind Based - All your SPACES and COMMENTS belong to us(过滤了空格和注释的盲注)

跟25的区别是不会报错,闭合方式变为('变量')。
图片.png

less 27 GET - Error Based- All your UNION & SELECT belong to us (过滤了union和select的)

id=and1,or1,--1,1' ' ',union1,UnIon1,select1,SeLect1,判断出过滤了注释、select、union和空格,没有过滤and和or,以及可以用大小写绕过。

图片.png
id=0,等于-1的话负号被过滤掉还是会显示union前面的数据,不会显示后面的数据。用where '1'='1'闭合后面的双引号http://127.0.0.1/sqli-labs-master/Less-27/?id=0'%a0UnIon%a0SeLect%a01,group_concat(username,password,0x3a),3%a0from%a0users%a0where%a0'1'='1
图片.png

less 27a GET - Blind Based- All your UNION & SELECT belong to us

这个跟less 27的区别是不会显示报错语句,还是个双引号闭合方式。所以关键的是去确认他的闭合方式。
id=and1,or1,--1,1' ' ',union1,UnIon1,select1,SeLect1,判断出过滤了注释、select、union和空格,没有过滤and和or,以及可以用大小写绕过。当我们用单引号闭合的时候显示的是正确的

图片.png
and 1=0依然显示正确,说明不是单引号闭合
图片.png
而and 1=1双引号显示正确,and 1=0双引号显示错误。初步确定是双引号闭合
图片.png
基本可以确定是双引号闭合
图片.png

其他操作同less 27
图片.png

less 28 GET - Error Based- All your UNION & SELECT belong to us String-Single quote with parenthesis基于错误的,有括号的单引号字符型,过滤了union和select等的注入

id=and1,or1,--1,1' ' ',union1,UnIon1,select1,SeLect1,判断出过滤了注释、select、union和空格,没有过滤and和or,以及可以用大小写绕过。
基本可以确定是('变量')闭合

图片.png
图片.png

les 28a GET - Bind Based- All your UNION & SELECT belong to us String-Single quote with parenthesis基于盲注的,有括号的单引号字符型,过滤了union和select等的注入

id=and1,or1,--1,1' ' ',union1,UnIon1,select1,SeLect1,判断出都没有被过滤。然后就是判断闭合方式。

不是单引号闭合
图片.png
也不是双引号闭合
图片.png

是('闭合')
图片.png
语句发现报错
图片.png
发现union select中间有空格会被过滤掉,其他语句没问题
图片.png
在union和select中间加上%a0
图片.png
源码中过滤都被注释了,我们把注释除去。
图片.png

然后还是老方法,发现过滤了select,并且大小写也绕不过去了,没有过滤union,过滤了注释,没有过滤单引号。过滤了空格,并且初步判断为单引号闭合。
图片.png
select无法绕过,union也起不了作用,又不会显示报错信息,那么只能用盲注。
图片.png

Less-29 GET-Error based- IMPIDENCE MISMATCH-Having a WAF in front of web application基于WAF的一个错误

单引号报错发现是单引号闭合,没有过滤注释,空格,引号,unsion,select,and,or

图片.png
在源文件夹中发现了login.php,发现什么闭合方式都不行,可是源代码中是单引号闭合
图片.png

WAF
MYSQL注入天书之服务器(两层)架构
在SQL注入过程中主流的WAF绕过技术:
1.转换特征字符大小写
2.利用注释绕过
3.编码特征字符绕过
4.分隔重写特征字符绕过
5.利用截断字符绕过
6.变换变量位置绕过
7.针对域名保护的绕近
8.超大数据包绕过
9.转换数据提交方式绕过
10.HPP(HTTP参数污染)绕过

图片.png

index.php?id=1&id=2
Explain:apache(php)解析最后一个参数,即显示id=2的内容。Tomcat(jsp)解析第一个参数,即显示id=1的内容。Tomcat功能类似一个WAF
所以我们要传入两个id,第一个用来欺骗waf,第二个用来传送给apache。waf是只允许输入数字的,我们在输入数字的时候先给waf看然后检测正常后才转发给我们需要访问的页面

发现是单引号闭合
图片.png
绕过WAF注入什么的就比较简单了
图片.png

Less-30 基于错误的GET型双引号字符型注入

跟less 29一样,单引号变成双引号
图片.png

Less - 31 Protection with WAF用WAF防护

根据报错知道是("变量")闭合
图片.png
图片.png

Less - 32 Bypass addslashes()绕过addslashes

单引号双引号都不会报错 应该是被转义了,用宽字节注入%df'报错

图片.png

发现是单引号闭合。联合查询
图片.png

addslashes函数单引号,双引号,反斜杠 均被添加斜线
注释:默认地,PHP 对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。所以您不应对已转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

原理:mysql在使用GBK编码的时候,会认为两个字符为一个汉字,例如%aa%5c就是一个汉字(前一个ascii码大于128才能到汉字的范围)。我们在过滤 ' 的时候,往往利用的思路是将 ' 转换为\' 。
因此我们在此想办法将 ' 前面添加的 \ 除掉,一般有两种思路:1. %df吃掉 \ 具体的原因是urlencode(') = %5c%27,我们在%5c%27前面添加%df,形成%df%5c%27,而上面提到的mysql在GBK编码方式的时候会将两个字节当做一个汉字,此事%df%5c就是一个汉字,%27则作为一个单独的符号在外面,同时也就达到了我们的目的。2. 将 ' 中的 \ 过滤掉,例如可以构造 %**%5c%5c%27的情况,后面的%5c会被前面的%5c给注释掉。这也是bypass的一种方法。

Less - 33 Bypass addslashes()绕过 addslashes()

跟less-32没什么区别
图片.png

32的函数
图片.png

33的函数
图片.png

Less - 34 Bypass Add SLASHES(第34节:绕过添加斜杠)

各种姿势都绕不过去

图片.png
应该还是单引号双引号反斜杠被转义了。
这里是post型的注入漏洞,同样的也是将post过来的内容进行了'的处理。同样要把\给吃掉。而get型的方式我们是以url形式提交的,因此数据会通过URLencode,如何将方法用在post型的注入当中。将utf-8转换为utf-16或utf-32,例如将 ' 转为utf-16为�' 。其实就是把在get提交的%df'经过URLencode后变成�'直接复制到post中使用。
关于编码:Unicode/UTF-8/UTF-16/UTF-32
图片.png

Less-35

根据报错发现单引号被转义了,还是个数字型注入,根本不需要闭合
图片.png

那就比较好办了
图片.png
图片.png

Less-36

id=1',1",单引号双引号同样被转义了。同样用宽字节注入

图片.png
根据报错发现是单引号闭合,跟前面的没什么区别
图片.png

看源代码用了一个函数mysql_real_escape_string()
图片.png

mysql_real_escape_string会转义如下字符
图片.png
转义成功返回这些字符串,失败返回false。

Less -37

跟less 34一样,只是过滤函数不同

 $uname = mysql_real_escape_string($uname1);  
 $passwd= mysql_real_escape_string($passwd1); 
图片.png

Less-38

单引号报错,发现是单引号闭合,而且不会转义单引号

图片.png
图片.png

发现有点简单就看一下源代码,发现
图片.png

PHP mysqli_more_results() 函数
PHP mysqli_multi_query() 函数
mysqli_store_result
堆叠注入(Stacked injections)
Stacked injections:堆叠注入。从名词的含义就可以看到应该是一堆sql语句(多条)一起执行。而在真实的运用中也是这样的,我们知道在mysql中,主要是命令行中,每一条语句结尾加 ; 表示语句结束。这样我们就想到了是不是可以多句一起使用。这个叫做stacked injection。
总的来说就是mysqli_mylti_query()这个函数可以执行用;分隔的多条语句。
图片.png
图片.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容