2021-06-06 · 1

LOS #3 goblin write-up

securitypwnable

この記事は公開から2年以上経過しています。


LOS とは?

この LOS(Lord Of SQLInjection)は SQLInjection を実習できる Web ハッキング実習サイトです。

SQL Injection については [ハッキング/Web ハッキング] - SQL Injection この記事を読んでください〜ㅎ

[ハッキング/Web ハッキング] - [LOS] #2 cobolt write up <- 2 番の問題

解法の過程

3 番の問題を見ると、前とは少し違って見えますね!

$query = "select id from prob_goblin where id='guest' and no={$_GET[no]}"; 

クエリ文を見ると、id 値が guest に固定されていて、ユーザーが入力する部分は no= この部分のようです。そして〜

if($result['id']) echo "<h2>Hello {$result[id]}</h2>"; 
if($result['id'] == 'admin') solve("goblin");

この部分が解決する部分ですが、前の問題と似ていますね?id 値が admin になれば終わりのようです!では前と同じ方法で入力してみます。

no=id=admin%20%23 のように入力したところ

このように特殊文字が検出されるようです。

if(preg_match('/\'|\"|\`/i', $_GET[no])) exit("No Quotes ~_~"); 

では no 値に基本的な 1 という値を入れてみましょうか?

ゲストと挨拶してくれます... 私たちは admin になりたいので別の値を入れてみます。2、3、4 を入れてみます。

!> ****](https://www.easycalculation.com/ascii-hex.php)

何も出ませんね?偽のようです!ではこう書いてみます。select id from prob_goblin where id='guest' and no=23 or id='admin' ↳ no に偽の値を入れて偽にし、or で id を admin にしました。 あっ、でも上で試したように特殊文字は塞がれています。ではどうすればよいでしょうか?そう、ASCII コードを使うのです。使ってもう一度書いてみましょうか?**select id from prob_goblin — ascii-hex.php このようなサイトで簡単に ASCII コードを得られます。


原文(韓国語): tistory — 2021-06-06 公開、当ブログへ移行。この翻訳は AI の協力で作成されました。

コメント

コメントを削除しますか?

関連記事

LOS #3 goblin write-up · 나봄하랑