超级无敌fvv的web从0日记(Continuously updating)

前言

我曾自诩是个密码手,慢慢地发现是在歪门邪道的摸索路上越走越远。

sql注入

前期基本靶场环境

phpstudy_pro下的靶场。

前置知识

sql语句等

数字型注入与字符型注入

输入的参数是整形时,可认为是数字型输入;输入的参数是字符串时,成为字符型输入。

判断数字型注入与字符型注入:

打开源代码,若是字符型注入,后台查询的语句大概为:

$sql="select * from users where id='$id' limit 0.1";

其中$id指输入的内容,假设输入的是 1 and 1=1,对应的语句里则是 id=’1 and 1=1’,and在引号里被当字符串处理,无法发挥连接作用,两边的引号是闭合符,该语句就是单引号闭合语句

若是数字型注入,后台查询的语句大概为:

$sql="select * from users where id=$id limit 0.1";

此时如果提交and语句,如 id= 1 and 1=1,and发挥连接作用。数字型不需要闭合符来闭合。

根据上述的区别可以判断是数字型注入还是字符型注入。

闭合方式和判断:

常见的闭合方式: ‘              ”              ‘)              ”)               其它

判断闭合方式:

eg.

输入?id=1”’,报错为near 1””多一个’则闭合符为’

输入?id=1”’报错为near 1””)多一个’)则闭合符为’)

闭合的作用:手动提交闭合符,结束前一段查询语句,后面可加入其它语句查询需要的参数,不需要的用注释符注释掉。

常见注释符:’- -+’ 或 ‘#’ 或 ‘%23′ ,不一定都适用,比如有的语句可以用’- -+’进行注释而换成’#’注释就不行。

union联合注入

union使用前提,表的列数一致,所以先用group by/order by二分法判断默认页面数据列数量。

之后便可以联合注入

假设数据列数量为3

Eg. $sql=”select * from users where id=’1′ union select 1,2,3 ” (因为数据列数量为3,所以后面union后要跟三个数字或者三个字符)

注意:回显只能显示出第一行

对应的后台执行操作:

如果不想显示id=’1’行的数据,可以尝试输入的参数值为0或负数,注意哪些位置可以回显,(即union后输入的数字或字符哪些具有回显位)进而进行一系列操作,如查询数据库名database()  查询版本号version()等。

局限性:如果SQL文内有换行,或者调用的存储过程,注释符就会失效。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇